在busybox的参考文件中控制台是ttySAC0,而在s3c24xx系列器件的串口驱动里采用s3c2410_serialx做为设备名,使用串口0作为控制台,这里使用s3c2410_serialO作为控制台。
4.1.2 创建etc/init.d/rcS文件
rcS文件是一个脚本文件,借助启动脚本可以设置各种程序开机后自动运行,也可进行其他系统设置,这有点类似于Windows系统中的Autobat自动批处理文件。创建的文件内容如下(实际内容可能与此不完全一致):
注意最后还要改变它的属性使它能够执行,执行chmod+x etc/init.d/rcS命令。
4.1.3 创建etc/fstab文件
fstab文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作。创建的代码如下:
文件中各字段的意义如下:1)device:要挂接的设备,如/dev/mtdblockl;2)mount-point:挂接点;3)type:文件系统类型;4)opt-ions:挂接参数,以逗号隔开;5)dump和fsck order:用来决定控制dump、fsck程序的行为。
4.2 用户和组文件的创建
需要在etc目录下增加passwd和group两个文件。首先增加passwd文件,passwd一共由7个字段组成,6个冒号将其隔开。其含义分别为:1)用户名;2)是否有加密口令,x表示有,不填表示无,采用MD5、DES加密;3)用户ID;4)组ID;5)注释字段;6)登录目录;7)所使用的shell程序。
passwd的内容为root:x:0:0:root:/root:/bin/sh
增加group文件,group共由4个字段组成,3个冒号将其隔开。含义分别为:1)组名;2)是否有加密口令,同passwd;3)组ID;4)指向各用户名指针的数组。
/home/work/rootby/etc/group内容如下:
root:x:0:
4.3 构建dev目录
从Linux-2.6.18开始,负责旧版本的设备管理系统devfs已被废除,但新版本的udev是一个基于用户空间的设备管理系统。在内核启动时并不能自动创建设备节点,固需手动创建console和null两个启动过程必须的设备节点。将采用busybox中内置的mdev,一个简化的udev版本。
#mknod dev/console C 5 1
#mknod dev/null C 1 3
如果不创建这两个设备文件,在文件系统启动时会出现错误信息,不能初始化控制台。
4.4 安装glibc库
在开发板上需要加载器和动态库,执行如下几个命令:
$mkdir-p/home/work/rootby/lib
$cd/home/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
$cp*.SO*/home/work/rootby/lib-d
5 制作yaffs2文件系统映像文件
所谓制作文件系统映像文件,就是将一个目录下的所有内容按照一定的格式存放到一个文件中,这个文件可以直接烧写到存储设备上去。
在yaffs源码中有个utils目录,里面有mkyaffsimage和mkyaffs2image的源代码,前者可制作yaffs映像文件,后者制作yaffs2映像文件,将下载的yaffs2解压出来在目录/Development下有两个文件夹:yaffs和yaffs2,进入yaffs2/utils目录,此目录下有3个文件。在加入两个文件:nand-ecc.c和yaffs_packed-tagsl.c,具体文件这里不列出,源码可参见文献。
修改Makefile文件:
加入MKYAFFSSOURCES=mkyaffsimage.c yaffs_packedtagsl.C nand-ecc.c因为yaffs_packedtagsl.c和nand-ecc.c是加上去的。然后执行make命令后生成mkyaffs2image工具,复制此工具到PC机usr/local/bin目录下,利用makyaffs2image工具,执行#mkyaffsimage2 rootby/pyaffs2.img命令可生成文件系统映像文件。执行#gzip-9 pyaffs2.img最终生成嵌入式Linux根文件系统的映像文件为pyaffs2-.img.gz。至此,整个根文件系统就制作完成,最后可以通过上面制作的pyaffs2.img.gz启动整个系统。
6 下载映像文件并执行
以下命令为通过Windows的超级终端工具下载Linux内核映像和根文件系统映像到目标板(基于S3C2440微处理器的开发板)。
#tftp 30008000 zImage/*下载Linux内核映像到目标板内存*/
#fftp 30800000 pyaffs2.img.gz/*下载根文件系统映像到目标板内存*/
#go 30008000/*启动目标板Linux*/
目标板的嵌入式Linux系统启动后在超级终端中显示的结果如图3所示。可见用busybox制作的根文件系统已经正常启动。
7 结束语