Linux GRUB2

boot loader 在计算机启动的时候决定如何运行(启动)安装于硬盘上的操作系统,GRand Unified Bootloader(GRUB)是 Linux 中最流行的 Bootloader 程序。目前主要有 2 个 GRUB 版本:

  • GRUB : 遗留版本 GRUB v1,在较旧的 Linux 发行版中使用
  • GRUB 2 : 当前最新版本,较新的 Linux 发行版中默认的 Bootloader. GRUB 2 的主要功能依旧是 查找并启动已安装在计算机上的操作系统 。同时 通过内嵌了一些工具和配置文件提供了更强大的功能以及灵活性

GRUB 2 的配置文件是 /boot/grub/grub.cfg 或者 /boot/grub2/grub.cfg,关于其配置文件,要注意以下事项:

  • grub.cfg 的内容是由工具 grub-mkconfig 根据 /etc/default/grub/etc/grub.d/ 中的内容自动生成,最好不要手动改动
  • grub.cfg 中可以包含 Shell 脚本语法,如 函数,循环,变量等
  • 用于定位内核(Kernels)和 Initial RAM 位置的设备名称,最好是使用更加可靠的 标签(Labels) 或者是 UUIDs(Universally Unique Identifiers) ,而不是类似于 /dev/sda 的设备名称,这可以防止计算机系统新增硬盘后,/dev/sda 变成了 /dev/sdb 而导致系统启动时内核无法找到。

GRUB 2 常用指令说明

下表列出了 GRUB 2 Boot Menu 中常用的指令说明,更详细信息可以参考 info grub 或者 info grub2

Command Description Examples
linux file ... 从指定的文件中加载 Linux 内核镜像(Linux Kernel Image)
后面跟随的内容会被当作内核指令(Kernel Command)一字不差的传递给内核
linux /boot/vmlinuz-6.8.0-1016-aws root=PARTUUID=00c91e58-1b26-492f-a75f-c5159138dd1a ro console=tty1 console=ttyS0
initrd file [file ...] 仅用于 linux 指令之后。为 Linux Kernel Image 按顺序加载 initial RAM Disks,并在其中设置合适的参数 initrd /boot/microcode.cpio /boot/initrd.img-6.8.0-1016-aws