Изменить UUID раздела vfat

4098
friederbluemle

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

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

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

6

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

7
Tommy

Идентификатор тома 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$\x$\x$\x$" \ | 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

это восхитительно! Это особенно удобно, если вы хотите заменить внешнюю микро-SD-карту на устройстве Android и хотите, чтобы новая соответствовала тому же пути, что и старая. therealmarv 5 лет назад 0
Обратите внимание, что для томов FAT12 / FAT16 смещение составляет 39, а не 67! Это может произойти, если ваш раздел очень маленький (у меня был 256M microSD). Вы можете проверить работоспособность, если сравниваете показания `dd` с выводом` blkid` перед тем, как пытаться записать в ваш раздел. Ruslan 5 лет назад 0
5
Rod Smith

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

Технически разделы 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/sdc1ABCD-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параметра 's, который работает почти так же -u, но принимает имя, а не GUID.

Серийный номер устройства vfat можно изменить с помощью команды mlabel [mtools] (https://www.gnu.org/software/mtools/). liquidat 6 лет назад 2

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