如果你曾经使用过 Linux 桌面,你一定见过这个屏幕。这就是所谓的 GRUB 屏幕。是的,它的字母全部都是大写的。
Remember this screen? This is GRUB
在 “Linux 黑话解释Linux Jargon Buster”系列的这一个章节中,我将告诉你 GRUB 是什么,以及它有什么用处。此外,我还会简要地介绍一下配置和定制的部分。
GRUB 是什么?
GRUB 是一个用于加载和管理系统启动的完整程序。它是 Linux 发行版中最常见的引导程序bootloader。引导程序是计算机启动时运行的第一个软件。它加载 操作系统的内核,然后再由内核初始化操作系统的其他部分(包括 Shell、显示管理器、桌面环境 等等)。
引导程序和引导管理器
我不想现在就把你搞糊涂,但是我认为这个话题是不可避免的。引导程序boot loader和引导管理器boot manager之间有着一条模糊的界限。
你已经知道了引导程序是什么。它会首先启动,然后将内核加载到内存中并执行它。引导管理器则允许你在不同的操作系统之间进行选择(如果你的电脑上不止一个操作系统的话)。引导管理器并不会直接加载系统。
随着 Linux 内核 3.3 版本的推出,Linux 内核包括了一个内置的 EFI 引导程序。事实上,任何一个支持 EFI 的系统都包括一个 EFI 引导程序。在支持 EFI 的系统中,固件会读取 EFI 系统分区EFI System Partition(ESP)中的 EFI 文件,从而获得启动信息。
这里插入一张图片,图中显示了带有 ESP 分区的分区表:
GRUB 既是一个引导程序,也是一个引导管理器。一会儿我再来谈 GRUB。让我们先看看其他类似 GRUB 的程序。
小知识:GRUB 是 GRand Unified Bootloader(大一统引导程序) 的首字母缩写。
GRUB 屏幕上的那些行是什么意思?
你会在 GRUB 屏幕上看到几行字。这些行对于不同的设置、不同的发行版会有所不同。
通常情况下,第一行是你的 Linux 发行版。如果你看到类似高级选项的东西,你可以进入其中,找到一些以 “linux-generic-x-y-z” 等开头的行。
当你的 Linux 发行版更新内核版本时,它至少会保留一个旧版本。你可以选择启动到旧的 Linux 内核,以防你的系统遇到新更新的 Linux 内核的任何问题。
在基于 Ubuntu 的发行版中,你也可以看到一个恢复选项。
在高级选项下,通常有一个旧的内核版本和恢复选项
在最后,你可能会看到一个条目,如系统设置或 UEFI 设置,以访问系统的 BIOS 设置。
还有哪些类似 GRUB 的引导管理器?
GRUB 是 Linux 中最流行的引导管理器。但它并不是唯一的一个。有一个高度可定制的引导管理器,名字叫做 rEFInd 引导管理器,它同样受到了一些 Linux 用户的喜爱。
定制化的 rEFInd 引导管理器屏幕 | 图片来源:kofler.info/pop_os
还有一个基于文本的引导管理器,名字叫做 systemd-boot。你可以猜到这是专为基于 systemd 的 Linux 发行版准备的。有一些发行版正在使用 systemd-boot,比如 Pop OS。
Pop OS 中的 systemd-boot | 图片来源:kofler.info/pop_os
访问或编辑 GRUB
通常你看到的 GRUB 屏幕是它的菜单界面。如果你安装了一个以上的操作系统,它会允许你在其中选择一个来启动。如果你的 Linux 发行版安装了不止一个内核,你也可以选择加载不同的内核。
根据不同的 Linux 发行版的配置,你的 GRUB 菜单上可能会有一些其他选项。
你可以在 GRUB 菜单界面按 e 键来编辑菜单项。这样你就可以在内核加载前修改它的参数。例如,在某些情况下,禁用内核提供的图形驱动可以帮助你解决 Linux 系统在启动时卡住的问题。
你也可以在 GRUB 菜单界面上按 c 键来进入 GRUB 的命令行菜单。
GRUB 配置文件
你在菜单界面里对 GRUB 所做的任何改变都是暂时的。如果你想对 GRUB 做一些永久性的改变,比如改变默认的超时时间,你可以在 Linux 系统启动后修改 GRUB 配置文件。
默认的 GRUB 配置文件是 /etc/default/grub。还有一个 /etc/default/grub.d 目录,里面也存放一些配置。你可以直接编辑 /etc/default/grub 文件,但是我还是建议通过在这个目录中添加配置文件(.cfg 文件)进行额外的修改。
默认的 GRUB 配置文件
你必须 更新 GRUB 才能使这些修改生效。
使用 GRUB 定制器来定制 GRUB
如果你不太习惯 在终端里使用文本编辑器编辑文件,你可以 使用一个叫做 GRUB 定制器的图形工具。
它允许你改变启动顺序、默认超时时间等等。你还可以用它来把 GRUB 的背景设置成一张自定义的墙纸。
GRUB 定制器可以在 Ubuntu 20.04 中从 Universe 仓库安装,在 Ubuntu 18.04 中 通过 PPA 安装。它可以 通过 AUR 在基于 Arch Linux 的发行版中使用。
总结
至此,本文几乎涉及到了所有与 GRUB 相关的简单内容。至于 EFI、引导加载和 GRUB 本身,它们都是详细而复杂的话题,因此不在本文的讨论范围之内。这篇文章旨在给你一个关于 GRUB 引导程序的总体概述。
或许我以后会写一篇关于 GRUB 的详细指南,解释它底层的一些细节。目前,如果你想了解更多关于 GRUB 的信息,你可以在你的 Linux 终端里使用 info grub 命令访问到 GRUB 文档。
你可以在终端中访问 GRUB 手册
我希望你现在对什么是 GRUB 有了一点点的了解。这里有一个 GIF 动图供你一乐。
什么是 GRUB? UEFI 再也伤害不到我了 :)