嵌入式系统移植笔记(八) --制作rootfs

2019-07-12 23:08发布

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