6

Как изменить UUID раздела vfat ? Для ext2/ext3/ext4 это делается с помощью простого

tune2fs -U <new-uuid> /dev/<partition>

Есть ли подобная команда для разделов vfat ?

2 ответа2

8

Идентификатор тома FAT32 хранится в первом секторе со смещением 67 (0x43), для FAT16 он равен 39 (0x27). Для чтения можно использовать команду dd (замените /dev/sdc1 реальным разделом):

dd bs=1 skip=67 count=4 if=/dev/sdc1 2>/dev/null \
| xxd -plain -u \
| sed -r 's/(..)(..)(..)(..)/\4\3-\2\1/'

И, конечно же, можно также сохранить новый UUID (замените 1234-ABCD на желаемое значение):

UUID="1234-ABCD"
printf "\x${UUID:7:2}\x${UUID:5:2}\x${UUID:2:2}\x${UUID:0:2}" \
| dd bs=1 seek=67 count=4 conv=notrunc of=/dev/sdc1

Ссылка: физическая структура FAT (смещение серийного номера тома): https://technet.microsoft.com/en-us/library/cc776720(v=ws.10).aspx#w2k3tr_fat_how_gkxz

5

Может быть полезно знать, почему вы хотите это сделать. Я не знаю инструмента, чтобы делать то, что вы хотите, но могут быть и другие варианты ....

Технически разделы FAT не имеют UUID; у них есть серийные номера, которые могут использоваться несколькими инструментами и файлами Linux (такими как mount и /etc/fstab) вместо UUID. На GPT-дисках разделы, содержащие файловые системы FAT, имеют GUID, которые (в достаточно недавних дистрибутивах Linux) могут называться PARTUUID в mount и /etc/fstab . И файловые системы FAT, и (на GPT-дисках) разделы, которые их содержат, также могут иметь имена, которые также могут использоваться mount или в /etc/fstab . Любая из этих функций может использоваться вместо серийного номера FAT.

Хотя я не знаю инструмента для изменения серийных номеров разделов FAT, их можно установить, когда файловая система создается с помощью параметра -i для mkdosfs , например:

mkdosfs -i ABCD1234 /dev/sdc1

В этом примере для серийного номера /dev/sdc1 значение ABCD-1234. Если файловая система достаточно мала, вы можете создать ее резервную копию, создать новую файловую систему с нужным серийным номером и восстановить ее. Если вы пытаетесь установить серийный номер как часть сценария установки диска или установки, возможно, вам понадобится установить его с помощью mkdosfs .

Вы можете изменить GUID раздела с помощью gdisk или sgdisk . Используя последнее, вы выполняете работу с помощью опции -u , как в:

sgdisk -u 1:BC87D91A-02F3-4C52-87CD-536A3DF2A074 /dev/sdc

В этом примере для GUID /dev/sdc1 значение BC87D91A-02F3-4C52-87CD-536A3DF2A074. (Обратите внимание, что -u принимает разделенный двоеточиями набор параметров, первый из которых - номер раздела, а второй - значение GUID. Имя файла устройства для всего диска [ не раздела] является окончательным вариантом.)

В зависимости от ваших потребностей, один из этих подходов может работать. Двигаясь дальше, вы можете установить метку файловой системы с помощью инструмента dosfslabel ; или вы можете изменить имя раздела GPT с помощью опции sgdisk -c , которая работает так же, как -u , но принимает имя, а не GUID.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .