grub2怎么引导linux
grub2怎么引导linux详细介绍
GRUB2(Grand Unified Bootloader 2)是广泛应用于 Linux 系统的启动加载器,下面为你详细介绍它引导 Linux 系统的步骤和原理。
基本原理
GRUB2 一般分三个阶段来引导 Linux 系统:
- 阶段 1(MBR):GRUB2 的极小部分代码被安装在主引导记录(MBR)中,此部分代码的功能是找到并加载阶段 1.5 或者阶段 2。
- 阶段 1.5:该阶段代码处于 MBR 之后的扇区,它能识别文件系统,这样 GRUB2 就能在文件系统里找到阶段 2 的文件。
- 阶段 2:GRUB2 的主要程序,包含了菜单界面、配置文件读取等功能。它会读取
/boot/grub/grub.cfg配置文件,从而显示启动菜单,让用户选择要启动的系统。
引导步骤
1. 安装 GRUB2
在安装 Linux 系统时,GRUB2 通常会自动安装到 MBR 或者 EFI 分区。要是你需要手动安装,可以使用如下命令:
bash
grub-install /dev/sda
/boot/grub/grub.cfg
2. 配置
/boot/grub/grub.cfg
grub.cfg 文件是 GRUB2 的主配置文件,不过通常不建议直接对其进行编辑,而是编辑 /etc/default/grub 和 /etc/grub.d/ 目录下的脚本,然后再更新 grub.cfg。
- 编辑
/etc/default/grub:
bash
/etc/default/grub
你可以在此处修改默认的启动项、超时时间等参数。例如:
plaintext
GRUB_DEFAULT=0GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
- 更新
grub.cfg:
bash
/boot/grub/grub.cfg
3. 手动添加引导项
若你要手动添加一个引导项,可以在 /etc/grub.d/40_custom 文件中添加如下内容:
plaintext
menuentry "My Custom Linux" {set root=(hd0,1) # 指定根分区
linux /vmlinuz-5.4.0-77-generic root=/dev/sda1 ro quiet splash # 指定内核文件和根分区
initrd /initrd.img-5.4.0-77-generic # 指定 initrd 文件
}
之后再更新 grub.cfg:
bash
/boot/grub/grub.cfg
引导过程
- BIOS 或者 UEFI 启动:计算机开机后,BIOS 或者 UEFI 会先进行硬件自检,然后查找启动设备,接着加载 MBR 或者 EFI 分区里的 GRUB2 代码。
- GRUB2 阶段 1 执行:MBR 中的 GRUB2 代码被加载并执行,它会找到并加载阶段 1.5 或者阶段 2。
- GRUB2 阶段 2 执行:阶段 2 代码被加载,读取
/boot/grub/grub.cfg配置文件,显示启动菜单。 - 用户选择启动项:用户可以从启动菜单中选择要启动的系统,要是在超时时间内没有进行选择,就会启动默认的系统。
- 加载内核和 initrd:GRUB2 按照所选启动项的配置,加载内核文件和 initrd 文件。
- 启动 Linux 系统:内核被加载并初始化,initrd 文件提供了必要的驱动和工具,最终启动 Linux 系统。
通过上述步骤,GRUB2 就能成功引导 Linux 系统。