Linux挂在根文件系统后init不能运行
1 概要
当制作好根文件系统后,Linux启动正常挂在根目录,但是init程序不能运行,uboot中已经指定了init=/linuxrc,并且根文件系统中也存在/linuxrc,但是仍然报错。busybox是动态编译的。
2 问题分析
2.1 依赖库问题
出现这个问题,最先想到的就是busybox不能执行,肯定是由于某种原因运行不起来。这里首先想到busybox是动态编译的,所以需要看一下依赖的库文件:
进入到busybox可执行文件所在目录,执行如下命令来查bosybox依赖的动态库
readelf -d busybox
然后将依赖的库文件拷贝到根文件系统的lib中。
2.2 添加依赖的库文件后仍然不能执行
包含动态库的应用程序,需要有加载器才能正常执行,而根文件系统中并没有加载器,执行如下命令,查看busybox应用需要的加载器。
readelf -l busybox
这样拷贝加载器到lib中,程序就能正常运行了。
3 总结
想要busybox正常运行,至少需要如下库文件: