7。同样/usr/bin下面也是busybox的link
basename dirname env free id logger reset tail tr tty uptime which xargs
awk cut du expr head killall mkfifo sort test traceroute uniq wc whoami yes
上面几乎是最全的link,各个看官可以酌情删减,不过link也不占什么空间!
8。同样/usr/sbin下面放着所有编译完的可执行文件,具体就不多说了
9。非常重要之/lib,务必重视
找到你编译环境的target目录,把需要的lib文件先用strip压縮(非target目录下的,而已编译环境提供的strip),先把最基本的libc, ld等等,必须同样做跟target/lib里面一样的link。
然后根据特定的应用加相应的lib,不要把不用的加进去,lib比较占空间。
10。在/etc下面加上需要的配置文件,最最重要的是rcS
#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/sbin/scripts
UTC=yes
mount -n -t proc proc /proc
mount -n -t ramfs ramfs /tmp
mount -n -t devpts devpts /dev/pts
# build var directories
/bin/mkdir -m 0777 /tmp/var
/bin/mkdir -m 0777 /var/lock
/bin/mkdir -m 0777 /var/log
/bin/mkdir -m 0777 /var/run
/bin/mkdir -m 0777 /var/tmp
#/bin/mkdir -m 0777 /tmp/etc
#/bin/cp -a /usr/etc//etc
#/bin/cp -a /usr/dev//dev/
# loads the NPE ethernet modules into the kernel.
insmod /lib/modules/2.6.13.2/intel/ixp400.ko
# Firmware code for NPE Engine.
cat /etc/IxNpeMicrocode.dat > /dev/ixNpe
insmod /lib/modules/2.6.13.2/intel/ixp400_eth.ko netdev_max_backlog=500
insmod /lib/modules/led.ko
insmod /lib/modules/push_button.ko
下面的具体应用没有再举例加上了,这个是系统init必须的。
其他的情况类似如此了,下面里面给了一个lunksys的GPL项目的target。
四、生成一个ramdisk
#!/bin/sh
MODULE_NAME=ramdisk
RAMPATH=`pwd`
TMPPATH=${RAMPATH}/tmp
SOURCE=${RAMPATH}/../target
if [ ! -d ${TMPPATH} ]
then
mkdir ${TMPPATH}
fi
if [ `whoami` != 'root' ]
then {
echo "You should run the shell as root, Please rerun as a root."
echo "Aborting."
exit 1
}
fi
# Clear in tmp path
rm -rf ${TMPPATH}/tmpmnt
rm -rf ${TMPPATH}/ramrootfs
mkdir ${TMPPATH}/tmpmnt
# Clear the old ramdisk
rm -f ${RAMPATH}/$MODULE_NAME
# Make a temp file which size is suitable
dd if=/dev/zero of=${TMPPATH}/ramrootfs bs=1k count=6144
# Create a ext2 filesystem
mke2fs -F -m 0 -i 2000 ${TMPPATH}/ramrootfs
# Mount it to tmpmnt/
mount -o loop -t ext2 ${TMPPATH}/ramrootfs ${TMPPATH}/tmpmnt
# Copy everything from kernel to this.
cd ${TMPPATH}/tmpmnt
echo ${SOURCE}
cp -av ${SOURCE}/.
cd ${TMPPATH}
# Unmount it the ext2 filesystem
umount ${TMPPATH}/tmpmnt
cat ${TMPPATH}/ramrootfs | gzip -9 > /${RAMPATH}/ramdisk
echo Copying ramdisk image to ${RAMPATH}
sync
这里给出一个自动生成脚本!
五、生成一个cramfs
找到cramfs的toolchain。/mkcramfs -r $(FS1_DIR) $(FS_NAME).1
六、生成一个mksquashfs
找到squashfs的toolchain。/mksquashfs $(FS_DIR) $(FS_NAME) -noappend -be -lzma -no-fragments -noI
做文件系统最困难和最可能出问题的地方是在/lib库和/dev方面,请大家多注意这两方面。