linux根文件系统创建过程

步骤一:创建根文件系统基本目录
1.在home目录下创建:mkdir rootfs,然后,

2.在usr/下面建立子目录

3.在dev/下面建立字符设备文件


4安装/etc,系统所有配置文件都在这里,注意在不同平台(x86 arm PowerPC等)这些配置文件基本都是差不多的,所以只需要拿别人的修改就可以。(这里直接把别人的配置目录做成一个包,拿过来直接解压cp到rootfs里面就可以了。)

步骤二:下载内核源码并编译
1.从https://www.kernel.org/下载自己想要编译的内核版本(我编译的是linux-2.6.29)
解压放到rootfs目录下,然后执行:
make menuconfig //按照自己的要求进行配置得到.config文件
然后对内核进行编译,执行:
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
最后得到我们的镜像文件:
linux根文件系统创建过程_第1张图片

2.编译内核模块,执行:
make modules ARCH=arm CROSS_COMPILE=arm-linux-
在此过程,遇到的各种问题请参考:
https://blog.csdn.net/JustDoIt_201603/article/details/87556900

步骤三:busybox的编译和安装
busybox(称为嵌入式开发中的瑞士军刀)是一个工具集(例如我们常用ls,pwd命令,及vi或vim工具),对于这些常用的命令和工具,我们没有必要重新去开发,直接利用busybox进行移植即可。这里我用的是busybox-1.13.3,解压到rootfs目录下:

1.配置busybox,执行make menuconfig
提示如下错误:

意思是混合隐式规则和常规规则:弃用语法,起初以为是busybox包的问题,换了低版本也报同样的错误,百度上说可能是由于系统make工具太新(系统:Ubuntu16.04),make旧版   的一些规则已经无法兼容新版make
将原来的config %config: scripts_basic outputmakefile FORCE改为:

将原来的/ %/: prepare scripts FORCE,改为:

然后重新执行:make menuconfig,进入这个Busybox Settings --->linux根文件系统创建过程_第2张图片

首先设置下面第一项为yes(*表示yes),然后设置最后一项Cross Compiler prefix(交叉编译器的前缀)的内容为arm-linux
然后进入第四项busybox的安装选项中

设置busybox安装路径前缀,这里我选择安装到rootfs目录下

然后退出保存设置。后面最好source /etc/profile一下。

2.编译busybox,执行:
make ARCH=arm CROSS_COMPILE=arm-linux-
编译完成:

3.busybox安装
安装之前我们/home/wangz/rootfs/bin/目录下都是空的,然后执行安装:

编译完成后,会发现/home/wangz/rootfs/bin/bin多了很多指令工具:
linux根文件系统创建过程_第3张图片

这些指令都是链接命令,连接到了busybox的bin下面去了。

4.内核模块的安装
前面的内核模块都只是编译了,还没有安装,现在来安装,执行:

make modules_install ARCH=arm INSTALL_MOD_PATH=/home/wangz/rootfs

5.到这里整个根文件系统都完成了。

你可能感兴趣的:(linux内核)