开发平台: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=[:][,]
ip=::::::
(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.
然后回车,即可通过串口操作开发板了。