我试图更好地理解磁盘、分区和分区表(mbr 与 gpt)。在这个过程中,我检查了我的一台机器(单启动ubuntu 20.04)上的磁盘,发现我的所有磁盘都是gpt。不过我还发现有些分区也有分区表。让我更困惑的是/boot/efi
分区是 mbr,即使它位于 gpt 磁盘上。当时我不确定磁盘是否是 gpt 或其他,因此我尝试将其转换/boot/efi
为 gpt,但在此过程中最终导致我的计算机无法启动。当我在网上查找如何在两种样式之间进行转换时,我发现转换是在磁盘而不是分区上完成的,但我已经将磁盘分区为 gpt。所以我的问题可以分为三个部分(这完全取决于我上面的理解是否正确):
1- 分区内有分区表是什么意思?
2-为什么磁盘是gpt但/boot/efi
其上的分区是mbr?为什么?
3- 如果一个系统有两个硬盘,但一个操作系统,那么每个磁盘是否可以有自己不同的分区表(一个是 mbr,另一个是 gpt)?
答案1
不过我还发现有些分区也有分区表。
这是不太可能的。更有可能的是,你错了。你是如何得出这个结论的?这方面的客观证据是什么?
让我更困惑的是 /boot/efi 分区是 mbr
这句话没有道理。分区表是 GPT 或 MBR,而不是它们包含的分区。分区是二进制 blob。
正是由于这种完全的自由,分区可以包含带有嵌套分区表的磁盘映像,但是没有软件会在没有严格武装的情况下创建类似的东西。
以前安装在系统中 /boot/efi 的分区可能是 FAT32 分区,其用途是 ESP(EFI 系统分区)。 ESP 包含 UEFI 固件启动的引导加载程序。 UEFI 需要理解 FAT,对于常规硬件,ESP 始终是 FAT。
我尝试将 /boot/efi 转换为 gpt,但在此过程中最终导致我的计算机无法启动
将文件系统转换为分区表是没有意义的。你实际上做了什么是任何人的猜测。结果是预期的:您的 ESP 曾经包含 GRUB2 引导加载程序,它用于链式加载 Linux。您删除了引导加载程序,因此显然您的计算机无法再启动。
当我在网上查找如何在两种样式之间进行转换时,我发现转换是在磁盘而不是分区上完成的,但我已经将磁盘分区为 gpt。
明显地。而且你的磁盘已经是 GPT 了,所以没有什么可以转换的。
1- 分区内有分区表是什么意思?
在分区内您可以拥有任何数据。你通常有一个文件系统,但你可以在其中放入任何奇怪的东西,包括流行的 Rick Astley 视频流的直接转储,或包括其(然后嵌套)分区表的磁盘映像的直接转储。
为什么要这么做?对于这次谈话的级别:没有任何理由。 (存在更深奥的原因:例如,分区可以保存虚拟机中使用的模拟磁盘的数据,当然包括其嵌套分区表。)
2- 为什么磁盘是 gpt 但其上的 /boot/efi 分区是 mbr?为什么?
事实并非如此,你错了。
3- 如果一个系统有两个硬盘,但一个操作系统,那么每个磁盘是否可以有自己不同的分区表(一个是 mbr,另一个是 gpt)?
每个磁盘都可以存储您想要的任何数据,就像任何分区一样,包括没有分区表的直接文件系统(如软盘)、分区表和文件系统分区(如普通硬盘)、嵌套分区表、直接转储 Astly 视频、随机噪音等。
特定操作系统是否会识别该格式并使用驱动器内容以及它需要什么驱动程序是另一回事。
FWIW,我知道的所有操作系统都会毫无问题地同时安装包含不同分区方案的磁盘,如果不这样做,则会被视为错误。
答案2
是的,有可能。
“除了主分区之外,您还可以在主引导扇区中定义(确切地说)一个扩展分区,其中包含未分配给任何主分区的所有磁盘空间。在扩展分区中可以设置更多逻辑分区,这原则上,它们的结构与主分区相同,不同之处在于只有主分区可以直接启动。使用Linux Loader (LILO)等实用程序,可以从任何分区启动操作系统,甚至可以在其他硬盘上启动。磁盘,但 LILO 本身必须始终安装在第一个硬盘的主分区上。”
来源:https://www.nextop.de/lhb/node231.html
注解:
上面的示例不限于使用 LiLo 作为启动管理器。
需要注意的是,在GPT硬盘上不必创建扩展分区或逻辑分区,因为这里不存在旧DOS和WINDOWS版本历史上对主分区数量的限制。