Linux内核启动后,需要挂载根文件系统。本章介绍文件系统的制作过程,并且让开发板通过网络远程挂载nfs系统来验证制作的rootfs。。
文件系统格式
上面不同的文件系统格式,有适合不同的应用场合。nfs rootfs,实际nfs是将服务器端的目录通过网络的形式共享出去,是把服务端文件系统的一部分共享给了客户端。在服务端,我们将rootfs制作好,放在这个目录中,客户端就可以获取到rootfs。没有必要将文件系统格式化成某一种类型,极大地方便了开发调试。
BusyBox
http://www.busybox.net/
BusyBox 是在 GNU GPL 许可协议下发行的开源软件
享有“嵌入式Linux的瑞士军刀”美誉,Erik Andersen先生维护;Busybox是一个UNIX系统工具集,它将很多普通的UNIX工具集成到一个很小的可执行文件中,为普通用户提供大多数常用的命令;
BusyBox常用于制作linux命令
制作方法
参考华清远见提供的资料
$ tar xvf busybox-1.22.1.tar.bz2
$ cd busybox-1.22.1
$ make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
(arm-none-linux-gnueabi-) Cross Compiler prefix 注意 一定要指定交叉编译工具
$ make
$ file busybox 确认编译生成的是 ARM 平台的(显示为ELF 32-bit LSB executable, ARM)
$ make install 安装(默认安装路径为_install)
$ cd _install
$ ls
bin linuxrc sbin usr
$ mkdir dev etc mnt proc var tmp sys root 创建需要的目录
$ cp -a ~/store/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/lib/ .
$ du -mh lib 查看lib库的大小
$ rm lib/*.a 裁剪,删除掉静态库文件
$ arm-none-linux-gnueabi-strip lib 裁剪掉调试信息 not recognized 有些库是不能strip的 忽略掉
$ sudo rm lib/libstdc++* 删除不需要的库,确保所有库大小不超过4M
$ du -mh lib 查看lib库的大小 可能 显示3.4M lib (这里确保小于 8M)
$ cp /nfs/rootfs/etc -rf . 拷入成熟的参考配置
$sudo mknod dev/console c 5 1 必须要有 console设备节点
$ cd /nfs
$ mkdir rootfs
$ cp _install/* /nfs/rootfs –a
$ chmod 777 /nfs/rootfs/
板子上电启动,观察串口输出。
NFS能挂载成功表示根文件系统 内容基本正确