[daiq]用busybox-1.15.3制作FS2410的文件系统 (2010-01-14 23:15)
分类: BusyBox
目标板(FS2410)------------------------------
CPU: S3C2410X SDRAM: HY57V561620(64MB) FLASH: K9F1208(64MB) NET : CS8900 -------------------------------------------
HOST--------------------------------------- Linux Version: RedHat LINUX 9 CrossCompiler: gcc-3.4.5-glibc-2.3.6 -------------------------------------------
移植步骤 1.建立root fs的文件系统所需的目录和文件。
Mkdir /work/fs2410 Mkdir /work/fs2410/root 在work文件夹中建立基本的目录 [daiq@localhost fs2410]$ tree root 5 root |-- bin |-- boot |-- dev |-- etc |-- home |-- lib | `-- modules |-- makedir |-- mnt | |-- data | |-- etc | |-- jffs2 | |-- temp | `-- yaffs |-- proc |-- root |-- sbin |-- sys |-- tmp |-- usr | |-- bin | |-- lib | `-- sbin `-- var |-- lib |-- lock |-- log |-- run `-- tmp 可以通过以下脚本文件来建立。 [daiq@localhost fs2410]$ vi makedir
运行脚本文件makedir
[daiq@localhost fs2410]$ sh makedir 这样在rootfs目录下就会生成以上列出的文件。 2.准备链接库 (主要是拷贝交叉编译环境下的一些文件)
[daiq@localhost fs2410]$ vi copelibs
3.使用busybox制作系统应用程式 3.1 下载busybox-1.15.3(http://blog./link.php?url=http://www.busybox.net%2F)并解压。
3.2 进入解压后的目录,设置Busybox更改目录下的Makefile文件。更改地方为:
ARCH ?= arm //根据需要设置不同的架构 CROSS_COMPILE ?=/work/cross/toolchain/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu- //就是交叉编译工具 3.3 然后进入下面的工作:
[daiq@localhost busybox-1.15.3]$ make defconfig
[daiq@localhost busybox-1.15.3]$ make menuconfig 在设置过程中要注意的是加载根文件系统的安装路径(Busybox Settings ---> Installation Options ---> BusyBox installation prefix:/work/fs/rootfs) BusyBox Settings ---> Build Options: Build BusyBox as a static binary (no shared libs) : 将BusyBox动态链接或静态连接.(不勾选,动态链接) 选择"Busybox Settings" ==> "Installation Options"选中"[*] Don't use /usr"
选择"Additional CFLAGS"输入如下一行参数(该行参数来源于2.6.30.4内核) -DSYS_ioprio_get=0x90013b -DSYS_ioprio_set=0x90013a -DARPHRD_INFINIBAND=32 -DEV_SW=0x05 -DSW_LID=0x00 Network File Systems --->
<*> NFS file system support [*] Provide NFSv3 client support [*] Provide client support for the NFSv3 ACL protocol extension [*] Provide NFSv4 client support (EXPERIMENTAL) [*] Root file system on NFS 好了退出保存就ok了. [daiq@localhost busybox-1.15.3]$ make
[daiq@localhost busybox-1.15.3]$ file busybox busybox: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3, dynamically linked (uses shared libs), stripped
[daiq@localhost busybox-1.15.3]$ make install 4.以root身份建立节点文件/dev/console, /dev/null [root@localhost rootfs]# mknod -m 600 dev/console c 5 1 [root@localhost rootfs]# mknod -m 666 dev/null c 1 3 5. 为shell加入全局变量文件/etc/profile,内容如下: [daiq@localhost rootfs]$ vi etc/profile
6. 增加初始化文件inittab和fstab [daiq@localhost rootfs]$ vi etc/fstab
[daiq@localhost rootfs]$ vi etc/inittab
7. 增加初始化脚本文件。 [daiq@localhost rootfs]$ mkdir etc/init.d [daiq@localhost rootfs]$ vi etc/init.d/rcS
[daiq@localhost rootfs]$ chmod +x etc/init.d/rcS
8.建立主机名存储文件/etc/host [daiq@localhost rootfs]$ vi etc/host
9.建立文件/etc/mdev.conf,内容为空 [daiq@localhost rootfs]$ vi etc/mdev.conf 10.复制主机/etc/下面的文件passwd, group, shadow文件到/etc [daiq@localhost rootfs]$ su -
[root@localhost rootfs]# cp /etc/group etc/ [root@localhost rootfs]# cp /etc/passwd etc/ [root@localhost rootfs]# cp /etc/shadow etc/ 并修改用户passwd中用户使用的shell名称。FC8上默认的为bash,uboot中只支持ash。 root:x:0:0:root:/root:/bin/bash --> root:x:0:0:root:/root:/bin/ash daiq:x:500:500:daiq:/home/daiq:/bin/bash --> daiq:x:500:500:daiq:/home/daiq:/bin/ash ok,所需要的文件都已经建立ok了 [daiq@localhost rootfs]$ ls etc/ fstab group host init.d inittab mdev.conf passwd profile shadow 11.yaffs文件系统映像的制作 使用mkyaffsimg程序可以把一个目录做成一个yaffs映像文件,然后使用usb下载到 板子上。进入文件系统目录层,使用以下命令。 #mkyaffsimg rootfs rootfs.img (进入yaffs2\utils后 make 可以生成这个工具) 这样就会在该目录下生成rootfs.img映像文件,下载到开发板运行即可。 12.编译linux内核支持文件系统
12.1支持NFS挂载根文件系统
内核支持NFS分区(即编译时在File system中选中[*] Root file system on NFS), 以及支持内核IP_PNP(即编译时在Networking中选中[*] IP: kernel level autoconfiguration)
File systems ---> Network File Systems ---> <*> NFS file system support ## 必选 [*] Provide NFSv3 client support ## 可选 [*] Root file system on NFS ## 必选 Networking ---> [*] Networking support Networking options ---> [*] IP: kernel level autoconfiguration ## 必选 12.2支持cramfs、jffs、yaffs文件系统
在这里不详细说明,请自行参考其他文档资料。
13.uboot启动引导文件系统
13.1支持NFS挂载根文件系统uboot环境变量设置
tftp下载内核NFS挂载根文件系统的串口信息(以供参考):
13.2支持cramfs、jffs、yaffs文件系统uboot环境变量设置 yaffs2:
修改制作yaffs映象文件的工具
在 yaffs 源码中有个 utils 目录,里面是工具 mkyaffsimage 和 mkyaffs2image的源代码,前者用来制作 yaffs1 映象文件,后者用来制作 yaffs2 映象文件。目前 mkyaffsimage 工具只能生成老格式的yaffs1 映象文件,需要修改才能支持新格式。
(1)下载的yaffs2解压出来是这样的一个目录/Development下面有两个文件夹:yaffs yaffs2,我们需要进入yaffs2,然后再进入utils,这个下面有3个文件,我们需要加两个文件,nand-ecc.c yaffs_packedtags1.c ,yaffs_packedtags1.c这个文件是从上一节目录拷贝过来的,nand-ecc.c的原码如下:
在mkyaffsimage.c里边修改原码为:
修改Makefile文件:
MKYAFFSSOURCES = mkyaffsimage.c yaffs_packedtags1.c nand-ecc.c
yaffs_packedtags1.c和nand-ecc.c是我们加上去的
这样我们就可以用make命令来生成工具文件了:mkyaffsimage 和mkyaffs2image
现在我们来制作镜象文件,把目录转到我们文件系统的文件夹上一个目录,我是转到根目录,因为我是在根目录创建了filesystem_install目录,为了方便用mkyaffsimage命令,我们直接把mkyaffsimage拷贝到根目录的bin里边,这样这个命令就可以用了,这样我们就可以用下面的命令来生成镜象文件了:mkyaffsimage filesystem_install (自己命个名字给镜象文件,但是后缀一定是yaffs,比如:myyaffs.yaffs),
这样我们就全部搞定了一个根文件系统yaffs,这样我们就可以下载的板上面去测试,我这样的做的,是完全成功的,在环境变量里边还有设置个变量:bootargs=noinitrd console=ttySAC0 root=/dev/mtdblock2 rootfstype=yaffs到此为止,全部搞定。 附注
第2步中使用到的参数原始定义如下:
(未完待续。。。)
文章参考:
http://blog./u3/108239/showart.php?id=2146079
http://blog./u2/63560/showart_518011.html
http://linux./techdoc/develop/2007/12/05/973747.shtml
|
|