Grub快速起步

在Linux系统启动时,通常会见到GRUB窗口,提供你选择哪种内核或参数启动。

GRUB是一个加载和管理启动进程的程序,也是Linux发行版最常用的bootloader。GRUB是 GRand Unified Bootloader 的缩写,就是启动时候接手BIOS工作,加载自身,然后加载Linux内核到内存,然后执行内核。一旦内核接手系统,GRUB就完成了任务不再需要运行。

所谓bootloader就是计算机启动时候运行的第一个程序,bootloader负责加载操作系统的内核,然后内核就会初始化操作系统的其他部分:shell,显示管理器,桌面环境等等。

boot loader 和 boot manager

bootloader就是第一个启动并用来加载执行内核到内存然后运行内核的程序。而boot manager程序则允许你选择不通的操作系统(如果主机上安装了多个操作系统),注意boot manager不是用来直接加载OS的。

从Linux Kernel version 3.3开始,Linux内核内建了一个EFI bootloader。实际上,任何和EFI系统兼容的操作系统都包含了一个EFI bootloader。在EFI兼容系统中(例如MacBook),firmware会读取EFI系统分区来找到EFI文件的启动信息。GRUB就是一个bootloader兼boot manager。其他类似的流行boot manager有 rEFInd boot manager,我曾经使用它来在MacBook Pro上同时安装运行Linux和macOS。

GRUB常用技巧

在GRUB菜单显示的时候,按下 e 按键可以进入编辑模式,此时可以修改内核启动参数,特别适合一些异常排查过程。

GRUB修改

默认GRUB配置文件位于 /etc/default/grub ,也有一个 /etc/default/grub.d 目录提供了附加的配置 .cfg 文件。

ubuntu和其他一些发行版提供了一个更新grub的工具 update-grub ,当修改了GRUB配置之后,执行 sudo update-grub 就能够更新grub。不过,如果系统没有提供 update-grub 工具的话也不必担心,你可以通过以下命令生成 grub2 配置文件:

grub-mkconfig -o /boot/grub/grub.cfg

安装Linux发行版的时候,通常会询问是否要安装 grub boot loader ,这个grub一部分安装在 MBR/ESP 分区,一部分则位于 /boot/grub 目录。而 update-grub 就是查看 boot 目录,将 vmlinuz 作为内核以及找到对应的ramdisk image的initrd行配置加入到配置中,并且会使用 os-prober 来查看所有的磁盘分区中是否有其他操作系统,然后加入到grub菜单。

参考

Last updated