GDisk 十六进制代码

GDisk 十六进制代码

在使用 gdisk 时,有一个选项可以指定十六进制代码。我想知道它是什么以及为什么需要它,请参见下文。例如,如果我在驱动器上创建软件 RAID,我假设我需要代码 fd00。但为什么呢?它是什么,我必须使用它吗?为什么我不能使用 8300(不管它是什么意思)创建我的 RAID 阵列?

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-5860533134, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-5860533134, default = 5860533134) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L
0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE          
4100 PowerPC PReP boot     4200 Windows LDM data      4201 Windows LDM metadata
7501 IBM GPFS              7f00 ChromeOS kernel       7f01 ChromeOS root       
7f02 ChromeOS reserved     8200 Linux swap            8300 Linux filesystem    
8301 Linux reserved        8302 Linux /home           8400 Intel Rapid Start   
8e00 Linux LVM             a500 FreeBSD disklabel     a501 FreeBSD boot        
a502 FreeBSD swap          a503 FreeBSD UFS           a504 FreeBSD ZFS         
a505 FreeBSD Vinum/RAID    a580 Midnight BSD data     a581 Midnight BSD boot   
a582 Midnight BSD swap     a583 Midnight BSD UFS      a584 Midnight BSD ZFS    
a585 Midnight BSD Vinum    a800 Apple UFS             a901 NetBSD swap         
a902 NetBSD FFS            a903 NetBSD LFS            a904 NetBSD concatenated 
a905 NetBSD encrypted      a906 NetBSD RAID           ab00 Apple boot          
af00 Apple HFS/HFS+        af01 Apple RAID            af02 Apple RAID offline  
af03 Apple label           af04 AppleTV recovery      af05 Apple Core Storage  
be00 Solaris boot          bf00 Solaris root          bf01 Solaris /usr & Mac Z
bf02 Solaris swap          bf03 Solaris backup        bf04 Solaris /var        
bf05 Solaris /home         bf06 Solaris alternate se  bf07 Solaris Reserved 1  
bf08 Solaris Reserved 2    bf09 Solaris Reserved 3    bf0a Solaris Reserved 4  
bf0b Solaris Reserved 5    c001 HP-UX data            c002 HP-UX service       
ea00 Freedesktop $BOOT     eb00 Haiku BFS             ed00 Sony system partitio
ef00 EFI System            ef01 MBR partition scheme  ef02 BIOS boot partition 
Press the  key to see more codes:  
fb00 VMWare VMFS           fb01 VMWare reserved       fc00 VMWare kcore crash p
fd00 Linux RAID            

答案1

kyodake 的回答是正确的,但它也相当以 MBR 为中心。在 GPT 下,同样的原则也适用——即分区类型代码标识分区的预期用途。不同之处在于 GPT 类型代码是 128 位 GUID,而 MBR 下使用的是 8 位代码。GUID 的性质意味着不需要向中央机构注册代码以避免冲突;从统计上讲,两个 GUID 不太可能偶然相同。

据我所知,没有 GPT 类型代码的官方存储库,但它们记录在有关 GPT 的维基百科页面。GPT 类型代码的一个缺点是,作为 GUID,它们很长而且很笨拙——例如,Linux 文件系统数据的 0FC63DAF-8483-4772-8E79-3D69D8477DE4 是 MBR 的等效代码,而 0x83 是 MBR 的等效代码。因此,大多数用于对 GPT 磁盘进行分区的工具在其用户界面中使用某种形式的“简写”或“自然语言翻译”。我是 GPT fdisk 的作者,由于我编写它的目的是创建fdisk尽可能类似于 (MBR) 的东西,因此我采用了使用 MBR 代码作为基础的方法;但是,由于 GPT 和 MBR 类型代码之间的对应关系不是 1:1,因此我将 MBR 类型代码乘以 0x100 以获得 GPT 等效代码。因此,MBR 的 0x83 变成了 8300。这还启用了 MBR 中不存在的相关后续代码,例如 8301、8302 等。这些代码对于已经熟悉 MBR 等效代码的人来说很容易使用,但对于不知道 MBR 代码的人来说,它们无疑是任意的。在内部,GPT fdisk 将这些代码转换为 GUID。您可以通过查看详细的分区信息(例如,通过i中的选项gdisk)来查看实际的 GUID。如果您愿意或需要使用 GPT fdisk 不支持的代码,您也可以输入任意 GUID,而不是使用 GPT fdisk 四字符代码。

其他工具使用其他方法。libparted 库(以及partedGParted 和其他基于 libparted 的工具)将一些类型代码转换为“标志”,并完全隐藏其他代码。这有助于为某些用户简化操作,但会使某些任务变得不可能——例如,您无法使用基于 libparted 的任何内容设置任意类型代码。OS X 的磁盘实用程序将已知的 GUID 转换为纯文本描述。(如果我没记错的话,当您创建分区时,它会根据分区中创建的文件系统设置适当的类型代码,类似于 GParted 所做的。)

在大多数情况下,Linux 不使用类型代码,无论是 MBR 还是 GPT。也就是说,您可以将标准 Linux 文件系统放在 (GPT fdisk) 8300 分区(“Linux 文件系统”)上,或者使用 0700(“Microsoft 基本数据”,过去很常见),或者分配您自己的随机 GUID。类似的注释适用于 RAID、LVM、交换和其他分区类型。不过,这条规则也有一些例外。首先,分发安装程序通常会查看和设置类型代码,因此您可能需要在分区上设置正确的类型代码,然后才能正确使用它。另一个例外是,如果/etc/fstab未正确配置,systemd 开始使用类型代码作为后备。(这就是 GPT fdisk 的大多数 830x 代码的来源——它们是可发现分区规范,这是 Freedesktop/systemd 的一项举措。)目前,Ubuntu 仅使用主 Linux 文件系统类型代码(GPT fdisk 中的 8300)作为文件系统,以及 LVM、RAID、交换等的相应代码。“Linux 不使用类型代码”规则的一个大例外是 BIOS 启动分区代码(21686148-6449-6E6F-744E-656564454649;GPT fdisk 中的 ef02 或 libpartedbios_grub中的标志)。此类型代码标识 GRUB 使用的分区,当您运行 时grub-install,GRUB 会将自身的一部分安装到该分区。如果在具有 GPT 磁盘的 BIOS 启动系统上安装 GRUB,则通常必须存在 BIOS 启动分区。(不过,有办法绕过此规则。)更重要的是,如果您错误地在错误的分区上设置了此类型代码,安装 GRUB 时该分区将被损坏!我在各种在线论坛上看到很多人都犯了这个错误。

在处理其他操作系统时,类型代码变得更加重要。例如,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 分区,并提供维修它会。用户在此提示处犯的错误将是灾难性的。请参阅我的这个页面了解有关此主题的更多信息。

答案2

分区表中使用的分配分区类型列表最初由 IBM 和 Microsoft 内部维护。

随着 PC 操作系统和磁盘工具市场的发展和解放,其他供应商也需要为其产品分配特殊的分区类型。

20 世纪 90 年代,一些行业专家开始研究分区类型并发布分区类型列表,以帮助记录行业事实上的标准,从而降低进一步发生冲突的风险。

如何解释该值取决于操作系统的引导加载程序和/或内核。因此,该表指定了哪些操作系统或磁盘相关产品最初引入了 ID,以及它们将其映射到哪个文件系统或特殊分区类型。

分区 ID:83h。类型:文件系统。来源:GNU/Linux。描述:任何原生 Linux 文件系统。

分区 ID:FDh。来源:GNU/Linux。支持:Linux。描述:具有自动检测功能的 Linux RAID 超级块。

相关内容