简介
在这个实验中,你将学习如何检查 Linux 系统正在使用的引导加载程序(bootloader),特别关注 GRUB。你将探索位于 /boot/grub
目录中的关键配置文件,以了解 GRUB 安装的各个组件。
然后,你将检查 /etc/default/grub
文件,以验证控制 GRUB 行为的主要配置设置。最后,你将使用 dmesg
命令检查引导加载程序的日志,以确认系统启动期间加载了哪个引导加载程序。
在这个实验中,你将学习如何检查 Linux 系统正在使用的引导加载程序(bootloader),特别关注 GRUB。你将探索位于 /boot/grub
目录中的关键配置文件,以了解 GRUB 安装的各个组件。
然后,你将检查 /etc/default/grub
文件,以验证控制 GRUB 行为的主要配置设置。最后,你将使用 dmesg
命令检查引导加载程序的日志,以确认系统启动期间加载了哪个引导加载程序。
ls /boot/grub
检查 GRUB在这一步中,我们将探索 GRUB 引导加载程序的配置文件。GRUB(GRand Unified Bootloader,通用引导加载程序)是包括 Ubuntu 在内的大多数 Linux 发行版的默认引导加载程序。它是你启动计算机时运行的第一个软件,负责将操作系统内核加载到内存中。
主要的 GRUB 配置文件通常位于 /boot/grub
目录中。让我们列出这个目录的内容,看看里面有什么。
如果终端尚未打开,请打开它。记住,你可以在桌面左侧找到 Xfce 终端 图标。
输入以下命令并按回车键:
ls /boot/grub
ls
命令用于列出文件和目录。当你提供像 /boot/grub
这样的路径时,它会列出该特定目录的内容。
你应该会看到一个文件和目录列表,可能类似于以下内容(确切的输出可能会因系统而异):
fonts grub.cfg grubenv i386-pc locale unicode.pf2 x86_64-efi
这个输出显示了你的 GRUB 安装的各个组件。这里最重要的文件是 grub.cfg
,它包含实际的引导菜单配置。我们将在下一步查看该文件。
了解 /boot/grub
的内容是学习你的 Linux 系统如何启动的第一步。
点击 继续 进入下一步。
cat /etc/default/grub
验证 GRUB 配置在上一步中,我们列出了 /boot/grub
目录的内容,并看到了 grub.cfg
文件。虽然 grub.cfg
是活动的配置文件,但它通常是根据 /etc/default/grub
中定义的设置以及 /etc/grub.d/
中的脚本自动生成的。
/etc/default/grub
文件包含控制 GRUB 行为的主要配置选项,例如默认启动的操作系统、启动前的超时时间以及内核参数。
让我们使用 cat
命令查看 /etc/default/grub
文件的内容。cat
命令用于显示文件的内容。
在终端中输入以下命令并按回车键:
cat /etc/default/grub
你将看到 GRUB 默认配置文件的内容。它看起来会像这样:
## If you change this file, run 'update-grub' afterwards to update
## /boot/grub/grub.cfg.
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
## Uncomment to enable booting from a full graphics screen using grub-gfxpayload
## and grub-theme-ubuntu-mate ...
#GRUB_GFXPAYLOAD_LINUX=keep
## Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
## The resolution used on graphical terminal
## Note that you can only use resolutions specified in your gfxpayload.
## See the Graphics chapter in the Grub manual for more details.
#GRUB_GFXMODE=640x480
## Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to the Linux kernel
#GRUB_DISABLE_LINUX_UUID=true
## Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
## Uncomment to get a beep at boot start
#GRUB_INIT_TUNE="480 440 1"
此文件包含各种设置,每个设置都由以 #
开头的注释进行解释。例如:
GRUB_DEFAULT
:指定默认启动的菜单项。0
通常表示第一个菜单项。GRUB_TIMEOUT
:设置在自动启动默认菜单项之前的等待时间(以秒为单位)。GRUB_CMDLINE_LINUX_DEFAULT
:包含传递给默认启动项的内核参数。如果你需要修改启动选项,例如添加用于故障排除的内核参数或更改默认操作系统,那么理解这个文件至关重要。
点击 继续 进入下一步。
dmesg
中检查引导加载程序日志在前面的步骤中,我们查看了 GRUB 配置文件。现在,让我们来检查内核在启动过程中生成的消息。这些消息存储在一个缓冲区中,可以使用 dmesg
命令查看。
dmesg
(诊断消息缓冲区)是一个用于打印内核消息缓冲区内容的命令。它包含有关硬件设备、设备驱动程序以及系统启动期间生成的其他与内核相关的消息。这是排查启动问题的一个重要工具。
在终端中输入以下命令并按回车键:
dmesg
这将输出大量文本,显示自系统启动以来的所有内核消息。输出内容可能很多,因此通常会对其进行过滤,或者将其通过管道传递给像 less
这样的分页器,以便逐屏查看。
若要查看与引导加载程序或早期启动过程特别相关的消息,你通常可以查找“GRUB”、“boot”或“kernel command line”等关键字。
让我们尝试使用 grep
过滤输出,查找包含“Command line”的行:
dmesg | grep "Command line"
|
符号称为管道。它将左边命令(dmesg
)的输出作为输入传递给右边的命令(grep
)。grep
是一个强大的文本模式搜索工具。在这种情况下,我们正在搜索包含“Command line”短语的行。
你应该会看到类似以下的输出,显示引导加载程序传递的内核命令行参数:
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-... root=UUID=... ro quiet splash
这一行显示了正在启动的内核映像(/boot/vmlinuz-...
)和内核参数(root=UUID=... ro quiet splash
)。这些参数通常是在我们上一步看到的 /etc/default/grub
文件中设置的。
探索 dmesg
对于诊断启动过程中出现的问题至关重要,因为它提供了从一开始内核所执行操作的详细信息。
点击 继续 完成此实验。
在本次实验中,我们学习了如何检查 Linux 系统是否使用 GRUB 作为引导加载程序。首先,我们使用 ls
命令列出 /boot/grub
目录的内容,以确定是否存在 GRUB 配置文件,特别是 grub.cfg
。这一步确认了系统中已安装 GRUB。
接着,我们使用 cat
命令查看 /etc/default/grub
文件。该文件包含 GRUB 的主要配置设置,例如默认启动选项和超时值。通过检查这个文件,我们进一步验证了 GRUB 已被配置为引导加载程序,并了解了它的工作方式。