内核启动参数核查
内核命令行决定内核启动时的行为,包括根文件系统位置、控制台、崩溃转储内存预留以及是否进入受限模式。异常参数会让系统以不受控的方式启动,例如指定单用户模式或替换 init 程序,因此这是容易被忽略的持久化位置。查看当前参数直接用 /proc/cmdline,持久化配置则在引导加载器一侧:GRUB 需要修改 /etc/default/grub 后重新生成引导配置才会生效,EFI 与 BIOS 环境下的文件路径也不同。
基本信息
| 当前参数 | /proc/cmdline |
|---|---|
| 持久配置 | /etc/default/grub、/boot/grub/grub.cfg 或 EFI 分区中的引导配置 |
| 常见参数 | root=、console=、crashkernel=、systemd.unit= |
| 注意 | UEFI 与 BIOS 的引导配置路径不同 |
典型使用场景
- 确认当前运行的内核参数是否被追加了异常项
- 核对引导配置中的参数与运行时是否一致
- 调查主机是否曾以单用户模式启动过
- 确认崩溃转储所需的内存预留是否配置
- 为云主机与物理机的参数差异提供判断依据
查看参数与配置
查看参数与配置
cat /proc/cmdline # 当前生效的内核参数
tr ' ' '\n' < /proc/cmdline | sort # 逐参数分行便于比对
grep -E '^GRUB_CMDLINE_LINUX' /etc/default/grub 2>/dev/null
stat -c '%n %y' /boot/grub2/grub.cfg /boot/grub/grub.cfg 2>/dev/null # 引导配置时间
grubby --info=ALL 2>/dev/null | head -20 # RHEL 系查看各内核条目参数引导参数读法
| 参数 | 含义 | 判读要点 |
|---|---|---|
| root= | 根文件系统位置 | 被改动可能指向其他设备或镜像 |
| systemd.unit= | 指定启动目标 | 可绕过默认运行级别 |
| crashkernel= | 为转储预留内存 | 缺失则无法生成内核转储 |
| init= | 替换初始化程序 | 出现时需重点解释来源 |
参数改动需要重新生成引导配置才会生效,因此把 /proc/cmdline 与引导配置文件的时间戳一起看,才能判断改动是否已经落地。
云主机的内核参数常由平台在启动时注入,出现与本地配置不一致属于正常情况,判断前先确认实例类型与控制台日志。
修改引导配置并重启属于高风险操作,写错参数可能导致主机无法启动;取证阶段只做读取与记录,处置方案要经过确认后再执行。