已安装卷的 UUID 是否存储在卷上?

已安装卷的 UUID 是否存储在卷上?

我有一些 OS X 代码,它使用卷的 UUID 进行一些计算。我正在为 Windows 重写这些计算。我有一个要求,对于给定的驱动器,计算在两个操作系统上产生完全相同的结果;不可能更改计算以使用更好的数据,例如磁盘的序列号。

不幸的是,我找不到关于这个 UUID 的太多信息。我在 Windows 上能找到的最接近的数据是已安装的卷名,它采用 GUID 的形式;巧合的是,OS X 上的卷的 UUID 也是 GUID。

Windows 上安装的卷名是否与 OS X 上的 UUID 相同?卷是否知道自己的 UUID,或者这种关系是操作系统所拥有的?

答案1

在仔细研究了 Darwin 源代码后,我发现 VolumeUUID 存储在 Volume Header 中的 FinderInfo 下。
请参阅http://www.opensource.apple.com/source/hfs/hfs-191.1/hfs_util/hfsutil_main.c
还可以浏览此处了解更多信息:http://www.opensource.apple.com/source/hfs/hfs-191.1/

HFS+ VolumeUUID 与 GPT 中该分区的 UUID 无关。我刚刚检查了我的系统,GPT 中的“唯一分区 GUID”与此系统上我的主启动分区的 HFS+ VolumeUUID 完全不同。

许多其他文件系统也嵌入了某种唯一 ID,尽管不一定是 UUID/GUID。

为了记录,这里是唯一 ID 的位置,例如,在某些其他文件系统格式上:

相关内容