boot 方式和分区方案的最佳配合
- uefi+gpt
- bios+mbr
BIOS+MBR
[!NOTE] MBR (主引导记录)的整体详细结构简单介绍就是:
主引导代码+分区表+post-mbr gap
单纯靠 主引导代码 无法完整引导系统,所以要有 post-mbr gap (MBR 与第一个磁盘分区之间的间隙)来辅助引导系统,可以说是一个过渡用的。
- 第一阶段就是主引导代码,主要作用就是定位和加载下一阶段的引导
- 第 1.5 阶段就是(post-mbr gap 做的)主要作用就是理解存储阶段 2 引导加载程序的文件系统(例如 ext 4、NTFS 等)所需的基本驱动程序或代码, 就是可能也有一部分加载程序在文件系统(
grub additional code)中,这样就可以读取文件 (一些加载程序文件从而辅助 boot) - 第 2 阶段就是引导加载程序了(bootloader boot manager)
到此,基本就可以引导完系统了,然后操作系统就加载在内存中了,控制权就交给系统内核了
UEFI+GPT
这个基本就没有什么,就主要在分区时,有个 ESP 分区 就可以了,这个引导程序(bootloader boot manager)就存储在 ESP 分区
一些 linux 中的命令:
- 下载配置文件
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH - 生成配置文件并放置于/boot 分区(这个 ESP 分区)
grub-mkconfig -o /boot/grub/grub.cfg - 有多系统的记得下载 os-prober, 并
vim /etc/default/grub添加GRUB_DISABLE_OS_PROBER=false这一行
BIOS+GPT
首先声明,这种情况,你要添加一个 1 M-2 M 的 BIOS 分区才行
理由
gpt 磁盘本身第一个扇区(磁盘的前 512 个字节)就是一个 protective mbr 分区,这是为了向只能 BIOS 引导的旧机子兼容而产生的。
讲述 protective mbr 的文章。大致重要内容如下:
大概内容说白了就是为了兼容和保护 gpt 磁盘
==省流: 就是这个 BIOS boot 分区相当于 mbr 的 post-mbr gap 用来辅助 bootloader 的加载的==
第 1 阶段引导加载程序加载 BIOS 引导分区:
- 由于系统使用的是 GPT 分区方案,因此不存在 后 MBR 间隙(MBR 和第一个分区之间的空间),MBR 系统通常会使用该间隙来存储其他引导加载程序代码(如 GRUB Stage 1.5)。
- 相反,在磁盘上创建了一个专用的 BIOS 引导分区(通常大小为 1-2 MB)。此分区不包含文件系统,也不用于存储常规文件 - 它仅用于保存 GRUB Stage 1.5。
- 来自保护性 MBR 的 第 1 阶段代码定位 BIOS 引导分区并从中加载 第 1.5 阶段引导加载程序代码。
GRUB Stage 1.5 处理文件系统访问:
- Stage 1.5 是至关重要的一步,因为它包含 GRUB 理解磁盘文件系统(例如 ext 4、Btrfs 等)所需的驱动程序和代码。
- 加载 BIOS 启动分区后,Stage 1.5 现在可以读取磁盘中的文件,例如 GRUB 配置和Stage 2 引导加载程序代码,这些代码存储在
/boot/grub/中。
Stage 2 引导加载程序从 /boot/grub 加载:
- Stage 1.5 加载后,它会找到Stage 2 引导加载程序,这些代码存储在其中一个分区上的
/boot/grub/目录中。 - Stage 2 是功能齐全的 GRUB 引导加载程序。它:
- 如果您安装了多个操作系统(双启动设置),则显示 GRUB 启动菜单。
- 允许您选择要启动的操作系统或内核。
- 将所选操作系统的 内核 加载到内存中。