⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcinitrd

📁 pcmcia source code
💻
字号:
#!/bin/sh## Utility for constructing PCMCIA initrd boot images## Copyright (C) 1999 David A. Hinds -- dahinds@users.sourceforge.net## pcinitrd 1.23 2000/07/25 18:31:31#RELEASE=""ALL=""SIZE=2400MODULES="pcmcia/pcmcia_core.o pcmcia/ds.o"# Things to install when "all" is selectedSOCK="i82365.o tcic.o"BLK="ide_cs.o pcmem_cs.o aha152x_cs.o fdomain_cs.o qlogic_cs.o"MEM="ftl_cs.o memory_cs.o sram_mtd.o iflash2_mtd.o iflash2+_mtd.o"usage(){    echo "usage: $0 [-v] [-a|-all] [-u|--update] [-r|--kernel=kernel-release]" >&2    echo "       [-s|--size=image-size] [-d|--dir=root-dir] <initrd-image> [modules ...]" >&2    exit 1}while [ $# -gt 0 ] ; do    case $1 in    -a|--all)	ALL=y	;;    -d)	ROOT=$2 ; shift	;;    --dir=*)	ROOT=`echo $1 | sed -e 's/^--dir=//'`	;;    -r)	KERNEL=$2 ; shift	;;    --release=*)	KERNEL=`echo $1 | sed -e 's/^--kernel=//'`	;;    -s)	SIZE=$2 ; shift	;;    --size=*)	SIZE=`echo $1 | sed -e 's/^--size=//'`	;;    -u|--update)	UPDATE=y	;;    -v|--verbose)	VERBOSE=--verbose	;;    -*)	usage	exit 1	;;    *)	break	;;    esac    shiftdoneif [ "$KERNEL" = "" ] ; then    KERNEL=`uname -r`fi[ "$VERBOSE" ] && echo "Using version $KERNEL modules"MODDIR=$ROOT/lib/modules/$KERNELif [ $# -lt 1 ] ; then usage ; fiTARGET=$1 ; shiftif [ "$ALL" = "y" ] ; then    for MOD in $SOCK $BLK $MEM ; do	if [ -f $MODDIR/pcmcia/$MOD ] ; then	    MODULES="$MODULES pcmcia/$MOD"	fi    donefiBIN="bin/mount bin/umount sbin/insmod sbin/cardmgr"LIB=`ls $ROOT/lib/libc.so.? | sort | tail -1`ETC="/etc/ld.so.cache /etc/pcmcia/config /etc/pcmcia/config.opts"DEV="/dev/console /dev/null /dev/ram /dev/tty1 /dev/tty2 /dev/tty3 /dev/tty4"LF=`file -bL $LIB`for F in $* ; do    if [ -f $MODDIR/$F ] ; then	MODULES="$MODULES $F"    elif [ -x $ROOT/$F ] ; then	FT=`file -bL $ROOT/$F`	if [ "$FT" = "$LF" ] ; then	    LIB="$LIB $F"	else	    BIN="$BIN $F"	fi    elif [ -b $ROOT/$F -o -c $ROOT/$F ] ; then	DEV="$DEV $F"    elif [ -f $ROOT/$F ] ; then	ETC="$ETC $F"    else	echo "$F not found." 1>&2	exit 1    fidonefail(){    umount $VERBOSE $MNT    rmdir $MNT    exit 1}trap fail SIGTERM SIGINTstrip_cp(){    if [ -d $3 ] ; then	DEST=$3/`basename $2`    else	DEST=$3    fi    strip $1 $VERBOSE -o $DEST $2 | sed -e 's/([^ ]*)//g' || fail}MNT=$ROOT/tmp/initrd.mnt-$$mkdir $VERBOSE $MNT || exit 1if [ "$UPDATE" = "y" ] ; then    if [ -b $TARGET ] ; then	mount $VERBOSE -t ext2 $TARGET $MNT || fail    else	mount $VERBOSE -t ext2 -o loop $TARGET $MNT || fail    fi    strip_cp --strip-all $ROOT/sbin/cardmgr $MNT/sbin || fail    CD=`pwd` ; cd $MNT    for DIR in block misc fs net pcmcia ; do	for MOD in $DIR/*.o ; do	    strip_cp --discard-all $ROOT/lib/modules/$MOD $DIR || fail	done    done    cd $CD    umount $VERBOSE $MNT    rmdir $MNT    exit 0fi[ "$VERBOSE" ] && echo "Creating filesystem on $TARGET"if [ -b $TARGET ] ; then    mke2fs $TARGET $SIZE > /dev/null || fail    mount $VERBOSE -t ext2 $TARGET $MNT || failelse    dd if=$ROOT/dev/zero of=$TARGET bs=1k count=$SIZE    echo "y" | mke2fs $TARGET $SIZE >/dev/null || fail    mount $VERBOSE -t ext2 -o loop $TARGET $MNT || failfirm -rf $MNT/lost+foundfor DIR in bin dev etc lib proc tmp mnt ; do    mkdir $VERBOSE $MNT/$DIR || faildonefor DIR in block misc fs net pcmcia ; do    mkdir $VERBOSE $MNT/lib/$DIR || faildonefor F in $DEV ; do    cp -a $VERBOSE $ROOT/$F $MNT/dev || faildoneif [ -e $ROOT/dev/systty ] ; then    cp -a $VERBOSE $ROOT/dev/systty $MNT/dev || failfifor F in $BIN ; do    strip_cp --strip-all $ROOT/$F $MNT/bindonestrip_cp --strip-all $ROOT/bin/ash $MNT/bin/shfor F in $LIB ; do    strip_cp --strip-debug $ROOT/$F $MNT/libdonecp $VERBOSE $ROOT/lib/ld-linux.so.? $MNT/lib || failfor F in $ETC ; do    cp $VERBOSE $ROOT/$F $MNT/etc || faildonefor F in scsi network ftl ide memory serial ; do    touch $MNT/etc/$F ; chmod +x $MNT/etc/$Fdonefor MOD in $MODULES ; do    strip_cp --strip-debug $MODDIR/$MOD $MNT/lib/$MODdone[ "$VERBOSE" ] && echo "Creating linuxrc startup script"cat > $MNT/linuxrc <<- 'EOF'	#!/bin/sh		# Should be either i82365 or tcic	PCIC=i82365	# Put socket driver timing parameters here	PCIC_OPTS=	# Put pcmcia_core options here	CORE_OPTS=		mount -t proc /proc /proc	echo ""	echo "==== initrd: starting PCMCIA services ===="	echo ""	PC=/lib/pcmcia	insmod $PC/pcmcia_core.o $CORE_OPTS	insmod $PC/$PCIC.o $PCIC_OPTS	insmod $PC/ds.o	if [ "$DEBUG" != "" ] ; then V=-v ; fi	cardmgr $V -q -o -c /etc -m /lib -s /tmp/stab -p /tmp/pid	umount /proc	echo ""		if [ "$DEBUG" != "" ] ; then	    /bin/sh < /dev/console	fiEOFchmod +x $MNT/linuxrc df -P $MNT | awk '/tmp/ { printf "%dK/%dK used\n",$3,$2 }'umount $VERBOSE $MNTrmdir $MNTexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -