2018年3月31日土曜日

コマンドを使ってLinux上でUSBメモリをフォーマットする方法

コマンドを使ってLinux上でUSBメモリをフォーマット
Linux上でUSBメモリをフォーマットする機会があった。Linuxであれば、コマンドを使ってUSBメモリをフォーマットできる。

コマンドからUSBメモリをフォーマットするには、以下の2つの工程が必要になる。

  1. パーティショニングテーブルの種類を決めて、パーティショニングする
  2. フォーマット形式を決めて、フォーマットする

コマンドを使わないと、パーティショニングもフォーマットも一緒に行われてしまうので、気にしたことがないかもしれないが、実際は「パーティショニング」と「フォーマット」の2つの工程が必要となる。また、「パーティショニング」と「フォーマット」の種類も自分で選ばなければならない。

今回は、パーティショニングテーブルの種類は、現在一般的に使われているGPT(GUIDパーティショニングテーブル)で行うことした。また、フォーマット形式は、Linux、Winodws、Mac、いずれのOSでも認識できるFAT32形式でフォーマットすることとした。

この記事では、コマンドを使って、GPTパーティショニングとFAT32形式でUSBメモリをフォーマットする方法を紹介する。


USBメモリをパーティショニングする
今回使用するパーティショニングツールは、gdisk。もし、gdiskのパッケージがインストールされていなければ、インストールする。

gdiskを使ってパーティショニングを行えば、自動的にGPTでパーティショニングされる。

パーティショニングを行う際は、USBメモリはアンマウントされてなければならない。Linuxのデスクトップ環境でGNOMEを使っていると、PCに接続したUSBメモリは「/run/media/ユーザー名/USBメモリ名」に自動的にマウントされてしまっている。

まずアンマウントすべきUSBメモリの、マウントポイントをlsblkコマンドやdfコマンドで確認する。

$ lsblk -f

NAME   FSTYPE LABEL     UUID                                 MOUNTPOINT
...
sdf                                                          
└─sdf1 vfat   TRANSCEND 1B17-B118                            /run/media/zero/TRANSCEND
...

今回フォーマットしたいUSBメモリ(TRANSCEND)は、「/run/media/zero/TRANSCEND」(=マウントポイント)にマウントされていることが分かった。また、USBメモリのデバイスファイルの名前も確認しておく(ここでは、sdf。接続されているストレージデバイスの数によって、名前は異なってくるので、必ず確認する。)。

USBメモリのアンマウントは、umountコマンドで行う。アンマウントしたいマウントポイントを指定する。

$ umount /run/media/zero/TRANSCEND

USBメモリをアンマウントできたら、gdiskでパーティショニングを行う。パーティショニングを行うには、gdiskに先程確認したUSBメモリのデバイスファイル名を指定すればよい。

# gdisk /dev/sdf

GPT fdisk (gdisk) version 1.0.3

The protective MBR's 0xEE partition is oversized! Auto-repairing.

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): 

gdiskが起動したら、以下の要領でUSBメモリをパーティショニングする。ちなみに、USBメモリをパーティショニングする際のHex codeは0700(Microsoft basic data)となる。MBRパーティショニングで使われるHex codeのb(W95 FAT32 (LBA))は使えない。

Command (? for help): o(新しくGPTパーティションテーブルを作る)
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

Command (? for help): n(パーティションテーブルに新しいパーティションを追加)
Partition number (1-128, default 1):  (デフォルトでの値を使うので、何も入力せずエンター)
First sector (34-15826910, default = 2048) or {+-}size{KMGTP}: (デフォルトでの値を使うので、何も入力せずエンター)
Last sector (2048-15826910, default = 15826910) or {+-}size{KMGTP}: (デフォルトでの値を使うので、何も入力せずエンター)
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 0700(Microsoft basic dataのHex codeを入力)
Changed type of partition to 'Microsoft basic data'

Command (? for help): w(ディスクにパーティションテーブルを書き込み)

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdf.
The operation has completed successfully.

USBメモリをフォーマットする
次に、USBメモリをFAT32でフォーマットする。フォーマットはmkfs.vfatコマンドで行う。

コマンドオプションの意味は、以下の通り。

  • -v:進捗を表示
  • -c:不良ブロックの精査を行う
  • -F 32: FATサイズを指定。他に12 bit、16 bitが指定可能。
  • -n:ボリューム名(ラベル)を指定。

mkfs.vfatには、GPTによってさくせいされたパーティションのデバイスファイル名を作成する。パーティション後は、パーティション前のデバイスファイルにパーティション番号が付与された名前となる。
# mkfs.vfat -v -c -F 32 -n TRANSCEND /dev/sdf1 

mkfs.fat 4.1 (2017-01-24)
/dev/sdf1 has 250 heads and 62 sectors per track,
hidden sectors 0x0800;
logical sector size is 512,
using 0xf8 media descriptor, with 15824863 sectors;
drive number 0x80;
filesystem has 2 32-bit FATs and 8 sectors per cluster.
FAT size is 15424 sectors, and provides 1974247 clusters.
There are 32 reserved sectors.
Volume ID is 1321cb19, volume label TRANSCEND  .
Searching for bad blocks 69856...

あとは、適当なマウントポイントにUSBメモリをマウントすれば、使えるようになる。


参考:
[1]USB ストレージデバイス - ArchWiki

スポンサーリンク

スポンサーリンク


関連コンテンツ


この記事をシェアする

0 件のコメント:

コメントを投稿