如何更改vfat
分区的 UUID?
对于ext2 / ext3 / ext4
,这可以通过一个简单的方法完成:
tune2fs -U <new-uuid> /dev/<partition>
分区是否有类似的命令vfat
?
答案1
了解你为什么要这样做可能会有所帮助。我不知道有什么工具可以做你想做的事,但可能还有其他选择……
从技术上讲,FAT 分区没有 UUID;它们有序列号,一些 Linux 工具和文件(例如mount
和/etc/fstab
)可以使用序列号代替 UUID。在 GPT 磁盘上,保存 FAT 文件系统的分区有 GUID,在mount
和中(在较新的 Linux 发行版中)可以将其称为 PARTUUID。FAT/etc/fstab
文件系统和(在 GPT 磁盘上)包含它们的分区也可以有名称,也可以由mount
或 中使用/etc/fstab
。这些功能中的任何一个都可以代替 FAT 序列号。
虽然我不知道有什么工具可以更改 FAT 分区的序列号,但是可以在创建文件系统时通过选项设置-i
它们mkdosfs
,如下所示:
mkdosfs -i ABCD1234 /dev/sdc1
此示例将序列号设置为/dev/sdc1
ABCD-1234。如果文件系统足够小,您可以备份它,使用所需的序列号创建一个新的文件系统,然后恢复它。如果您尝试将序列号设置为磁盘或安装设置脚本的一部分,则通过设置它mkdosfs
可能就是您所需要的。
gdisk
您可以使用或更改分区的 GUID sgdisk
。使用后者,您可以通过选项完成此工作-u
,如下所示:
sgdisk -u 1:BC87D91A-02F3-4C52-87CD-536A3DF2A074 /dev/sdc
此示例将 的 GUID 设置/dev/sdc1
为 BC87D91A-02F3-4C52-87CD-536A3DF2A074。(请注意,-u
采用冒号分隔的一组选项,其中第一个是分区号,第二个是 GUID 值。整个磁盘设备的设备文件名 [不是([分区]是最后一个选项。)
根据您的需要,这些方法之一可能有效。更广泛地说,您可以使用工具设置文件系统的标签;或者您可以使用 的选项dosfslabel
更改 GPT 分区的名称,其工作原理与 非常相似,但采用的是名称而不是 GUID。sgdisk
-c
-u
答案2
FAT32 的卷 ID 存储在第一个扇区偏移量 67 (0x43) 处,FAT16 的卷 ID 存储在 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
答案3
通常,人们可能希望为 vfat 分区设置一个新的随机 UUID(而不是设置一个特定的 UUID),例如为了避免在使用 复制分区后发生冲突dd
。在这种情况下,一个简单的解决方案是使用gparted
:右键单击分区,然后选择“新 UUID”。
@tarabyte 表示,大多数人访问此页面是为了寻找一种无需 GUI(例如命令行)的方式在无头服务器上执行此操作。如果是这样,则gparted
显示执行上述操作时后台运行的命令如下:
sudo mlabel -s -n :: -i /dev/nvme0n1p6
答案4
我无法将其更改为 fat32/16 vfat,即使从 gparted gui 也是如此。但是在包含 mlabel 的 arch linux 中安装 mtools 后,我可以从 gui 进行更改。
mlabel -N aaaa1111 -i /dev/sdb1 ::
它在这里:https://unix.stackexchange.com/questions/261236/change-fat16-partition-uuid