busybox
在配置busybox,在是否选择要静态链接库时,在静态下,busybox中的工具不需要动态链接库,能够直接运行。而用户自己编写的程序如果需要动态链接库,还是依然需要有。
(从可以下载busybox工具)
如果是动态链接库,则busybox和用户自己编写的程序都需要动态链接库。
这里,因为我们以后需要使用自己编写的程序,故选择使用动态链接库。
busybox 要支持mdev、Tab补全功能、insmod模块安装命令、ifconfig命令等。
Busybox Settings
Busybox Library Tuning
Tab completion
然后就是编译、安装。安装的时候一定要跟上路径,不然很有可能破坏电脑的文件系统。
修改Makefile
CROSS_COMPILE ?= arm-linux-
make
make CONFIG_PREFIX=/work/nfs_root/first_fs install
bootargs = noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
构建最小文件系统。
首先创建最基本的设备文件。(/dev/console和/dev/null)。
在pc上查看当前电脑的设备号。
zws@z-pc:/home/jz2440/fsroot$ ls /dev/console -lcrw------- 1 root root 5, 1 10月 22 12:45 /dev/consolezws@z-pc:/home/jz2440/fsroot$ ls /dev/null -lcrw-rw-rw- 1 root root 1, 3 10月 22 12:45 /dev/null
然后在相应的文件夹中创建对应的设备文件。
mkdir dev cd dev/sudo mknod console c 5 1sudo mknod null c 1 3
构造inittab
mkdir etccd etc/touch inittab
console::askfirst:-/bin/sh
构建C库
mkdir libcp 。。。。/arm-linux/lib/*.so* ./ -D
完成最小根文件系统的构建。
使用 mkyaffs2image 制作文件系统。
将文件系统通过tftp下载到开发板板,并写入到nand Flash
tftpboot 30000000 fsroot.yaffs2nand erase rootnand write.yaffs 0x30000000 root $(filesize)
最小文件系统完成。
支持PS命令。
mkdir sys mkdir proc mdkir etc/init.d tocuh etc/init.d/rcS
在inittab中添加
::sysinit:/etc/init.d/rcS
在rcS中添加
mount -a
在etc下新建fstab。 添加
#device mount-point type option dump fsck order proc /proc proc defaults 0 0
使用mdev自动创建设备文件
在fstab中添加
sysfs /sys sysfs defaults 0 0tmpfs /dev tmpfs defaults 0 0
在rcS中添加
mkdir /dev/ptsmount -t devpts devpts /dev/ptsecho /sbin/mdev > /proc/sys/kernel/hotplugmdev -s
到此为止,一个基本的文件系统已经创建完成。
设置启动参数:
set bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
NFS网络文件系统
在UBUNTU的/etc/exports中修改共享的目录路径Document/nfsroot.txt。
set bootargs=root=/dev/nfs rw nfsroot=:/home/zht/rfsys nfsaddrs= : :192.168.1.1:255.255.255.0::eth0:off console=ttySAC0,115200
添加文件系统的命令工具
我们制作的最小根文件系统只有基础的一些功能,比如当我们需要在开发板上执行格式化磁盘命令mkdosfs、磁盘分区命令fdisk 等的命令时会发现我们制作的根文件系统没有这些命令工具,因此我们需要自己添加相应的命令工具。
从http://pkgs.fedoraproject.org/repo/pkgs/dosfstools/网站上下载dosfstools-3.0.16.tar.gz文件,在PC机上进行解压让后通过make CC=arm-linux-gcc进行交叉编译得到mkdosfs文件。将mkdosfs拷贝到开发板的/usr/sbin/目录下即可。