/proc/cmdline 文件直接保存系统启动时内核参数,可用 cat 命令读取;dmesg | grep "Command line" 可从日志提取;GRUB 配置文件可反向验证;systemd-analyze info 能结构化显示;常见参数如 root=、ro、quiet 等决定启动行为。

如果您需要了解当前 Linux 系统启动时传递给内核的参数,则这些信息被直接保存在 /proc/cmdline 文件中。该文件由内核在启动过程中生成,仅包含一行文本,记录了引导加载程序(如 GRUB)向内核传递的所有命令行参数。以下是获取和解析该内容的具体方法:
一、直接读取 /proc/cmdline 文件
该文件是内核提供的只读虚拟文件,反映系统实际启动时使用的参数,无需额外工具即可查看。其内容为原始字符串,各参数以空格分隔。
1、打开终端,执行命令:cat /proc/cmdline。
2、观察输出结果,例如:BOOT_IMAGE=/vmlinuz-5.15.0-91-generic root=UUID=abcd1234 ro quiet splash。
3、可使用 tr ' ' '\n' 将参数逐行显示以便阅读:执行 cat /proc/cmdline | tr ' ' '\n'。
二、使用 dmesg 命令过滤启动参数
dmesg 缓冲区在系统启动早期即记录内核命令行,部分发行版会在启动日志中显式打印该行,适用于 /proc 不可用(如 initramfs 阶段)的排查场景。
1、运行命令:dmesg | grep "Command line"。
2、若匹配成功,将显示类似:[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-5.15.0-91-generic root=UUID=abcd1234 ro quiet splash。
3、注意方括号内的数字为时间戳,Command line: 后的内容即为完整参数串。
三、通过 GRUB 配置文件反向验证
/boot/grub/grub.cfg 中定义了默认启动项的 linux 行,其内容与 /proc/cmdline 一致(除非手动修改过启动项)。此方法用于比对当前运行内核是否按预期配置启动。
1、执行:grep -A1 "linux.*root" /boot/grub/grub.cfg | grep "linux"。
2、提取出当前默认菜单项的 linux 行,例如:linux /vmlinuz-5.15.0-91-generic root=UUID=abcd1234 ro quiet splash。
3、将该行中 linux 后的部分与 cat /proc/cmdline 输出逐字符比对。
四、使用 systemd-analyze 工具提取启动参数
systemd-analyze 提供了对启动过程的结构化分析能力,其 info 子命令可输出包括内核命令行在内的基础启动元数据。
1、输入命令:systemd-analyze info | grep "Kernel command line"。
2、输出格式为键值对,例如:Kernel command line: BOOT_IMAGE=/vmlinuz-5.15.0-91-generic root=UUID=abcd1234 ro quiet splash。
3、该方式依赖 systemd 环境,不适用于 SysVinit 或其他 init 系统。
五、解析常见内核参数含义
理解 /proc/cmdline 中各字段的作用,有助于诊断启动行为。每个参数以 key=value 或纯 key 形式出现,无空格嵌入。
1、root= 指定根文件系统设备,支持 UUID、LABEL、PARTUUID 或设备路径。
2、ro 表示以只读方式挂载根文件系统,通常在 fsck 前使用;rw 表示读写挂载。
3、quiet 抑制大部分内核和驱动启动消息;splash 启用图形启动画面(需 initramfs 支持)。
4、init= 指定用户空间第一个进程的路径,默认为 /sbin/init;可覆盖为 /bin/bash 用于调试。










