Linux 查看启动日志定位启动失败

1次阅读

linux启动失败时最直接有效的排查方式是查看启动日志:优先用journalctl -b查本次启动日志,dmesg查内核消息,grub恢复模式下结合journalctl -b -1和dmesg -l err,warn定位故障,同时检查fstab挂载及关键systemd服务状态。

Linux 查看启动日志定位启动失败

Linux 启动失败时,最直接有效的排查方式是查看启动日志。系统在启动过程中会将内核、initrd、systemd 服务等关键阶段的日志写入缓冲区或磁盘日志,即使无法进入桌面或命令行,也能通过特定方法获取。

使用 journalctl 查看完整启动日志

如果能成功进入系统(哪怕只是 recovery mode 或 tty 终端),优先使用 journalctl

  • 查看本次启动的所有日志journalctl -b
  • 查看上一次启动日志(适用于重启后进不去)journalctl -b -1
  • 只显示启动失败的服务journalctl -b --failed
  • 实时跟踪启动过程(需提前运行)journalctl -b -f(适合在恢复模式中执行)

注意:-b 表示 “boot”,默认读取当前启动的 journal;若 /var/log/journal 未启用持久化,重启后可能丢失旧日志,建议先执行 sudo mkdir -p /var/log/journal && sudo systemd-tmpfiles --create --prefix /var/log/journal 开启日志持久化。

检查内核启动消息(dmesg 缓冲区)

内核日志独立于 systemd 日志,记录硬件检测、驱动加载、早期 panic 等关键信息:

  • 查看内核环形缓冲区内容dmesg -H(带时间与颜色)或 dmesg | less
  • 过滤错误和警告dmesg -l err,warn
  • 查找常见启动卡点关键词:如 Failed to starttimeoutno responseACPI Errordrm_kms_helper: failed to set modeataX.00: failed command

若系统完全卡在 logo 或黑屏,可在 GRUB 启动菜单按 e 编辑启动项,在 linux 行末尾添加 systemd.log_level=debugloglevel=7 提高内核和 systemd 日志详细程度,再按 Ctrl+X 启动临时生效。

从 GRUB 进入恢复环境查看日志

当无法正常登录时,可通过 GRUB 进入 rescue 模式获取日志:

  • 开机时长按 Shift(BIOS)或按 Esc(UEFI)调出 GRUB 菜单
  • 选择“Advanced options for ubuntu/debian/centos…” → 选带 recovery mode 的内核
  • 进入菜单后选择 root Drop to root shell prompt
  • 执行 mount -o remount,rw /(若根分区只读)
  • 再运行 journalctl -b -1dmesg -l err,warn 查看上一次失败启动的关键线索

检查关键启动单元和服务状态

systemd 把启动过程拆分为多个 target 和 service,可快速定位阻塞点:

  • 查看默认启动目标是否激活systemctl get-default(通常是 graphical.target 或 multi-user.target)
  • 查看该 target 下所有单元状态systemctl list-dependencies --reverse --state=failed graphical.target
  • 检查基础服务是否异常systemctl status systemd-udev-settle.servicesystemctl status systemd-fsck@dev-disk-byx2duuid-*.servicesystemctl status systemd-remount-fs.service
  • 特别关注挂载失败:检查 /etc/fstab 中是否存在 UUID 错误、NFS 超时、加密卷解密失败等,这类问题常导致启动停滞在 “A start job is running for…”

不复杂但容易忽略。

text=ZqhQzanResources