在救援模式下,必须先挂载根文件系统(如mount /dev/mapper/rhel-root /mnt/sysroot),再用journalctl -b -D /mnt/sysroot/var/log/journal/$(cat /mnt/sysroot/etc/machine-id)/查看持久化日志;若日志未启用,则改用dmesg -T、rdsosreport.txt或fstab检查定位故障。

在救援模式下,journalctl -b --directory(注意不是 -D,正确参数是 --directory 或简写为 -D)并不能直接使用,因为 journal 日志默认存储在 /run/log/journal/(易失性内存目录)或 /var/log/journal/(持久化目录),而救援环境通常未挂载根文件系统(/sysroot),/var/log/journal/ 根本不可见。真正能用、也必须用的是挂载根后再指定日志路径。
先挂载根文件系统才能访问持久化日志
救援模式下 journalctl 默认只能读取本次启动(initramfs 阶段)的日志,不包含系统服务失败的完整上下文。要看到完整的、带服务单元和错误堆栈的启动日志,必须手动挂载原系统的根分区:
- 运行
lsblk或fdisk -l查看磁盘布局,识别出根逻辑卷或分区(如/dev/mapper/rhel-root、/dev/nvme0n1p2) - 创建临时挂载点:
mkdir /mnt/sysroot - 挂载根分区:
mount /dev/mapper/rhel-root /mnt/sysroot(按实际设备名替换) - 若使用 LVM 或加密卷,可能需先
vgscan && vgchange -ay或cryptsetup luksOpen
用 -D 指向挂载后的 journal 目录
挂载完成后,真正的持久化日志位于 /mnt/sysroot/var/log/journal/<machine-id>/。此时可执行:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
journalctl -b -D /mnt/sysroot/var/log/journal/$(cat /mnt/sysroot/etc/machine-id)/—— 查看上次正常启动或故障前的完整日志 -
journalctl -b -1 -D /mnt/sysroot/var/log/journal/$(cat /mnt/sysroot/etc/machine-id)/—— 查看上一次启动日志(对分析崩溃前状态极关键) - 如果
/var/log/journal/为空,说明日志未启用持久化,应改查dmesg -L或/mnt/sysroot/run/initramfs/rdsosreport.txt
替代方案:当 -D 不可用时的可靠回退手段
并非所有发行版默认开启 journal 持久化,尤其最小化安装或旧系统。此时不要强求 -D,转而使用更底层、更稳定的线索源:
-
dmesg -T—— 查看内核环缓冲区,含硬件识别、驱动加载、块设备初始化失败等关键信息 -
cat /mnt/sysroot/run/initramfs/rdsosreport.txt 2>/dev/null || echo "no rdsosreport"—— RHEL/CentOS/Fedora initramfs 自动保存的诊断快照,常含 XFS corruption、LVM scan timeout 等原始报错 -
cat /mnt/sysroot/etc/fstab | grep -v "^#" | grep -E "(ext|xfs|btrfs)"—— 快速定位 fstab 中挂载失败的条目(比如拔掉的 USB 盘、损坏的 NFS 路径)
快速过滤关键错误的实用技巧
面对数千行日志,聚焦三类信号能大幅提速定位:
- 搜索挂载失败:
journalctl -b -D ... | grep -i "mount.*failed\|failed to mount\|/sysroot.*no such device" - 搜索文件系统报错:
journalctl -b -D ... | grep -A2 -B2 -i "xfs|corrupt\|fsck.*fail\|metadata.*lsn" - 搜索服务依赖中断:
journalctl -b -D ... | grep -E "dependency.*failed|timed out|refused to start|not found"

















