第4阶段——制作根文件系统之编译配置安装busybox(3)
在上一节分析出制作一个最小的根文件系统至少需要:
(1)/dev/console(终端控制台, 提供标准输入、标准输出以及标准错误)
/dev/null (为空的话就是/dev/null, 所有写到这个文件中的数据都会被丢弃掉。)
(2)init进程的程序(也就是busybox,因为init程序位于busybox中)
(3)/etc/inittab(用于init进程读取配置, 然后执行inittab里的指定应用程序)
(4)应用程序(被inittab配置文件调用的应用程序)
(5)C库(glibc,被应用程序调用的C库函数,比如:printf,strcmp,fopen等)
本节目的:
编译配置busybox (因为制作最小的根文件系统需要init进程,以及运行各种命令等)
1 编译配置busybox
1.1 首先将busybox源码(位于资料光盘/system)放在linux中/work/system下
cd /work/system
tar -xjf busybox-1.7.0.tar.bz2
解压后,cd busybox-1.7.0 进入busybox-1.7.0目录
2 查看busybox-1.7.0/INSTALL文件,让我们知道如何编译配置它,如下图:
得出:
make menuconfig //通过配置菜单配置.config文件
make //编译busybox可执行文件
make install //直接安装,该命令会安装到PC机中,将破坏系统
make CONFIG_PREFIX=/path/from/root install //安装到指定目录/path/from/root下
3 所以首先make menuconfig 配置.config,如下图:
3.1 在Library Tuning(库调整)子菜单中设置按tab键补齐,如下图:
3.2 取消静态连接,如下图:
因为使用库函数glibc时,如果静态编译busybox,会出现很多警告信息:
库函数glibc需要放在/lib目录下
3.3 选择tar命令:
3.4选择insmod/rmod/lsmod命令,支持2.6.x内核:
3.5 支持mdev(并支持medv.conf和热拔插),选择mount/umount命令(并支持NFS文件系统)
3.6 选择ifconfig命令
4 通过make直接编译
make编译后发现有错:
原因是 busybox-1.7.0顶层目录下Makefile没有使用交叉编译”arm-linux-”
在Makefile中添加”arm-linux-”:
然后重新make编译即可
5 安装到指定目录
mkdir -p /work/nfs_root/mini_fs //先创建指定目录
make CONFIG_PREFIX=/work/nfs_root/mini_fs install //安装到指定目录
cd /work/nfs_root/mini_fs 进入安装的目录:
从上图看出共有3个目录和1个linuxrc文件,其中
bin包含用户工具,包括了大部分命令,该子目录下所有文件指向busybox
sbin目录包含操作系统工具,同样也指向busybox。
linuxrc是一个链接文件,指向busybox。
busybox做好后,下一节就开始构建根文件系统
人间有真情,人间有真爱。