1、文件系统制作的步骤
1)通过busybox工具生成/bin /sbin /linuxrc /usr/bin /usr/sbin
2) 使用交叉编译工具链,构建/lib目录
3)创建其他空目录
4)配置etc目录,并初始化/dev 目录
5)利用工具制作跟文件系统映像文件
2、busybox文件系统制作
2.1busybox源码下载
使用的是韦东山老师所给资料busybox-1.7.0.tar.bz2版本,也可以从http://www.busybox.net/进行下载
看网站最新的有很多版本
2.2编译安装busybox
1)将busybox压缩包放在/work/tools 目录下,进入该目录执行以下命令进行解压缩
“tar xjf busybox-1.7.0.tar.bz2”
2)然后进入busybox-1.7.0目录,执行“make menuconfig”,对各个选项进行配置
3)然后修改busybox的makefile
然后执行“make”命令进行编译。
4)编译完成后,执行“make CONFIG_PREFIX=/work/nfs_root/second_fs/ install”,我自己的文件系统都是放在了/work/nfs_root/second_fs/这个路径里面。
此步一定要注意,不能直接执行“make install”,否则会破坏系统。
5)执行完成后,就可以看到/work/nfs_root/second_fs这个目录里面就有了bin sbin usr lib linuxrc这样的文件夹和文件。
3、创建其他空目录
/lib加载库文件的目录
/etc 初始化所需的配置文件的目录
/dev 初始化后存放设备文件的目录
/proc /mnt /tmp /sys /root 系统启动之后会用到的目录
4、使用glibc库构建跟文件系统
由于开发板上只需要加载器和动态库,所以将glibc库里的库文件拷贝到跟文件系统的/lib目录里面
“cd /work/nfs_root/gcc-3.4.5-glibc-2.3.6/arm-linux/lib”
“cp *.so* /work/nfs_root/second_fs/lib -d”
/*扩展*/
这样库文件就算是加载进去了。
5、配置/etc目录,并初始化/dev目录
5.1配置/etc目录
在/etc目录需要3个文件:/etc/inittab /etc/init.d/rcS /etc/fstab
5.1.1Inittab主要用于设备初始化内容如下所示
5.1.2rcS文件是一个脚本文件,可以添加想自动执行的命令,具体内容如下图所示。在创建完文件之后,需要给文件添加可执行的属性“chmod +x etc/init.d/rcS”
5.1.3fstab用来定义系统支持的文件类型,具体内容如下
5.2/dev目录初始化
5.2.1进入work/nfs_root/second_fs/dev目录,由于使用mdev构造/dev目录,但是mdev是通过init进程来启动的,所以在使用mdev构造/dev目录之前,init进程至少要用到设备文件/dev/consle /dev/null。通过如下命令创建这两个设备文件
“sudo mknod console c 5 1”
“sudo mknod console c 1 3”
当mdev启动后,会自动在/dev目录下创建各种设备文件。
6、yaffs2映像文件和jffs2映像文件的制作
6.1 yaffs2映像文件的制作
6.1.1使用工具
Yaffs源码中有个utils目录,进入到该目录下面
将文件拷贝到/uer/local/bin目录下面
Sudo cp mkyaffs2image /usr/local/bin
Sudo chmod +x /usr/local/bin/myaffs2image
/*扩展*/
6.1.2制作映像文件
进入到以下目录“cd /work/nfs_root”(second_fs也在此根目录下面)
“mkyaffs2image second_fs second_fs.yaffs2”
生成后的文件就可以使用了,使用DWN软件通过USB device进行下载。
6.2jffs2映像文件制作
6.2.1先安装zlib,解压缩设备工具包,然后对工具包源码编译生成mkfs.jffs2这个工具(注意存放的目录是工具目录,上次自己将工具的lib文件放在了开发板根目录下面的lib目录里,并且进行了文件的覆盖,导致系统文件的崩溃,现在都没有能力进行解决)
6.2.2制作映像文件
我使用的制作指令如下,和书上的不一样
“mkfs.jffs2 -n -s 2048 -e 128KiB -d second_fs -o second_fs.jffs2”
6.3根据不同跟文件系统类型需要在uboot启动后,对bootargs选项进行设置。
原来bootargs原来的值为noinitrd root=/dev/mtdblock3 rootfstype=yaffs2 init=/linuxrc console=ttySAC0
设置之后对bootargs进行设置noinitrd root=/dev/nfs nfsroot=192.168.100.3:/work/nfs_root/first_fs ip=192.168.100.17:192.168.100.3:192.168.100.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0