利用 busybox 制作根文件系统需要先获取 busybox 源代码,然后配置、编译和安装busybox,操作成功后开始制作根文件系统。成功安装 SDK 后, busybox 完整源代码就存放在 osdrv/目录中。当然也可以自己到官网http://www.busybox.net 去下载 busybox 源代码。
一、配置,编译,安装busybox
1.1 配置busybox
①进入busybox所在目录,指定配置文件
cd Hi3516A_SDK_V1.0.5.0/osdrv/opensource/busybox/busybox-1.20.2
cp config_v300_soft .config
②通过"make menuconfig"配置选项
make menuconfig
busybox 的配置界面和内核配置相似,其功能选项容易理解,可以根据自己的需求选择配置。
在 Busybox Settings —> Build Options 中注意下面两个选项:
[*]Build BusyBox as a static binary (no shared libs)
[*] Build with Large File Support (for accessing files > 2 GB)
第一个选项 选择是否把 busybox 编译成静态链接的可执行文件。如果选择该选项,编译出来的 busybox 就是静态链接的,运行时不依赖于动态库,但体积较大;清除该选项将得到动态链接的 busybox,体积较小,但需要动态库的支持。
第二个选项 是用于选择 SDK 推荐的交叉编译器,配置好后保存并退出。
欲了解 busybox 各选项含义请参考 busybox 配置帮助。
③手动修改Makefile
vim Makefile
164 CROSS_COMPLE=armhisiv300-linux- //指定编译工具链
190 ARCH=arm //arm体系架构
1.2 编译和安装busybox
配置好busybox后,输入以下命令进行编译和安装
make
make install
编译并成功安装后,在busybox目录下的_install目录生成以下目录及文件
drwxr-xr-x 2 root root 4096 2月 27 14:53 bin
lrwxrwxrwx 1 root root 11 2月 27 14:53 linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 2月 27 14:53 sbin
drwxr-xr-x 4 root root 4096 2月 26 17:26 usr
二、使用busybox制作根文件系统
在成功安装 SDK 后,Hi3516A_SDK_V1.0.5.0/package/目录中已经有制作好的根文件系统rootfs_uclibc.tgz
如有需要,也可在 busybox 的基础上制作根文件系统,步骤如下:
①创建rootbox目录,并将_intalll下的内容拷贝到rootbox中
mkdir rootbox
cd rootbox
cp -R ../_install/* .
mkdir etc dev lib tmp var mnt home proc
②配置etc lib dev 目录的必需文件
- etc 目录可参考系统/etc 下的文件。其中最主要的文件包括 inittab、 fstab、 init.d/rcS文件等,这些文件最好从busybox 的 examples 目录下拷贝过来,根据需要自行修改。
- dev 目录下的设备文件,可以直接从系统中拷贝过来或者使用 mknod 命令生成需要的设备文件。拷贝文件时请使用 cp –R file。
- lib 目录是存放应用程序所需要的库文件,根据应用程序需要拷贝相应的库文件。
完成以上两个步骤,一个完整的根文件系统就生成了
注:SDK 软件包中已经包括配置好的完整的根文件系统,如果无特别需求,可直接使用。要添加自己开发的应用程序,只需将应用程序和相应的库文件拷贝到根文件系统的对应目录即可。