Почему UUID в Linux /etc/fstab чувствительны к регистру?
Я недавно добавил строку для карты памяти 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 моей флешки с 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, если это имеет значение.
3 ответа
ПРИМЕЧАНИЕ. Это предположение, основанное на том, как устройства обычно доступны в Unix/Linux, и на том факте, что имена файлов чувствительны к регистру.
Linux использует UUID для создания объектов в /dev/disk/by-uuid
, Как и любой "файл" в Linux, имя чувствительно к регистру. Следовательно, при обращении к дискам по UUID сравнение выполняется как сравнение имени файла в шестнадцатеричных строках, а не как двоичное сравнение данных, представленных указанными строками.
Как бы подразумевается ответ @sparkie и часть того, что происходит в исходном вопросе, заключается в том, что UUID для разделов FAT (кажется?) всегда должны быть в верхнем регистре (например,
В случае vfat мы фактически не видим полноценный UUID. Это идентификатор тома (серийный номер). Это, конечно, не подпадает под действие RFC, упомянутого выше.