dmesg中带EXT4-fs或XFS的错误行是内核发出的原始信号,需优先用dmesg | grep -i "ext4\|xfs\|error\|readonly\|corrupt"提取,结合/proc/mounts验证真实挂载状态,并以journalctl辅助定位systemd挂载失败原因。

直接看 dmesg 里带 EXT4-fs 或 XFS 的错误行
内核在挂载失败或运行中检测到文件系统异常时,会把错误码(比如 EXT4-fs (sda1): unable to read superblock 或 XFS: write access disabled due to I/O error)写进内核环缓冲区。这不是用户态 errno,而是内核自己打的日志,关键在关键词和上下文。
执行:dmesg | grep -i "ext4\|xfs\|error\|readonly\|corrupt"
- 重点看时间戳最近的几条,尤其是包含
mounted filesystem readonly、journal has been aborted、I/O error的行 - 如果输出为空,不代表没问题——可能错误已被刷出缓冲区,需加
-T(带时间)或用journalctl -k --since "1 hour ago"补充查 - 注意:同一错误可能重复刷屏,实际只需关注首次出现的那条,后续往往是连锁反应
从 /proc/mounts 看当前真实挂载状态,而不是 fstab
/proc/mounts 是内核当前维护的挂载快照,比 mount 命令输出更底层,也比 /etc/fstab 更权威。它能暴露“挂载了但被内核静默降级为只读”的真实情况。
查某分区是否已 ro:awk ' == "/mnt/data" {print }' /proc/mounts
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 输出含
ro就是只读,哪怕mount命令没显示该挂载点(说明已被内核卸载或卡在异常状态) - 若输出为空,说明该路径根本没挂载成功,不是参数问题,而是设备/路径/类型等前置环节失败
- 不要依赖
cat /etc/fstab | grep ...判断现状——fstab 只是配置建议,不反映实时状态
用 journalctl 定位 systemd 挂载单元报的具体错误码
systemd 启动时通过 systemd-mount 或自动生成的挂载单元处理 fstab 条目,失败时会在 journal 里记录带错误码的 structured log,比 dmesg 更易关联上下文。
查挂载失败详情:journalctl -u systemd-<code>mount@mnt-data.service -xe(把 mnt-data 替换为你的挂载点路径名,/ → systemd-<code>mount@-.service)
- 常见错误信息如:
Mount process exited, code=exited, status=32/n/a—— 这里的status=32对应内核返回的 errno 32(EPIPE),但更可能是 mount 工具本身退出码,需结合前一行日志看原因 - 真正关键的是紧挨着的那条:
Failed with result 'exit-code'或Process exited with code=errno,后面往往跟着原始错误字符串 - 别漏掉
--all参数:有些错误只出现在 unit 启动前的 early boot 日志里,journalctl -b --all | grep -A2 -B2 mount更全
fsck 报错里的数字不是 errno,而是工具自身退出码
运行 fsck /dev/sda1 失败时打印的 “e2fsck: Cannot continue, aborting” 或退出状态码(如 echo $? 返回 8),不是内核 errno,而是 fsck 工具定义的语义码。
- 例如
e2fsck返回 4 表示“文件系统有错误但未修复”,8 表示“操作被中断或系统错误”,需查man e2fsck的 EXIT CODES 小节 - 真正的内核级错误(如 superblock 读取失败)会先出现在
dmesg,fsck 只是暴露了后果;所以必须先看 dmesg,再决定是否 run fsck - 对 xfs 分区,
xfs_repair的退出码规则完全不同,不能套用 ext4 的理解
真正要盯住的,永远是 dmesg 里那一行带文件系统名和具体动作(read superblock、write journal、replay log)的原始错误——它才是内核发出的、不可绕过的信号。其他所有命令都是辅助验证或补救手段。

















