一、編譯安裝Busybox
使用mdev機制製作最小根文件系統fs_mini_mdev,建立基本目錄樹:
[root@weijing fs_mini_mdev]# pwd
/work/rootfs/fs_mini_mdev
[root@weijing fs_mini_mdev]# mkdir bin dev etc lib mnt proc sbin sys root tmp usr
[root@weijing fs_mini_mdev]# mkdir mnt/etc
[root@weijing fs_mini_mdev]# mkdir usr/bin usr/sbin usr/lib
[root@weijing fs_mini_mdev]# touch linuxrc
1.配置Busybox
在busybox-1.7.0目錄下"make menuconfig",
see attachments 1—4
2.編譯安裝
修改Makefile文件,使用交叉編譯器;
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
[root@weijing busybox-1.7.0]# make
[root@weijing busybox-1.7.0]# make CONFIG_PREFIX=/work/rootfs/fs_mini_mdev install
see attachments 5
二、使用glibc庫
[root@weijing fs_mini_mdev]# cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
[root@weijing lib]# cp *.so* /work/rootfs/fs_mini_mdev/lib -d
三、構建根文件系統
1.創建 etc/inittab 文件
# /etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
2.創建 etc/init.d/rcS 文件
#!/bin/sh
ifconfig eth0 192.168.1.17
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
改變其屬性:chmod +x etc/init.d/rcS
3.創建 etc/fstab 文件
# device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
4. mdev 是通過 init 進程來啓動的,在使用 mdev 構造 /dev 目錄之前,init 至少要用到設備文件/dev/console、 /dev/null ,所以建立這兩個設備文件。
[root@weijing fs_mini_mdev]# cd dev/
[root@weijing dev]# sudo mknod console c 5 1
[root@weijing dev]# sudo mknod null c 1 3
[root@weijing dev]# ls
console null
[root@weijing dev]#
四、修改製作yaffs映象文件的工具
在 yaffs 源碼中有個 utils 目錄,裏面是工具 mkyaffsimage 和 mkyaffs2image的源代碼,前者用來製作 yaffs1 映象文件,後者用來製作 yaffs2 映象文件。目前 mkyaffsimage 工具只能生成老格式的yaffs1 映象文件,需要修改才能支持新格式。在這裏,直接打上書中補丁即可。
[root@weijing rootfs]# pwd
/work/rootfs
[root@weijing rootfs]# mkyaffsimage fs_mini_mdev fs_mini_mdev.yaffs
燒寫、啓動。
u-boot參數:
bootargs=noinitrd console=ttySAC0,115200 root=/dev/mtdblock2 rootfstype=yaffs
bootcmd=nand read 0x32000000 0x100000 0x200000; bootm 0x32000000
由於我之前製作u-boot 不能向內核傳遞參數(待研究),所以在編譯內核時修改參數:
Kernel command line: noinitrd console=ttySAC0,115200 root=/dev/mtdblock2 rootfs rw
至此,FS2410 上的最小系統構建完畢。