在处理其他操作系统时,类型代码变得更加重要。例如,Windows 和 OS X 往往不会接触带有它们无法识别的类型代码的分区。他们的类型代码列表不包括常见的 Linux 特定类型代码,因此使用 Linux 特定类型代码有助于降低 Windows 或 OS X 破坏您的 Ubuntu 安装的风险。不过,这些操作系统并不关心您使用的是 GPT fdisk 8300 还是 fd00 代码。如果您使用这些其他操作系统识别的代码,可能会出现问题。例如,曾经不存在 Linux 文件系统类型 GUID (0FC63DAF-8483-4772-8E79-3D69D8477DE4)。我创建了它并将其推送到我自己的 GPT fdisk 和 libparted 中,因为使用“Microsoft Basic Data”类型代码 (EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) 的常见做法会导致双引导设置出现问题。具体来说,某些 Windows 工具会认为 Linux 分区是损坏的或未初始化的 Windows 分区并提供准备。出现此提示的用户错误将是灾难性的。看我的这个页面了解更多关于这个主题的信息。
Rod Smith在此处/home说明了对其他分区的代码的需求,他创建并到现在(2020 年)贡献了 gpt fdisk 的代码。这是他在 2011 年写的:
我最近发现,当 Windows 读取带有 Linux 分区的 GPT 磁盘时,这些分区被赋予驱动器号并显示为未格式化。这种情况可能发生在可移动磁盘上,或者当 Linux 和 Windows 在基于 UEFI 的计算机上双启动时。因为 UEFI 越来越普遍,这种情况也越来越普遍。这让我觉得这是一场等待发生的灾难。迟早,有人会通过选择在 Windows 中格式化 Linux 分区来破坏 Linux 安装。
出现此问题的原因是 Linux 分区工具(libparted 和我自己的 GPT fdisk)为 Linux 分区提供了 Windows 用于其文件系统分区的相同分区类型代码 GUID (EBD0A0A2-B9E5-4433-87C0-68B6B72699C7)。对于其他分区类型,如 RAID、LVM 和交换空间,Linux 有自己的 GUID 类型代码。
没有目的,只是方便,您可以使用任何您喜欢的代码。
我在下面引用 GPT fdisk 的作者Rod Smith 的一个很好的回答,它解释了整个主题:
可发现分区规范中定义的 Linux 分区类型代码的目的是使
/etc/fstab
大多数系统的写入过时。这是约定优于配置的情况。Systemd
systemd-gpt-auto-generator
于 2014 年在版本 211 中添加。此生成器.mount
从引导驱动器上的 GPT 分区创建单元。所以你今天可以在你的 GPT 分区驱动器上使用这些代码,根本不碰
/etc/fstab
(它可能完全是空的),并且仍然有单独的分区用于/home
,/srv
,/var
,/var/tmp
将被自动发现和安装。这些分区可以有任何支持的文件系统。它们也可以进行 LUKS 加密。交换分区也会自动发现。/boot
为了进一步方便,在大多数情况下,生成器还会安装 EFI 系统分区。从理论上讲,您也可以让它发现
/
(根)分区,但这有点复杂。我猜在大多数情况下它仍然需要一个 initramfs。否则,root=/dev/whatever
仍然需要内核参数。Rod Smith在此处
/home
说明了对其他分区的代码的需求,他创建并到现在(2020 年)贡献了 gpt fdisk 的代码。这是他在 2011 年写的:如果您查看parttypes.cc的代码,您会注意到 Linux 和其他系统的所有代码。
Linux 分区代码列表