GRUB Linux启动加载程序是Linux中最常用的引导加载程序。每个渴望使用Linux的用户都会从学习Ubuntu GRUB中受益。在本教程中,您将了解GRUB是什么,启动过程如何工作,并深入了解几个有用的Ubuntu GRUB配置。
深入了解更多。
先决条件
如果您想要在本教程中跟随操作,请确保您的Linux设备使用GRUB作为引导加载程序。本教程将基于在Oracle VirtualBox上运行的Ubuntu 18.04.5 LTS虚拟机。
了解Ubuntu GRUB引导过程
GRUB是Grand Unified Boot Loader的首字母缩写,是引导您的设备的主要和最关键的组件。 GRUB也是Linux中最常见的引导加载程序。您的旅程将始于您对GRUB的引导过程有更多了解。
在一般的引导过程中,BIOS首先调用POST步骤,然后查找主引导记录(MBR)中的引导加载程序。
MBR是任何硬盘的第一个扇区中的信息。 MBR标识操作系统的位置。 存储在MBR中的信息将操作系统加载(引导)到设备的RAM中。
本文仅涵盖了关于MBR的一面。但是您也可以使用GPT(GUID分区表)查找磁盘。如果计划创建超过四个分区,GPT更好,因为MBR磁盘最多只能容纳4个主分区。
在下面的截图中,您可以看到引导过程的图表。您可以看到Ubuntu GRUB加载您选择的内核到主内存中:随机访问存储器(RAM)。内核加载后,用户可以登录设备。

比较Ubuntu GRUB和LILO引导程序
Linux世界有三个主要的引导加载程序: LILO,GRUB和GRUB2。GRUB2是Linux发行版中最新和主要的引导加载程序。GRUB2是本教程中最常用和演示的,因为它是Ubuntu的默认引导加载程序,但LILO在Linux中仍然存在。在本节中,您将了解它们相互比较的情况。
市场上有其他的Linux引导程序可供选择,如GNU GRUB,它对内存管理和面向对象的框架有出色的支持。另一个则是SYSLINUX,这是一个轻量级的引导程序。
GRUB支持引导多个操作系统。然而,LILO只能引导一个操作系统。

Ubuntu GRUB能与Windows、Linux、Unix、macOS、BSD、Solaris等操作系统协同工作,而LILO主要支持Linux操作系统。
如果你更新了LILO的配置文件,那么需要将LILO重新安装到MBR。如果你更改了GRUB的设置,它则不需要重新安装。
选择不同的内核或恢复模式
此部分将展示如何在引导设备时选择一个内核,以及如何从损坏的内核中恢复。
A kernel works as an interface between hardware and software. It controls all the processes that users run on the device.
以下是使用Oracle VirtualBox中的VM选择内核的步骤:
1. 直接使用Oracle VirtualBox登录Ubuntu设备控制台。
2. 使用如下所示的关闭命令重启Ubuntu机器。
一旦你的设备重启,按住Shift键并加载Ubuntu GRUB,你会看到GRUB引导程序菜单。如果你没有选择任何内容,GRUB将使用默认的内核引导系统,并继续引导过程。
你应该在需要使用不同于默认内核的内核引导时选择Ubuntu的高级选项。或者如果你在系统中遇到文件损坏、内核无法正确加载等问题。

4. 选择Ubuntu的高级选项后,将会显示一个Ubuntu GRUB菜单。在菜单中,你应该看到各种内核选项供你选择。如果你不选择任何选项,默认将加载显示的第一个内核。
如下图所示,每个内核都有两个附加选项:upstart和recovery。
- (upstart):一个基于事件的替代/sbin/init守护进程,它在启动期间启动任务和服务,在关闭期间停止它们,并在系统运行时监督它们。
- (recovery mode):用于从系统中的任何故障中恢复内核。

5. 登录设备后,uname
命令可以验证指定的内核是否已加载。选项-r
会打印内核名称。

设置默认操作系统
现在你对GRUB更加熟悉,你将调整一些GRUB配置选项。你将首先配置默认加载的操作系统。
1. 使用你喜欢的SSH客户端登录到你的Ubuntu设备。
2. 现在,通过运行如下所示的 awk
命令来列出 GRUB 引导菜单条目。 awk
命令将显示存储在 /boot/grub/grub.cfg 中的所有条目。 文件的内容将显示在终端上。 注意这些行。 您将需要与行关联的数字,该数字从零开始,即 Ubuntu
行为 0
,Ubuntu,具有 Linux 4.4.0-210-generic
为 1
。

3. 接下来,编辑 GRUB 配置文件。 您可以依靠 vi
编辑文件并更改 GRUB_DEFAULT
的值,但根据需要使用您喜欢的编辑器。
现在,将 GRUB_DEFAULT
的值设置为所需 OS 条目的行号。 还记得您运行的 awk
命令吗? 那些是 OS 条目。 如果您将 GRUB_DEFAULT
设置为 0
,则 GRUB 引导菜单条目中的第一个 OS 条目将默认启动;如果您将其设置为 1
,则设备将默认启动第二个 OS 条目,依此类推。 在下面的截图中,第一个 OS 条目 Ubuntu 被默认设置为启动。
默认情况下,GRUB 不会在启动菜单中等待,而是立即开始启动,在 0 秒内。 您可以通过更改
GRUB_TIMEOUT
的值来更改此超时设置。 此值将是启动开始前菜单可见的秒数。 如果该值为5
,则启动菜单将显示 5 秒,以便您在系统启动时选择要加载的操作系统。

4. 一旦您保存了GRUB配置文件中的更改,请确保运行update-grub
命令。 update-grub
命令会将更改后的配置文件应用到系统中。

在Ubuntu GRUB中设置背景图片
您的GRUB配置不需要单调。您可以通过将背景图片添加到GRUB菜单中为GRUB增添一些风味。您可以使用GRUB_BACKGROUND
选项将图片设置为GRUB的背景。按照以下步骤自定义GRUB。
1. 使用vi
或您喜欢的文本编辑器编辑GRUB配置文件,并像下面显示的那样添加GRUB_BACKGROUND
行。在本教程中,图片存储在名为UBUNTU
的用户主文件夹中,因为GRUB以root身份运行,它可以访问整个文件系统中的图片。一旦修改保存配置文件。
文件shanky.jpeg图像已经存在于系统中。将该名称替换为您想要设置为背景图片的文件名。
2. 接下来,在GRUB配置文件中进行更改后,运行update-grub
命令。

3. 此外,请验证您在Grub文件中添加的背景图片是否按预期工作。要验证,请重新启动您的计算机,并在GRUB加载时按下Shift键。如下图所示,GRUB现在具有背景图片。

使用GRUB进行双重引导
Ubuntu GRUB的最大特点之一是在设备启动时允许您在Windows和Linux之间进行选择:也被称为双引导。双引导允许您在一个设备上同时使用Linux和Windows,并且对于同时使用多个操作系统的IT工程师来说,这使生活变得更加轻松。
截至2021年初,默认的os_prober
脚本被禁用,该脚本自动添加额外的操作系统菜单项,原因是自动检测操作系统可能存在潜在的安全问题。只要您知道已安装了哪些操作系统,您可以通过以下命令重新启用此功能。
配置了设备的双引导后,当您的机器启动时,您应该会看到类似GRUB菜单的屏幕。

结论
在本教程中,您了解了GRUB是什么,文章向您介绍了GRUB的启动过程。
您还学会了如何调整一些Ubuntu GRUB配置,加载不同的内核,甚至了解了双引导的相关知识。
既然您已经对GRUB有了充分的了解,您打算更改哪些配置选项呢?