内核编译(七):构建根文件系统(三):BusyBox编译

    在上节课,我们分析了内核的init进程,知道它是通过读取inittab这个文件来决定启动哪些应用程序的。本节课,我们就开始来动手构建我们的根文件系统。首先,我们知道,init这个进程是会重定向到busybox这个程序里面的,因此我们得先编译BusyBox,这也就是我们本节课的内容。怎么去编译呢?我们可以在源码目录下的INSTALL文件中看到编译的方法:

    

我们看到,它说编译busybox的过程是和编译内核的过程相似的,有三步:

    1.make menuconfig:进行配置,最后会和linux内核一样生成一个.config文件。

    2.make:生成一个可执行文件

    3.make install:安装到相关目录里面去。(注意,这个一定要配置到我们所建立的文件系统里,直接make install 的话会安装到该Linux 系统去,会直接破坏原有的系统)

我们首先执行第一步吧。首先,我们要先把BusyBox的源码传到Linux服务器上,同时创建一个文件夹作为我们的文件系统。这里我们创建了一个名叫myfilesystem的文件夹:


接着我们就解压我们上传上来的busybox源码:

(x表示extract,j表示bz2这个格式,f表示file,文件名)。

    接下来,我们就可以进入到这个目录里面进行make menuconfig了。但注意,这里可能会有些人make menuconfig失败,原因是编译器版本太新了,不适应旧的Makefile规则了,解决办法和之前解决内核make menuconfig时一样,可以翻看之前的文章找到,这里就不细讲了。在这里,我得先设置一下交叉编译模式,因为我们是给嵌入式系统编译的。我们这里的busybox版本比较老,不支持在make menuconfig菜单里面配置交叉编译,我们只能修改其Makefile,并搜索CROSS_COMPILE这个字眼:


在CROSS_COMPILE这个变量里,给它赋arm-linux-这个值,这样他在编译的时候使用的就是arm-linux-gcc,arm-linux-ld等工具了,而不是gcc,ld等pc机用的工具了。然后,我们就可以make menuconfig了。这里,我们有个地方是需要我们设置上去的:tab补全:Busybox Setting---->Busybox Library Turning------>Tab Comletion。其它的话其实他都帮我们默认配置上去了,退出保存即可。

    然后,我们就可以进行下一步:make 了:


    接着,我们就可以执行最后一步:make install了,我们一定要注意要把目录选为我们的文件系统的目录。所以,这里我们的命令是这样的:


编译完成后,我们就可以进去看看里面有什么了:


我们看到,多了一些文件夹和内容。但这还不是我们完全的根文件系统,只是命令部分而已。下节课我们继续构建。

猜你喜欢

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