制作文件系统之五:基于BusyBox的默认配置来构建文件系统

来源:互联网 发布:安卓数据采集器 编辑:程序博客网 时间:2024/05/08 18:06

    开发平台:Ubuntu11.04

    目 标板:ARM体系结构

    编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载)

 

    1、制作文件系统

    (1)、在$HOME(本文$HOME的值是/home/richard)目录下创建制作文件系统所用的工作目录,并把busybox-1.19.2中生成的文件全部拷贝到此工作目录下: 

$ cd $HOME$ mkdir rootfs$ cd rootfs/$ cp -a busybox-1.19.2/_install/* .

    另外,还要在此工作目录下为文件系统创建必要的目录: 

$ mkdir etc lib sys proc dev

    (2)、从交叉编译工具链中拷贝所需的动态库 

$ cd 4.1.1/arm-linux-gnu/lib$ cp -a libm-2.5.so libm.so libm.so.6 /home/richard/rootfs/lib$ cp -a libc-2.5.so libc.so.6 /home/richard/rootfs/lib/$ cp libgcc_s.so.1 /home/richard/rootfs/lib/

    可在开发板上通过ldd命令获知BusyBox所依赖的动态库。 

/bin # ldd busyboxlibm.so.6 => /lib/libm.so.6 (0x40024000)libc.so.6 => /lib/libc.so.6 (0x400d4000)/lib/ld-linux.so.2 (0x40000000)

    (3)、配置文件系统的etc目录 

$ cd etc/

    创建inittab文件: 

$ vi inittab
::sysinit:/etc/init.d/rcS::askfirst:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/sbin/swapoff -a::shutdown:/bin/umount -a -r::restart:/sbin/init

    注意,/bin/sh前须要添加前缀“-”,否则会提示以下的信息: 

/bin/sh: can't access tty; job control turned off

    创建fstab文件(由mount –a命令所执行): 

$ vi fstab
#device    mount point    fs-typeoptions    dump-freqpass-numnone    /proc    procdefaults    00none    /sys    sysfsdefaults    00none     /dev/pts    devptsdefaults    00none    /dev/shm    tmpfsdefaults    00

    创建rcS文件: 

$ mkdir init.d$ cd init.d/$ vi rcS
#!/bin/shmount -t tmpfs mdev /dev mkdir /dev/ptsmkdir /dev/shmmount -aecho /sbin/mdev > /proc/sys/kernel/hotplugmdev -s
$ chmod +x rcS

    (4)、创建console的设备节点 

$ cd dev/$ sudo mknod console c 5 1

    如果不提前创建console设备节点的话,可能会导致系统无法启动。 

Warning: unable to open an initial console.

    2、在开发板上测试新建的文件系统

    适用于优龙FS2410开发板的u-boot和Linux内核镜像,可以从http://download.csdn.net/detail/npy_lp/3891416上下载。

    (1)、拷贝Linux内核镜像到TFTP服务的共享目录中 

$ sudo cp uImage /tftpboot/

    (2)、配置u-boot环境参数

    关于u-boot环境参数的说明可参考文档:http://www.denx.de/wiki/view/DULG/UBootEnvVariables 

FS2410# setenv bootdelay 3FS2410# setenv hostname tanglinuxFS2410# setenv serverip 192.168.7.205FS2410# setenv ipaddr 192.168.7.36FS2410# setenv gatewayip 192.168.7.1FS2410# setenv bootargs console=ttySAC0,115200 init=/linuxrc root=/dev/nfs nfsroot=192.168.7.205:/home/richard/rootfs ip=192.168.7.36:192.168.7.205:192.168.7.1:255.255.255.0:tanglinux:eth0:offFS2410# setenv bootcmd tftp 30800000 uImage\; bootmFS2410# save

    关于使用NFS文件系统时Linux内核命令行参数(Kernel command line)如何设置的问题,可参考linux-2.6.38.8内核源码中的Documentation/filesystems/nfs/nfsroot.txt文件。

nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>

    (3)、把工作目录添加到NFS服务的配置文件(/etc/exports)中 

$ sudo vi /etc/exports
/home/richard/rootfs *(rw,sync,no_root_squash,no_subtree_check)
$ sudo /etc/init.d/nfs-kernel-server restart

    (4)、系统启动完成后,会提示以下信息: 

VFS: Mounted root (nfs filesystem).Freeing init memory: 200KPlease press Enter to activate this console.

    然后回车,即可通过串口操作开发板了。

原创粉丝点击