内核日志已经跑起来,却停在“VFS: Unable to mount root fs”。这类问题不应简单归为“内核坏了”,要分清启动参数、块设备驱动、分区和文件系统支持。
嵌入式Linux面试:Kernel panic提示Unable to mount root fs,该从哪里查?

一、面试参考回答
先看完整启动日志,判断是找不到根设备、无法识别文件系统,还是根文件系统已挂载但找不到init。再核对U-Boot的bootargs中root=、rootfstype=、rootwait等参数,检查MMC/eMMC/SD控制器驱动、设备树、分区号与文件系统驱动是否在内核早期可用。
二、看日志关键字,不要只盯最后一行
“unknown-block(0,0)”往往提示内核未正确解析或发现目标根设备;其他major/minor值说明内核已识别到某类块设备,仍需结合上下文判断。
“No working init found”与“Unable to mount root fs”不是同一阶段的错误;前者可能是根文件系统可访问但用户态入口缺失。
三、按启动链逐层核对
确认U-Boot加载的Kernel、DTB和rootfs是否来自匹配版本,bootargs中的root路径与实际分区一致。
核对MMC驱动、设备树节点、ext4等文件系统支持是否编入内核或已在可用的initramfs中。
查看rootwait与设备枚举时序;在可用的救援系统中检查分区表与文件系统完整性。
四、面试时给出可执行的验证
串口保存完整boot log,打印bootargs,列出分区,再对照内核配置与设备树。
若修改过镜像或分区,优先验证版本与文件完整性,避免反复盲刷。
“出现Kernel panic就重编内核”太笼统;必须先区分存储驱动、挂载参数和init问题。
如果日志显示根分区已挂载,但报No working init found,下一步检查什么?

扫码关注






























