Почему Linux / etc / fstab UUID чувствительны к регистру?

1383
nrz

Недавно я добавил строку для карты памяти USB /etc/fstab, чтобы можно было подключать ее автоматически, используя UUID для идентификации устройства.

Раньше у меня уже было несколько внешних дисков ext4 с UUID, написанными строчными шестнадцатеричными символами [0-9a-f]:

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

Я проверил UUID моего USB-накопителя blkid, получил шестнадцатеричный UUID в верхнем регистре и ввел его так /etc/fstabже, как строки ext4, в шестнадцатеричном формате в нижнем регистре, например:

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 - это шестнадцатеричное число, а не строка, поэтому регистр букв не имеет значения. Но ясно, что это не так. RFC4122 определяет UUID как «нечувствительный к регистру на входе». Есть что-то, что я пропустил или это mount/ umountповедение ошибка?

Я использую Debian GNU / Linux 7.0 Wheezy с пользовательской версией ядра 3.6.8, если это имеет значение.

4
UUID - это НЕ шестнадцатеричная строка, а UUID - это 128-битное значение (если хотите, 128-битное целое). Шестнадцатеричная строка, используемая для UUID, является только его каноническим текстовым представлением. Lie Ryan 9 лет назад 0

2 ответа на вопрос

6
Mark K Cowan

ПРИМЕЧАНИЕ. Это предположение, основанное на том, как устройства обычно доступны в Unix / Linux, и на том факте, что имена файлов чувствительны к регистру.

Linux использует UUID для создания объектов в /dev/disk/by-uuid. Как и любой «файл» в Linux, имя чувствительно к регистру. Следовательно, при обращении к дискам по UUID сравнение выполняется как сравнение имени файла в шестнадцатеричных строках, а не как двоичное сравнение данных, представленных указанными строками.

1
sparkie

in case of vfat we effectively don't see a full blown UUID. It's a Volume ID (serial number) instead. These of course are not subject to the RFC mentioned above.

На самом деле, ext4 UUID также чувствительны к регистру. Кроме того, идентификаторы тома также являются шестнадцатеричными числами AFAIK, а не строками. nrz 11 лет назад 0

Похожие вопросы