根文件系统的移植

一、根文件系统制作

1、源码下载
        我选择的版本是busybox-1.22.1.tar.bz2,下载地址为:http://busybox.net/downloads/

2、解压源码
$ tar  xvf  busybox-1.22.1.tar.bz2

3、进入源码目录
$ cd  busybox-1.22.1

4、配置源码

在busybox 源码目录下
$ make menuconfig               
Busybox Settings --->
        Build Options --->
            [*] Build BusyBox as a static binary (no shared libs)
            [ ] Force NOMMU build
            [ ] Build with Large File Support (for accessing files > 2 GB)
            (arm-none-linux-gnueabi-) Cross Compiler prefix
            () Additional CFLAGS

5、编译
$ make

6、安装
busybox默认安装路径为源码目录下的_install              
$ make  install

7、进入安装目录下
$ cd  _install
$ ls

可以看到
bin  linuxrc  sbin  usr

8、创建其他需要的目录
$ mkdir  dev  etc  mnt  proc  var  tmp  sys  root 

9、添加库
将工具链中的库拷贝到_install目录下
$cp   /home/farsight/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/lib/    .   -a
删除静态库和共享库文件中的符号表
sudo chmod  777  lib/*
sudo  chmod  777  lib
$ rm  lib/*.a                     //删除lib目录的静态库      
$ arm-none-linux-gnueabi-strip  lib/*               //删除lib目录动态库的调试信息
删除不需要的库,确保所有库大小不超过8M
$ du  -mh   lib/      用这个命令查看库的大小,确保库大小不超过8m

10、添加系统启动文件
在etc下添加文件inittab,文件内容如下:
#this is run first except when booting in single-user mode.
::sysinit:/etc/init.d/rcS
# /bin/sh invocations on selected ttys
# start an "askfirst" shell on the console (whatever that may be)
::askfirst:-/bin/sh
# stuff to do when restarting the init process
::restart:/sbin/init
# stuff to do before rebooting
::ctrlaltdel:/sbin/reboot

在etc下添加文件fstab,文件内容如下:
#device     mount-point      type         options         dump     fsck order
proc     /proc               proc         defaults             0             0
tmpfs    /tmp               tmpfs        defaults             0              0
sysfs       /sys                sysfs        defaults            0              0
tmpfs      /dev               tmpfs        defaults             0              0
    这里我们挂载的文件系统有三个proc、sysfs和tmpfs。在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,我们需要添加tmpfs的支持
修改内核配置(linux-3.14 目录下), 支持虚文件系统(内存型文件系统)
$ make menuconfig
File systems --->
        Pseudo filesystems --->
            [*] Virtual memory file system support (former shm fs)
            [*] Tmpfs POSIX Access Control Lists
重新编译内核( 新的uImage 拷贝到tftp 服务器 文件夹下)
    
    在etc下创建init.d目录,并在init.d下创建rcS文件,rcS文件内容为:
#!/bin/sh
# This is the first script called by init process
/bin/mount  -a
echo  /sbin/mdev  >  /proc/sys/kernel/hotplug
/sbin/mdev  -s
    为rcS添加可执行权限:
$ chmod   +x  init.d/rcS

    在etc下添加profile文件,文件内容为:
#!/bin/sh
export HOSTNAME=farsight
export USER=root
export HOME=root
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH  LD_LIBRARY_PATH
注意:新制作的文件系统尺寸若超出8M,删除不需要的库文件

二、NFS测试

1、删除原先的rootfs 最好改名
$ sudo  mv  rootfs  rootfsold    
2、将我们新建的根文件系统拷贝到/home/farsight/rootfs目录下
$sudo  mkdir  /home/farsight/rootfs 
$ sudo  cp  _install/*   /home/farsight/rootfs   –a
3、设置uboot环境变量
#setenv serverip 192.168.9.120
#setenv ipaddr 192.168.9.233
#setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000
#setenv bootargs root=/dev/nfs nfsroot=192.168.9.120:/home/farsight/rootfs rw console=ttySAC2,115200  init=/linuxrc  ip=192.168.9.233
# saveenv    
    重新启动开发板,查看是否能够正常挂载,功能是否正常

三、制作ramdisk文件系统

通过NFS测试以后,就可以制作ramdisk文件系统了,具体如下:

1、制作一个大小为8M的镜像文件
$ cd  ~
$ dd    if=/dev/zero     of=ramdisk     bs=1k  count=8192   
(ramdisk为8M)
2、格式化这个镜像文件为ext2
$ mkfs.ext2    -F     ramdisk
3、在mount下面创建initrd目录作为挂载点
$ sudo  mkdir   /mnt/initrd
4、将这个磁盘镜像文件挂载到/mnt/initrd下
 注意这里的ramdisk不能存放在rootfs目录中
$ sudo  mount   -t   ext2    ramdisk       /mnt/initrd
5、将我们的文件系统复制到ramdisk中
将测试好的文件系统里的内容全部拷贝到 /mnt/initrd目录下面
$ sudo  cp    /home/farsight/rootfs/*     /mnt/initrd      –a
6、卸载initrd
$ sudo   umount     /mnt/initrd
7、压缩ramdisk为ramdisk.gz并拷贝到/home/farsight/tftpboot下
$ gzip  --best  -c   ramdisk > ramdisk.gz
8、格式化为内核识别的格式
$ mkimage -n "ramdisk" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz  ramdisk.img
$ cp  ramdisk.img  /home/farsight/tftpboot
9、配置内核支持RAMDISK
    制作完 ramdisk.img后,需要配置内核支持RAMDISK作为启动文件系统

linux内核配置   make menuconfig
File systems  --->
        <*> Second extended fs support
Device Drivers
        SCSI device support  --->
            <*> SCSI disk support
        Block devices  --->
            <*>RAM  block  device  support   
            (16)Default number of RAM disks  
            (8192) Default RAM disk size (kbytes)   (修改为8M) 
General setup  --->
        [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

    重新编译内核uImage,复制到/home/farsight/tftpboot
10、在U-BOOT命令行重新设置启动参数:
#setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;tftp 43000000 ramdisk.img\;bootm 41000000 43000000 42000000
# saveenv
重新启动开发板查看能否正常启动,正常则制作根文件系统成功。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值