根文件系统承担什么
Kernel 启动后需要挂载根文件系统,并运行第一个用户态进程。根文件系统里至少要有基础目录、初始化程序、命令工具、动态库、配置文件和设备节点。
最小系统常见目录包括:
/bin
/sbin
/etc
/lib
/dev
/proc
/sys
/tmp
/var
init
Kernel 默认会尝试运行 /sbin/init、/etc/init、/bin/init 或 /bin/sh。如果这些路径都不存在,系统会 panic。
调试时可以临时在 bootargs 里指定:
init=/bin/sh
这样能绕过复杂启动脚本,先确认根文件系统能否进入用户态。
动态库
如果应用或 BusyBox 是动态链接,需要把对应 C 运行库和动态加载器放进根文件系统。缺库时,常见现象是文件明明存在,却提示 not found。
可以用交叉工具链的 readelf 或 ldd 替代方案检查依赖。
虚拟文件系统
启动脚本通常需要挂载:
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devtmpfs /dev
缺少这些挂载会影响进程信息、设备节点和驱动状态查看。
小结
根文件系统问题要从两个角度看:Kernel 是否成功挂载它,用户态程序是否能在里面正常运行。先确认最小 shell 可用,再逐步恢复完整启动脚本。