Linux挂在根文件系统后init不能运行

1 概要

   当制作好根文件系统后,Linux启动正常挂在根目录,但是init程序不能运行,uboot中已经指定了init=/linuxrc,并且根文件系统中也存在/linuxrc,但是仍然报错。busybox是动态编译的。

Linux挂在根文件系统后init不能运行

2 问题分析

2.1 依赖库问题

  出现这个问题,最先想到的就是busybox不能执行,肯定是由于某种原因运行不起来。这里首先想到busybox是动态编译的,所以需要看一下依赖的库文件:

进入到busybox可执行文件所在目录,执行如下命令来查bosybox依赖的动态库

readelf -d busybox

Linux挂在根文件系统后init不能运行

然后将依赖的库文件拷贝到根文件系统的lib中。

2.2 添加依赖的库文件后仍然不能执行

包含动态库的应用程序,需要有加载器才能正常执行,而根文件系统中并没有加载器,执行如下命令,查看busybox应用需要的加载器。

 readelf -l  busybox

Linux挂在根文件系统后init不能运行

这样拷贝加载器到lib中,程序就能正常运行了。

3 总结

想要busybox正常运行,至少需要如下库文件:

Linux挂在根文件系统后init不能运行