把文件系统层级与运行时依赖放到一条路径上,避免只会“把可执行文件复制过去”。
读目录树|路径是有分工的
精简rootfs一般需要必要的程序、动态链接器和共享库、配置、设备节点入口及虚拟文件系统挂载点。常见约定中/etc保存配置、/lib或/lib64存放库与链接器、/dev暴露设备节点、/proc与/sys提供内核接口;具体路径因发行版、架构和usr-merge而异。

故障一|文件存在却提示not found
先用file、readelf -l确认ELF架构和interpreter路径;检查动态链接器是否存在、依赖库是否齐全,必要时用readelf -d或ldd辅助判断。某些系统打印“not found”,真正缺的是解释器或动态库,而不是程序文件。
故障二|设备文件缺失
确认/dev是否正确挂载devtmpfs、udev或mdev是否按系统设计启动,设备驱动是否实际注册;再检查/proc、/sys挂载及启动脚本执行顺序。不要把设备节点简单理解成普通文本文件。
我会先从rootfs目录结构查程序、解释器、共享库、配置和虚拟文件系统挂载,而不是反复chmod。遇到可执行文件存在却无法启动,我优先核对架构和ELF interpreter;遇到/dev缺设备,再查devtmpfs和驱动注册。
把别的平台编译的二进制拷到rootfs,即使文件权限是755也不保证可以运行。
延伸追问静态链接和动态链接在rootfs大小与后续维护上各有什么取舍?/proc、/sys是从磁盘读取的目录吗?

扫码关注






























