如何更改 vfat 分区 UUID?

如何更改 vfat 分区 UUID?

如何更改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/sdc1ABCD-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

相关内容