UUIDを利用するには、まず「/etc/fstab」ファイルをチェックする。上記のUUIDの例と同じような行があれば、おそらくすでにUUIDを使ってドライブのマウントが行われているはずだ。それを確認するには、「cat /proc/cmdline
」というコマンドを実行すればよい。UUIDを含む結果が返ってくれば、システムのブートローダがUUIDによるrootファイルシステムのマウントを行ったということであり、実際にUUIDが使われていることになる。残念ながら、mountコマンド自体ではまだそうした情報を扱えるようにはなっていない。少なくとも私のシステムではそうであり、mountコマンドも「/etc/mtab」ファイルも、「/dev/[hs]d*」という表記でハードディスクドライブを参照している。この制限により、自分で使うドライブとパーティションのそれぞれのマウント先には注意する必要がある。ただし、あとで説明するように、こうした情報を表示してくれるコマンドは存在する。
まだUUIDを使っていないがこれから使いたいという場合は、テスト用のハードディスクドライブを別に用意することをお勧めする。実際に使っているファイルシステムをいじって、不用意に破壊してしまうのを避けるためだ。また、BIOSのドライブ位置をデバイスノードに関連付ける方法や、パーティション設定とファイルシステム作成の方法も知っておく必要がある。これらの意味がわからなければ、詳しい人に訊くか、チュートリアルを読んで学んでおくこと。
準備が整ったら、既存のハードディスクドライブのパーティションノードと干渉しないように、テスト用のハードディスクドライブをコンピュータに取り付け、コンピュータのブート後に、そのドライブのパーティション分割スキームとファイルシステムの作成を行う。LinuxネイティブのファイルシステムはいずれもUUIDをサポートしているので、どれを使用してもよい。個人的にReiserFS、ext2/3、JFS、XFSを試してみたが、どれでもUUIDが使えた。一方、FATやNTFSではUUIDが十分にサポートされていない可能性がある。blkid
ではこれらのドライブのUUIDも表示されるが、NTFSおよびFATに関するMicrosoftの技術文書にはUUIDの記述すらない。ここでは、新たに取り付けたドライブのファイルシステムだけでなく、マウントポイントも作成しておく。これらの作業が済んだら、「sudo vol_id /dev/your_hard_drive
」という形のコマンドを実行する。すると、次のような出力が表示されるはずだ。
ID_FS_USAGE=filesystem ID_FS_TYPE=jfs ID_FS_VERSION= ID_FS_UUID=1c0653cd-e897-41af-bd30-55f3a195ff33 ID_FS_UUID_ENC=1c0653cd-e897-41af-bd30-55f3a195ff33 ID_FS_LABEL= ID_FS_LABEL_ENC= ID_FS_LABEL_SAFE=
ここでは「ID_FS_UUID」という情報にだけ注目すればよい。上記の「vol_id」コマンドでUUIDが表示されなかった場合は、UUIDを生成してドライブに割り当てる必要がある。DCE 1.1のバージョン1、3、4、5に従ってUUIDを生成するのがuuid
コマンドである。デフォルトのバージョン1では、システムクロックの時間とシステムのイーサネットカードのMACアドレスの組み合わせを使用してUUIDを生成する。MACアドレスは一意に割り当てられているが、UUIDを生成したマシンの構成要素が特定されるのではないかというプライバシやセキュリティ上の問題を挙げる人もいる。バージョン3では名前に基づくMD5ハッシュを利用し、バージョン4は乱数ベースのものであり、バージョン5は名前に基づくSHA-1ハッシュを利用する。なお、バージョン3および5を利用するには、URLのような名前空間が必要になる。ほとんどの人はバージョン1または4で事足りるだろう。
乱数ベースのバージョンがどれかを覚えておかなくても、「uuidgen」を使えばランダムなUUIDを生成できる。デフォルトは乱数ベースの生成だが、システム時間とMACアドレスに基づいてUUIDを生成するオプションもある。
UUIDを取得したら、「/etc/fstab」ファイルを開き、そのUUIDを新しい行に追記する。続いて、その行の後ろに、「/etc/fstab」ファイルにある既存の行にあるファイルシステムのオプションをコピーして、次のような形にする。
UUID=1c0653cd-e897-41af-bd30-55f3a195ff33 /your/mount/point file_system_type file_system_options
行頭の「UUID=
」を忘れずに追記すること。この作業が済んだら「/etc/fstab」ファイルを保存してテキストエディタを終了し、「sudo mount -U /your/mount/point
」のようなコマンドを実行する。すべてがうまくいけば、このコマンドはエラーが出ることなく完了する。今度はパラメータなしでmount
コマンドを実行して、マウント済みデバイスの表示を確認する。先ほど追加したドライブが一覧にあれば、UUIDによるマウントに成功したことになる。
UUIDのすばらしさを実感したければ、コンピュータをシャットダウンし、デバイスノード名が変わるようにハードディスクドライブの接続を変えて、リブートしてみるとよい。何のエラーもなく、先ほどと同じ場所にドライブがマウントされているはずだ。