fri*_*mle 24 linux filesystems partitioning uuid
如何更改vfat
分区的 UUID ?
对于ext2 / ext3 / ext4
,这是通过一个简单的:
tune2fs -U <new-uuid> /dev/<partition>
Run Code Online (Sandbox Code Playgroud)
是否有类似的vfat
分区命令?
小智 31
FAT32 的卷 ID 存储在第一个扇区的偏移量 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/'
Run Code Online (Sandbox Code Playgroud)
而且,当然,您还可以存储一个新的 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
Run Code Online (Sandbox Code Playgroud)
参考:FAT 物理结构(卷序列号偏移):https ://technet.microsoft.com/en-us/library/cc776720( v= ws.10) .aspx#w2k3tr_fat_how_gkxz
Rod*_*ith 15
了解您为什么要这样做可能会有所帮助。我不知道有什么工具可以做你想做的事,但可能还有其他选择......
从技术上讲,FAT 分区没有 UUID;它们有序列号,一些 Linux 工具和文件(例如mount
和/etc/fstab
)可以使用序列号代替 UUID。在 GPT 磁盘上,保存 FAT 文件系统的分区具有 GUID,它(在足够多的 Linux 发行版上)可以在mount
和 中称为 PARTUUID /etc/fstab
。这两个FAT文件系统和(GPT磁盘),它也可以通过使用含有它们也可以有名字的分区,mount
或/etc/fstab
。这些功能中的任何一个都可以用来代替 FAT 序列号。
虽然我不知道有什么工具可以更改 FAT 分区的序列号,但可以在通过-i
选项创建文件系统时设置它们mkdosfs
,如下所示:
mkdosfs -i ABCD1234 /dev/sdc1
Run Code Online (Sandbox Code Playgroud)
本示例将 的序列号设置/dev/sdc1
为 ABCD-1234。如果文件系统足够小,您可以备份它,使用所需的序列号创建一个新的文件系统,然后恢复它。如果您尝试将序列号设置为磁盘或安装设置脚本的一部分,则mkdosfs
可能只需要通过设置它。
您可以使用gdisk
或更改分区的 GUID sgdisk
。使用后者,您可以通过-u
选项完成工作,如下所示:
sgdisk -u 1:BC87D91A-02F3-4C52-87CD-536A3DF2A074 /dev/sdc
Run Code Online (Sandbox Code Playgroud)
本示例将 GUID 设置/dev/sdc1
为 BC87D91A-02F3-4C52-87CD-536A3DF2A074。(请注意,-u
采用冒号分隔的一组选项,其中第一个是分区号,第二个是 GUID 值。整个磁盘设备的设备文件名 [不是分区] 是最后一个选项。)
根据您的需要,这些方法之一可能有效。移到更广泛的领域,您可以使用该dosfslabel
工具设置文件系统的标签;或者您可以使用sgdisk
's-c
选项更改 GPT 分区的名称,其工作方式与 非常相似-u
,但采用名称而不是 GUID。
通常,人们可能希望为 vfat 分区设置一个新的随机 UUID(而不是设置特定的 UUID),例如为了避免在使用dd
. 在这种情况下,一个简单的解决方案是使用gparted
:右键单击分区,然后单击“新建 UUID”。
@tarabyte 建议大多数人来到此页面寻找一种无 GUI(例如命令行)的方式在无头服务器上执行此操作。如果是这种情况,则gparted
表明执行上述操作时它在后台运行的命令类似于:
sudo mlabel -s -n :: -i /dev/nvme0n1p6
Run Code Online (Sandbox Code Playgroud)
小智 5
根据上面Tommy 的回答,exFAT 驱动器的偏移量是 100。除此之外,更改 exFAT 驱动器 ID 的命令几乎与 FAT16/32 驱动器的命令一字不差地进行,只是在fsck
最后保存了一小部分。请记住,必须使用 root shell 提升命令sudo
或在 root shell 中运行命令,并且/dev/sdc1
应更改示例中使用的命令以匹配您设备的块 ID。
您可以使用以下命令检查卷 ID:
dd bs=1 skip=100 count=4 if=/dev/sdc1 2>/dev/null \
| xxd -plain -u \
| sed -r 's/(..)(..)(..)(..)/\4\3-\2\1/'
Run Code Online (Sandbox Code Playgroud)
写入新 ID 的命令变为:
UUID="1234-ABCD"
printf "\x${UUID:7:2}\x${UUID:5:2}\x${UUID:2:2}\x${UUID:0:2}" \
| dd bs=1 seek=100 count=4 conv=notrunc of=/dev/sdc1
Run Code Online (Sandbox Code Playgroud)
最后,我不得不重新计算校验和,这fsck -a
对我来说完成了
fsck -a /dev/sdc1
Run Code Online (Sandbox Code Playgroud)
我非常感激,汤米,谢谢你。
归档时间: |
|
查看次数: |
16505 次 |
最近记录: |