web-dev-qa-db-ja.com

Linux / etc / fstab UUIDで大文字と小文字が区別されるのはなぜですか?

最近、USBメモリスティックの行を/etc/fstabに追加し、UUIDを使用してデバイスを識別して自動的にマウントできるようにしました。

UUIDが小文字の16進文字で書かれたいくつかの外部ext4ドライブをすでに持っている前に[0-9a-f]このように:

UUID=3eeaaa43-dead-beef-cafe-243bcaaad475 /media/external_2TB ext4 rw,user,noexec,nosuid,nodev,noatime 0 2

USBスティックのUUIDをblkidで確認し、大文字の16進数のUUIDを取得して、ext4行と同じ方法で小文字の16進数で/etc/fstabに入力しました。

UUID=125c-a3eb  /media/usb_8GB vfat defaults,users,umask=0  0 0

mount: special device UUID=125c-a3eb does not exist

それから私はそれを大文字で試すというアイデアを思いつきました(gU3w Vimで)そしてそれは問題なく動作しました。これを確認するために、マウントを解除し、UUIDを小文字に戻し、マウントに失敗し、大文字に戻し、正常にマウントしました。

私が理解している限り、UUIDは文字列ではなく16進数であるため、文字の大文字と小文字は関係ありません。しかし、明らかにそうではありません。 RFC4122 UUIDを「入力で大文字と小文字を区別しない」と定義します。私が見逃したものはありますか、それともこのmount/umountの動作はバグですか?

必要に応じて、カスタムカーネルバージョン3.6.8でDebian GNU/Linux 7.0Wheezyを使用しています。

4
nrz

注:これは、Unix/Linuxでデバイスに通常アクセスする方法と、ファイル名で大文字と小文字が区別されるという事実に基づく推測です。

Linuxは、UUIDを使用して/dev/disk/by-uuidにオブジェクトを作成します。 Linux上の他の「ファイル」と同様に、名前では大文字と小文字が区別されます。したがって、UUIDでディスクを参照する場合、比較は、16進文字列で表されるデータのバイナリ比較ではなく、16進文字列のファイル名比較として行われます。

6
Mark K Cowan

vfatの場合、完全なUUIDは事実上表示されません。代わりに、ボリュームID(シリアル番号)です。もちろん、これらは上記のRFCの対象ではありません。

1
sparkie