busyBox制作根文件系统
- busybox下载
制作步骤
- 下载
busybox-1.29.1.tar.bz2
. - 解压busybox源码包。
tar -jxvf busybox-1.29.1.tar.bz2
. - 因为我们是要做嵌入式的根文件系统,所以要修改顶层Makefile中的工具链.
- 修改MakeFile 191行的体系结构。 将
ARCH ?= $(SUBARCH)
修改为ARCH ?= arm
。 - 修改MakeFile 164行的交叉编译工具链
CROSS_COMPILE ?= arm-linux-gnueabi-
。 - 如果不想在Makefile中修改,可以在编译的时候使用
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
来指定。
- 修改MakeFile 191行的体系结构。 将
- 使用
make defconfig
对busyBox进行默认配置。 - 使用
make menuconfig
对busyBox进行简单的个人修改。修改内容有下- Setting选项下
- 不要选中 Build static binary (no shared libs)。此选项是用来设置静态编译的,编译完后文件会很大,所以嵌入式中一般不选。
- 修改安装路径。Destination path for ‘make install’。安装路径就是最后根文件系统生成存放的位置。
- 选中vi-style line editing commands。用于起用vi风格的命令行。
- linux Module Utilities选项下
- 不选中 Simplified modutils。
- Linux System Utilities选项下
- 确保选中 mdev(16kb)及它的子选项
- [ * ] mdev (16 kb)
- [ * ] Support /etc/mdev.conf
- [ * ] Support subdirs/symlinks
- [ * ] Support regular expressions substitutions when renaming device
- [ * ] Support command execution at device addition/removal
- [ * ] Support loading of firmware
- [ * ] mdev (16 kb)
- 确保选中 mdev(16kb)及它的子选项
- 保存退出。
- 使用
make
编译。 - 使用
make install
安装。 - 编译完成后就可以在安装目录中看到busyBox制作的根文件系统。此时的根文件系统还需要添加些东西。
- 使用
cd
命令切换到安装目录下。使用ls
命令可以看到这四个文件bin linuxrc sbin usr
. - 添加动态库。
- 创建lib文件夹:
mkdir lib
. - 拷贝交叉编译工具链下xxx/arm-linux-gnueabihf/libc/lib文件夹下的文件到 lib文件夹中。
cp -av xxx/arm-linux-gnueabihf/libc/lib/* lib/
- 创建lib文件夹:
- 完善目录结构
- 添加其他的基本文件夹
mkdir dev etc lib proc sys tmp var
- 添加其他的基本文件夹
- 添加初始化脚本
- 拷贝busyBox文件夹下
examples/bootfloppy/etc/
中的文件到根文件系统的etc目录下。cp -av ~/busybox-1.29.1/examples/bootfloppy/etc/* etc/
- 拷贝busyBox文件夹下
- 使用NFS挂载测试。
- 搭建NFS服务器。将根文件系统作为NFS服务器路径。
- 设置uboot的bootargs参数。
setenv bootargs root=/dev/nfs nfsroot=192.168.1.12:xxx/rootfs rw ip=192.168.1.10:192.168.1.12:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttyPS0,115200
- 启动内核,如果挂载成功就可以使用正常的
ls
、cd
等命令了。如下图:
- Setting选项下
关于技术交流
此处后的文字已经和题目内容无关,可以不看。
qq群:825695030
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。