细说嵌入式Linux文件系统的制作方法(1)(2)
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方面,请大家多注意这两方面。
评论暂时关闭