如何检查 Linux 中内核启动选项是否已启用

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查 Linux 中特定的内核启动选项是否已启用。我们将探讨三种实现此目的的关键方法。

首先,你将使用 cat /proc/cmdline 命令查看当前启动会话期间传递给内核的命令行参数。接下来,你将检查位于 /etc/default/grub 的 GRUB 配置文件,以了解其中一些启动选项的配置位置。最后,你将使用 dmesg 命令检查启动日志,以查看内核如何解释和应用这些启动选项。通过完成这些步骤,你将获得诊断和理解 Linux 系统启动过程的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/less("File Paging") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/cat -.-> lab-558719{{"如何检查 Linux 中内核启动选项是否已启用"}} linux/less -.-> lab-558719{{"如何检查 Linux 中内核启动选项是否已启用"}} linux/grep -.-> lab-558719{{"如何检查 Linux 中内核启动选项是否已启用"}} end

使用 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(初始为只读文件系统)、quietsplash

理解这些启动选项有助于排查启动问题或配置特定的内核行为。

请记住,/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 的输出可能很多,通常将其通过管道传递给 lessmore 等分页器,以便逐屏查看。

试试这个命令:

dmesg | less

现在你可以使用箭头键在输出中上下滚动。按 q 退出 less

你还可以使用 grep 过滤输出,以搜索特定的关键字,如 "error" 或硬件设备的名称。

例如,要查看与 USB 设备相关的消息:

dmesg | grep -i usb

这个命令将只显示包含 "usb" 的行(由于 -i 标志,搜索不区分大小写)。

探索 dmesg 输出是 Linux 系统管理和故障排除的一项基本技能。

点击 继续 完成此实验。

总结

在这个实验中,我们学习了如何通过检查 /proc/cmdline 文件来确认 Linux 中内核启动选项是否已启用。该文件动态展示了当前启动会话期间传递给内核的命令行参数,让你了解系统的启动方式和初始配置。

我们还通过查看 GRUB 配置文件 /etc/default/grub,开始探寻这些启动选项的来源。在系统启动前,该文件是定义内核启动参数的关键位置。