📄 mkrootfs.sh
字号:
#!/bin/bash## mkrootfs.sh - creates a root file system## TODO: need to add checks here to verify that busybox, uClibc and bzImage# exist# command-line settable variablesBUSYBOX_DIR=..UCLIBC_DIR=../../uClibcTARGET_DIR=./loopFSSIZE=4000CLEANUP=1MKFS='mkfs.ext2 -F'# don't-touch variablesBASE_DIR=`pwd`while getopts 'b:u:s:t:Cm' optdo case $opt in b) BUSYBOX_DIR=$OPTARG ;; u) UCLIBC_DIR=$OPTARG ;; t) TARGET_DIR=$OPTARG ;; s) FSSIZE=$OPTARG ;; C) CLEANUP=0 ;; m) MKFS='mkfs.minix' ;; *) echo "usage: `basename $0` [-bu]" echo " -b DIR path to busybox direcory (default ..)" echo " -u DIR path to uClibc direcory (default ../../uClibc)" echo " -t DIR path to target direcory (default ./loop)" echo " -s SIZE size of root filesystem in Kbytes (default 4000)" echo " -C don't perform cleanup (umount target dir, gzip rootfs, etc.)" echo " (this allows you to 'chroot loop/ /bin/sh' to test it)" echo " -m use minix filesystem (default is ext2)" exit 1 ;; esacdone# clean up from any previous workmount | grep -q loop[ $? -eq 0 ] && umount $TARGET_DIR[ -d $TARGET_DIR ] && rm -rf $TARGET_DIR/[ -f rootfs ] && rm -f rootfs[ -f rootfs.gz ] && rm -f rootfs.gz# prepare root file system and mount as loopbackdd if=/dev/zero of=rootfs bs=1k count=$FSSIZE$MKFS -i 2000 rootfsmkdir $TARGET_DIRmount -o loop,exec rootfs $TARGET_DIR # must be root# install uClibcmkdir -p $TARGET_DIR/libcd $UCLIBC_DIRmake INSTALL_DIR=cp -a libc.so* $BASE_DIR/$TARGET_DIR/libcp -a uClibc*.so $BASE_DIR/$TARGET_DIR/libcp -a ld.so-1/d-link/ld-linux-uclibc.so* $BASE_DIR/$TARGET_DIR/libcp -a ld.so-1/libdl/libdl.so* $BASE_DIR/$TARGET_DIR/libcp -a crypt/libcrypt.so* $BASE_DIR/$TARGET_DIR/libcd $BASE_DIR# install busybox and componentscd $BUSYBOX_DIRmake distcleanmake CC=$BASE_DIR/$UCLIBC_DIR/extra/gcc-uClibc/i386-uclibc-gccmake CONFIG_PREFIX=$BASE_DIR/$TARGET_DIR installcd $BASE_DIR# make files in /devmkdir $TARGET_DIR/dev./mkdevs.sh $TARGET_DIR/dev# make files in /etccp -a etc $TARGET_DIRln -s /proc/mounts $TARGET_DIR/etc/mtab# other miscellaneous setupmkdir $TARGET_DIR/initrdmkdir $TARGET_DIR/proc# Done. Maybe do cleanup.if [ $CLEANUP -eq 1 ]then umount $TARGET_DIR rmdir $TARGET_DIR gzip -9 rootfsfi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -