CentOS dmesg“启动失败”的定位与修复
一、先判断是命令不可用还是文件缺失
dmesg 查看即可。若你看到“没有/var/log/dmesg”,这是默认行为,并非故障。dmesg 命令本身报错(如“段错误/Segmentation fault”),属于命令层面的异常,需要进一步排查二进制或系统库问题。二、快速定位启动阶段的问题
journalctl -xbjournalctl -b -1journalctl -p err -bcat /var/log/messages三、常见根因与对应修复
引导加载器 GRUB 损坏或配置错误
chroot,执行:
grub2-install /dev/sdagrub2-mkconfig -o /boot/grub2/grub.cfg文件系统损坏导致挂载失败、进入紧急模式
fsck -y /dev/sdXY/etc/fstab 有错误,先修正再启动。新内核不兼容或 initramfs 异常
chroot 中执行 dracut -f 重建 initramfs,并更新 GRUB 配置。根分区空间耗尽导致启动卡死或进入受限环境
硬件故障(磁盘 I/O 错误、内存异常)
smartctl 检测磁盘健康,使用 memtest86+ 检测内存,必要时更换硬件。四、若只是 /var/log/dmesg 文件缺失
/etc/systemd/system/dmesg.service[Unit]
Description=Create /var/log/dmesg on boot
ConditionPathExists=/var/log/dmesg
[Service]
ExecStart=/usr/bin/dmesg
StandardOutput=file:/var/log/dmesg
[Install]
WantedBy=multi-user.target
touch /var/log/dmesg
restorecon -v /var/log/dmesg
systemctl enable --now dmesg
cat /var/log/dmesg 查看。五、若 dmesg 命令本身报错(如段错误)
journalctl 与 /var/log/messages 获取相同时间段的日志线索,以绕开 dmesg 命令本身的问题进行排障。