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

  1. #!/bin/sh  
  2. export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/sbin/scripts  
  3. UTC=yes 
  4. mount -n -t proc proc /proc  
  5. mount -n -t ramfs ramfs /tmp  
  6. mount -n -t devpts devpts /dev/pts  
  7. # build var directories  
  8. /bin/mkdir -m 0777 /tmp/var  
  9. /bin/mkdir -m 0777 /var/lock  
  10. /bin/mkdir -m 0777 /var/log  
  11. /bin/mkdir -m 0777 /var/run  
  12. /bin/mkdir -m 0777 /var/tmp  
  13. #/bin/mkdir -m 0777 /tmp/etc  
  14. #/bin/cp -a /usr/etc//etc  
  15. #/bin/cp -a /usr/dev//dev/  
  16. # loads the NPE ethernet modules into the kernel.  
  17. insmod /lib/modules/2.6.13.2/intel/ixp400.ko  
  18. # Firmware code for NPE Engine.  
  19. cat /etc/IxNpeMicrocode.dat > /dev/ixNpe  
  20. insmod /lib/modules/2.6.13.2/intel/ixp400_eth.ko netdev_max_backlog=500 
  21. insmod /lib/modules/led.ko  
  22. insmod /lib/modules/push_button.ko 

下面的具体应用没有再举例加上了,这个是系统init必须的。

其他的情况类似如此了,下面里面给了一个lunksys的GPL项目的target。

四、生成一个ramdisk

  1. #!/bin/sh  
  2. MODULE_NAME=ramdisk 
  3. RAMPATH=`pwd`  
  4. TMPPATH=${RAMPATH}/tmp  
  5. SOURCE=${RAMPATH}/../target  
  6. if [ ! -d ${TMPPATH} ]  
  7. then  
  8. mkdir ${TMPPATH}  
  9. fi  
  10. if [ `whoami` != 'root' ]  
  11. then {  
  12. echo "You should run the shell as root, Please rerun as a root."  
  13. echo "Aborting."  
  14. exit 1  
  15. }  
  16. fi  
  17. # Clear in tmp path  
  18. rm -rf ${TMPPATH}/tmpmnt  
  19. rm -rf ${TMPPATH}/ramrootfs  
  20. mkdir ${TMPPATH}/tmpmnt  
  21. # Clear the old ramdisk  
  22. rm -f ${RAMPATH}/$MODULE_NAME  
  23. # Make a temp file which size is suitable  
  24. dd if=/dev/zero of=${TMPPATH}/ramrootfs bs=1k count=6144 
  25. # Create a ext2 filesystem  
  26. mke2fs -F -m 0 -i 2000 ${TMPPATH}/ramrootfs  
  27. # Mount it to tmpmnt/  
  28. mount -o loop -t ext2 ${TMPPATH}/ramrootfs ${TMPPATH}/tmpmnt  
  29. # Copy everything from kernel to this.  
  30. cd ${TMPPATH}/tmpmnt  
  31. echo ${SOURCE}  
  32. cp -av ${SOURCE}/.  
  33. cd ${TMPPATH}  
  34. # Unmount it the ext2 filesystem  
  35. umount ${TMPPATH}/tmpmnt  
  36. cat ${TMPPATH}/ramrootfs | gzip -9 > /${RAMPATH}/ramdisk  
  37. echo Copying ramdisk image to ${RAMPATH}  
  38. 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方面,请大家多注意这两方面。 


相关内容