现在的位置: 首页 > 综合 > 正文

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

2013年11月17日 ⁄ 综合 ⁄ 共 2588字 ⁄ 字号 评论关闭

    开发平台: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 busybox
	libm.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-type	options	    dump-freq	pass-num
none	    /proc	    proc	defaults    0		0
none	    /sys	    sysfs	defaults    0		0
none 	    /dev/pts	    devpts	defaults    0		0
none	    /dev/shm	    tmpfs	defaults    0		0

    创建rcS文件: 

$ mkdir init.d
$ cd init.d/
$ vi rcS
#!/bin/sh
mount -t tmpfs mdev /dev 

mkdir /dev/pts
mkdir /dev/shm

mount -a

echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -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 3
FS2410# setenv hostname tanglinux
FS2410# setenv serverip 192.168.7.205
FS2410# setenv ipaddr 192.168.7.36
FS2410# setenv gatewayip 192.168.7.1
FS2410# 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:off
FS2410# setenv bootcmd tftp 30800000 uImage\; bootm
FS2410# 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: 200K

Please press Enter to activate this console.

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

抱歉!评论已关闭.