介绍
在这个实验中,你将学习如何检查 Linux 中特定的内核启动选项是否已启用。我们将探讨三种实现此目的的关键方法。
首先,你将使用 cat /proc/cmdline 命令查看当前启动会话期间传递给内核的命令行参数。接下来,你将检查位于 /etc/default/grub 的 GRUB 配置文件,以了解其中一些启动选项的配置位置。最后,你将使用 dmesg 命令检查启动日志,以查看内核如何解释和应用这些启动选项。通过完成这些步骤,你将获得诊断和理解 Linux 系统启动过程的实用技能。
使用 cat /proc/cmdline 检查启动选项
在这一步中,我们将探讨如何查看 Linux 系统启动时使用的启动选项。这些信息存储在 /proc 文件系统中的一个特殊文件里。
/proc 文件系统是 Linux 中的一个虚拟文件系统,它提供有关进程和其他系统信息。它并不在你的磁盘上包含真实的文件,而是提供了一个查看内核数据结构的窗口。
我们感兴趣的文件是 /proc/cmdline。这个文件包含了在启动时传递给内核的命令行参数。这些参数可以影响内核的行为以及它检测到的硬件。
为了查看这个文件的内容,我们将使用 cat 命令。cat 命令是一个用于显示文件内容的简单实用工具。
如果终端尚未打开,请打开它。你可以通过点击桌面左侧的 Xfce Terminal 图标来完成此操作。
现在,输入以下命令并按下回车键:
cat /proc/cmdline
你将看到类似于以下的输出:
BOOT_IMAGE=/boot/vmlinuz-... root=UUID=... ro console=ttyS0,... quiet splash vt.handoff=7
确切的输出会根据你系统的配置而有所不同,但它会显示正在启动的内核映像 (BOOT_IMAGE)、根文件系统的位置 (root=) 以及其他选项,如 ro(初始为只读文件系统)、quiet 和 splash。
理解这些启动选项有助于排查启动问题或配置特定的内核行为。
请记住,/proc/cmdline 是一个由内核生成的动态文件,因此其内容反映了当前的启动会话。
点击 继续 以进入下一步。
使用 cat /etc/default/grub 验证 GRUB 配置
在上一步中,我们查看了内核启动 之后 传递给它的命令行参数。现在,让我们来看看其中一些参数可能的来源:GRUB 配置文件。
GRUB(GRand Unified Bootloader,通用引导加载程序)是一个引导加载程序。它的主要任务是将操作系统内核加载到内存中并将控制权传递给它。GRUB 配置文件决定了引导菜单选项、默认操作系统和内核参数。
在许多 Linux 系统上,GRUB 的主要配置文件是 /etc/default/grub。这个文件包含用于生成实际 GRUB 引导菜单配置的设置。
我们将再次使用 cat 命令来查看这个文件的内容。
如果终端尚未打开,请打开它。
输入以下命令并按下回车键:
cat /etc/default/grub
你将看到类似于以下的输出:
## If you change this file, run 'update-grub' afterwards to update
## /boot/grub/grub.cfg.
## For full documentation of the options in this file, see:
## info -f grub -n 'Simple configuration'
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
#GRUB_GFXPAYLOAD_LINUX=keep
## Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
## The resolution used on graphical terminal
## needs to be in the format e.g. 640x480 or 800x600 or 1024x768
## and your graphics card needs to support it. A list of all available resolutions can
## be found with 'videoinfo' command in grub.
#GRUB_GFXMODE=640x480
## Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_UUID=true
## Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
## Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
查找以 GRUB_CMDLINE_LINUX_DEFAULT 开头的行。这里列出的选项(如 "quiet splash")通常会在启动时传递给内核,你可能在上一步 cat /proc/cmdline 的输出中看到过它们。
这个文件很重要,因为它允许你配置默认的内核参数,而不必在每次启动时手动输入。
重要提示: 如果你在真实系统上对这个文件进行更改,通常需要在之后运行 sudo update-grub 以将更改应用到实际的引导配置文件 (/boot/grub/grub.cfg)。然而,在这个实验环境中,我们只是查看文件。
点击 继续 以继续。
使用 dmesg 检查启动日志
在这最后一步中,我们将使用 dmesg 命令查看内核环形缓冲区消息。内核环形缓冲区存储来自内核的消息,包括有关硬件检测、设备驱动程序以及启动过程中发生的系统事件的信息。
dmesg 命令用于显示这些消息。它是诊断硬件问题或了解系统启动期间发生了什么的重要工具。
如果终端尚未打开,请打开它。
输入以下命令并按下回车键:
dmesg
这个命令可能会输出一长串消息。这些消息是内核在初始化并与系统的硬件和软件进行交互时生成的。
你将看到类似于以下的输出(确切的输出会有很大差异):
[ 0.000000] Linux version ... (buildd@lcy02-amd64-...) (gcc-...) #...-Ubuntu SMP ...
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-... root=UUID=... ro console=ttyS0,... quiet splash vt.handoff=7
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
...
[ 1.234567] usbcore: registered new interface driver usbfs
[ 1.234567] usbcore: registered new interface driver hub
[ 1.234567] usbcore: registered new device driver usb
...
注意,输出中包含内核版本和命令行参数,这与我们在 /proc/cmdline 中看到的类似。
由于 dmesg 的输出可能很多,通常将其通过管道传递给 less 或 more 等分页器,以便逐屏查看。
试试这个命令:
dmesg | less
现在你可以使用箭头键在输出中上下滚动。按 q 退出 less。
你还可以使用 grep 过滤输出,以搜索特定的关键字,如 "error" 或硬件设备的名称。
例如,要查看与 USB 设备相关的消息:
dmesg | grep -i usb
这个命令将只显示包含 "usb" 的行(由于 -i 标志,搜索不区分大小写)。
探索 dmesg 输出是 Linux 系统管理和故障排除的一项基本技能。
点击 继续 完成此实验。
总结
在这个实验中,我们学习了如何通过检查 /proc/cmdline 文件来确认 Linux 中内核启动选项是否已启用。该文件动态展示了当前启动会话期间传递给内核的命令行参数,让你了解系统的启动方式和初始配置。
我们还通过查看 GRUB 配置文件 /etc/default/grub,开始探寻这些启动选项的来源。在系统启动前,该文件是定义内核启动参数的关键位置。



