内核编译(七):构建根文件系统(四):构建根文件系统(一)

    上节课,我们成功地编译了busybox。本节课,我们就开始来构建我们的文件系统。

    上节课,我们安装玩了busybox之后,我们的myfilesystem里面就有了bin linuxrc sbin usr这些东西。但这些东西是不足以构成我们的文件系统的。我还需要构建dev目录、etc目录和lib目录。在dev目录里,最起码得有我们的控制台,这样我们才能将信息进行输出。在这个目录里,我们需要创建两个设备,一个是console设备,一个null设备(null设备在上节课讲过)。现在我们就开始进行创建。怎么创建呢?我们可以在虚拟机的Linux中看一下它们的信息:

可以看到,console和null都是字符设备。console的主设备号是5,次设备号是1;null的主设备号是1,次设备号是3。我们可以用mknode来创建它们,记得sudo一下提高权限嗷:

接下来,我们就来构建etc目录,etc目录就肯定要构建我们最重要的/etc/inittab文件了。这里我们要就让它启动一个shell程序就好了,即内容

    最后,我们就可以构建lib目录了。我们将glibc库安装进去即可。接着我们执行命令:

    cp *.so* directory -d,其中,-d参数是复制链接文件。有些库其实是一个链接文件来的,如果直接复制的话会重定向它真正的库,这样就比较大了(其实有些我们是不需要的,所以我们这里只需要把所有的so拷过来就好了):

这样,我们就做好我们所需要的最小跟文件系统了。接下来,我们需要把我们的文件系统烧到NANDFLASH上。怎么烧呢?我们一般是通过U-Boot去操作的。而U-Boot一般是直接通过一个文件系统的映像去烧写。这里我们就先制作一个yaffs2的映像吧(怎么安装相关的制作命令的话可以百度,这里由于篇幅原因就不细讲了):

烧录好后,我们就把映像考过来,通过USB传输到开发板上进行烧写,然后启动系统来查看效果:

我们看到,根文件系统是烧写成功的,我们的shell程序也成功启动,但我们执行ps命令时发现无法执行。这是因为我们此时的文件系统功能还不是很完善,下节课我们来完善它。

猜你喜欢

转载自blog.csdn.net/xiaokangdream/article/details/80421282
今日推荐