一、下载busybox
http://busybox.net/downloads/busybox-1.19.3.tar.bz2
二、解压busybox源码,修改Makefile
# tar –jxvf busybox-1.19.3.tar.bz2
# cd busybox-1.19.3
# vi Makefile
修改:
CROSS_COMPILE ?= arm-linux-
ARCH ?= arm
三、配置busybox
# make menuconfig
(这里可以选择默认选择:makemenuconfigàexitàYes)
四、编译、安装busybox
# make
# make CONFIG_PREFIX=/home/test/rootfsinstall
完成后会在/home/test/rootfs 目录下生成bin,linuxrc,sbin,usr。
五、构建文件系统
# cd /home/test/rootfs
1、建立一些需要的目录(可以为空):
# mkdir root sys dev etc home lib mnt optproc tmp var
2、构建etc目录
主要创建etc/inittab,etc/init.d/rcS, etc/fstab
1) 创建etc/inittab文件
内容如下:
# /etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount-a –r
2) 创建etc/init.d/rcS文件
内容如下:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevelprevlevel
#
# TrapCTRL-C &c only in this shell so we can interrupt subprocesses.
#
/bin/mount -t procnone /proc
/bin/mount -t tmpfsnone /tmp
/bin/mount -t tmpfsnone /var
/bin/mkdir -p /var/log
/bin/hostname XINSHIJIE
最后改变属性:
# chmod +x etc/init.d/rcS
3) 创建etc/fstab文件
内容如下:
#devicemount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
4) 创建etc/profile文件
内容如下:
# Ash profile
# vim: syntax=sh
# No core files bydefault
#ulimit -S -c 0 >/dev/null 2>&1
USER="`id-un`"
LOGNAME=$USER
PS1='[$USER@$HOSTNAME]/# '
PATH=$PATH:/usr/local/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
HOSTNAME=`/bin/hostname`
export USER LOGNAMEPS1 PATH LD_LIBRARY_PATH
5) 创建etc/passwd文件
root::0:0:root:/:/bin/sh
ftp::14:50:FTPUser:/var/ftp:
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
6) 创建group目录
root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*:5:
disk:*:6:
lp:*:7:lp
mail:*:8:
news:*:9:
uucp:*:10:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floppy:*:25:
tape:*:26:
sudo:*:27:
audio:*:29:
ppp:x:99:
500:x:500:plg
501:x:501:fa
3、构建dev目录
使用mdev构建dev目录
1) 在etc/init.d/rcS文件中加入
/bin/mount -a
mkdir -p /dev/pts
/bin/mount -n -tdevpts none /dev/pts
/bin/mount –t sysfssysfs /sys
echo /sbin/mdev >/proc/sys/kernel/hotplug
/sbin/mdev -s
2) 修改后的etc/fstab文件
#devicemount-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
3) 建立必须的设备文件
mdev构造/dev目录之前,init进程至少要用到/dev/console、/dev/null这两个设备文
所以:
# cd /home/test/rootfs/dev
# mknod console c 5 1
# mknod null c 1 3
4、构建lib目录
程序运行时需要用到一些动态库,例如libc.so.6。
# cp /usr/local/bin/arm-linux-4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so*lib –a
如果还需要一些别的库,如libstdc++.so.6,可以用同样的方法。
……
PS:因为将以上构建的目录和文件进行有压缩后可以通过网络文件系统进行COPY和解压至/dev/mtdblock3得到yaffs2文件系统,所以省去了mkyaffs2image过程。
参考 资料:http://blog.csdn.net/woshixingaaa/article/details/6184885