GRUB2启动机制二: GPT

来源:互联网 发布:淘宝版阿里旺旺下载 编辑:程序博客网 时间:2024/04/30 11:23

CUID(Globally Unique IDentifier) Partition Table(GPT)是一种新的分区形式,也是UEFI协议的一部分,用全局唯一标识符对设备进行标识。在很多方面与MBR有很大差别,也有很多优点。

要理解GPT,首先要清除MBR及其缺点。

每一种分区形式,分区数由分区表占用空间的总长度和单条分区存储信息占用空间来决定。


主根记录:

MBR分区表以以下形式在第一个扇区中存储了一个硬盘的分区信息:

在硬盘驱动器中的位置代码含义第一个440字节由BIOS锁存的MBR启动代码441 ~ 446字节MBR盘标识447 ~ 510 字节主和扩展分区的真实分区表信息511 ~ 512 字节MBR启动标识 0xAA55主分区的入口信息限制为64字节,一个扩展分区(An extended partition is simply a primary partition in the MBR which acts like a container for other partitions called logical partitions. So one is limited to either 4 primary partitions, or 3 primary and 1 extended partitions with many logical partitions inside it.)

MBR问题:

1、只能定义四个主分区或三个主分区 + 1 个扩展分区。如果你定义了3个主分区和一个扩展分区后,还有空闲空间,不能通过建立新的分区来使用空闲空间;

2、在扩展分区内,逻辑分区的元数据存放在一个链表结构中,如果一个链接丢失,在这个元数据后的所有逻辑分区将会丢失。

3、MBR仅支持一个字节的分区类型码,会导致很多冲突;

4、MBR用32位逻辑块寻址值(LBA values)存储分区扇区信息.LBA 长度为512字节扇区大小将磁盘的最大寻址长度限制在2TiB。如果使用了MBR,则超过2TiB的空间不能进行分区定义。


GUID分区表:

GUID分区表(GPT)使用GUIDS(或在LINUX中使用UUIDS)来定义分区和它的类型,。GPT内容如下:

在硬盘控制器中的位置目的磁盘的第一个逻辑扇区或第一个512字节保护MBR-与MBR相像,只是64字节区域包含一个单个0XEE类型的主分区入口,这个入口支持>2TiB的空间,分区大小高达2TiB磁盘的第二个逻辑扇区或下一个512字节主GPT头-包含唯一磁盘GUID,主分区表地址,分区表中可能入口数,本身和主分区表的CRC32校验,第二个(或备份)GPT头地址16KiB(缺省)紧跟在磁盘的第二个逻辑扇区后主GPT表-128个分区入口(默认,可以更多),每个入口占128字节。扇区号以64位LBA进行存储,并且每个分区有一个分区类型GUID和一个唯一的分区GUID。16KiB(默认) 在磁盘最后一个逻辑扇区前第二个GPT表-跟主表的每个字节都相同。这个表主要用于当主分区表破坏时对主分区表进行恢复磁盘的最后一个逻辑扇区或最后512字节第二个GPT头-包含唯一的磁盘GUID,第二个分区表的地址,分区表中所有入口数,本身和第二个分区表的CRC32校验,主GPT头地址。这个GPT头可以在主头损坏时用于恢复GPT头进行恢复。

GPT优点

1、使用GUIDS(UUIDS)来标识分区类型--没有冲突;

2、提供一个唯一的磁盘GUID和为每一个分区提供一个唯一的分区GUID--一个好的与引用分区或磁盘的文件系统无关的方式。

3、任意数量的分区-依赖于为分区表分配的空间-无需分扩展和逻辑分区。GPT表默认情况下可以定义128个分区。如果用户想定应更多的分区,需要为分区表分配更多的空间(gdisk 支持这种特性);

4、使用64位LBA存储扇区号--最大可寻址2ZiB空间;

5、在磁盘最后存储了GPT头和分区表用于在主分区信息遭到破坏时进行恢复;

6、对GPT头和分区表进行CRC32校验,来探测错误或灾难。


内核支持

通过内核配置中的CONFIG_EFI_PARTITION选项来使能内核中对GPT的支持(需要EFI分区(despite the name efi partition))。这个选项只能编译进内核,而不能编译成模块。即使只需要支持GPT磁盘数据存储而不是用于启动,也需要将这个选项编译进内核。


引导器支持

UEFI系统:

所有的UEFI引导器都支持GPT磁盘,GPT是UEFI协议的一部分,并强制实现。


BIOS系统:

1、GRUB(2):需要2MiB“BIOS启动分区“(requires a 2 MiB "BIOS Boot Partition" (EF02 type code in gdisk and bios_grub flag in GNU Parted) in BIOS systems to embed itscore.img file due to lack of post-MBR embed gap in GPT disks. Runtime GPT support in GRUB(2) is provided by thepart_gpt module. SeeGRUB#GPT_specific_instructions for more information);

2、syslinux:(requires the partition containing /boot/syslinux/ldlinux.sys (irrespective whether /boot is a separate partition or not) to be marked as "Legacy BIOS Bootable" GPT attribute (legacy_boot flag in GNU Parted) to identify the partition containing the Syslinux boot files by its 440-byte MBR boot codegptmbr.bin. See Syslinux#GUID_Partition_Table_aka_GPT for more information. It is equivalent to "boot" flag in MBR disks.)

3、传统GRUB:(present in the AUR as grub-legacy, does not support GPT disks. Fedora's heavily patched GRUB Legacy forkgrub-legacy-fedora-git contains GPT patches from Intel (tested in Fedora, not tested in Arch).)




分区工具:

GPT fdisk 是一个用于编辑GPT磁盘的文本模式工具集,sgdisk 和 cgdisk 相当于util-linux 的fdisk。


GNU Parted

GNU Parted >= 3.0支持对GPT的操作。


英文:

https://wiki.archlinux.org/index.php/GUID_Partition_Table#Convert_from_MBR_to_GPT_without_data_loss