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能挂载成功表示根文件系统 内容基本正确