#!/bin/sh LIBS="libc libext2fs.so libnsl libnss_files libuuid libnss_compat libcom_err libe2p" # chmod could be a VIRTBIN, but the runinstall2 script uses it to set things up BINS="bzip2 mke2fs ash badblocks rm chmod gpm" VIRTBINS="cat lsmod mkdir mknod mount rm umount ln uncpio ls" ZBINS="install2 fdisk" CDLIBS="libc libcom_err libcrypt libdb libdl libe2p libext2fs libm libnsl libnss_compat libnss_dns libnss_files libresolv libtermcap libutil libuuid libproc" CDBINS="ash badblocks bash cp df e2fsck fdisk fsck fsck.ext2 gdb grep gzip ifconfig ldd ln ls mke2fs ping ps route rpm vim wc" CDVIRTBINS="cat chmod lsmod mkdir mknod mount rm umount" PCMCIA_SBINS="cardmgr" MODLINKS="block cdrom misc net scsi" KERNELROOT=/tmp/updsupp.kernel-$$ export PATH=$PATH:/sbin:/usr/sbin usage () { echo "updsupp: [dep]" 2>&1 exit 1 } if [ -z "$1" -o -z "$2" -o -z "$3" ]; then usage fi mkdir -p $KERNELROOT #rpm2cpio $2/kernel-pcmcia-cs-$3.i386.rpm | (cd $KERNELROOT; cpio -id) #rpm2cpio $2/kernel-$3.i386.rpm | (cd $KERNELROOT; cpio -id) if [ ! -d "$1/misc/src/install" ]; then echo "$1 is not a valid directory" 2>&1 usage fi #if [ ! -d "$KERNELROOT/lib/modules/$3/pcmcia" ]; then # echo "$3 is not a valid modules directory" 2>&1 # usage #fi #if [ ! -f "$KERNELROOT/boot/vmlinuz-$3" ]; then # echo "$KERNELROOT/boot/vmlinuz-$3 does not exist" # usage #fi PATH=$1/misc/src/install:/usr/sbin:/usr/bin:/bin:/sbin rm -rf supp rm -rf ../../../RedHat/instimage/lib rm -rf ../../../RedHat/instimage/usr mkdir -p ../../../RedHat/instimage/lib mkdir -p ../../../RedHat/instimage/usr/bin mkdir -p ../../../RedHat/instimage/usr/etc mkdir -p supp/lib mkdir -p supp/usr/bin mkdir -p supp/usr/etc mkdir -p supp/var ln -s ../tmp supp/var/tmp ln -s /tmp supp/lib/modules cp -a /lib/ld-2*.so supp/lib cp -a /lib/ld-linux.so.2* supp/lib cp -a /lib/ld-2*.so ../../../RedHat/instimage/lib cp -a /lib/ld-linux.so.2* ../../../RedHat/instimage/lib for n in $CDLIBS; do (cd /lib; tar cSpf - ${n}[-.]*) | (cd ../../../RedHat/instimage/lib; tar xSpf -) done for n in $LIBS; do # this preserves hard links (cd /lib; tar cSpf - ${n}[-.]*) | (cd supp/lib; tar xSpf -) done (cd supp/lib; file * | grep 'shared object' | cut -d: -f1 | xargs strip) cat > supp/usr/bin/runinstall2 < /sbin/install > /sbin/install2 chmod 755 /sbin/install2 bunzip2 < /usr/bin/install2.bz2 > /sbin/install2 bunzip2 < /usr/bin/fdisk.bz2 > /tmp/fdisk chmod 755 /tmp/fdisk rm /sbin/install ln -sf /sbin/install2 /sbin/insmod ln -sf /sbin/install2 /sbin/rmmod exec /sbin/install2 \$* EOF chmod 755 supp/usr/bin/runinstall2 cat > ../../../RedHat/instimage//usr/bin/runinstall2 < supp/usr/bin/$n.bz2 ln -sf /tmp/$n supp/usr/bin/$n done for n in $CDBINS; do rm -f ../../../RedHat/instimage/usr/bin/$n cp -af `which $n` ../../../RedHat/instimage/usr/bin done ln -sf bash ../../../RedHat/instimage/usr/bin/sh ln -sf gzip ../../../RedHat/instimage/usr/bin/gunzip ln -sf vim ../../../RedHat/instimage/usr/bin/vi for n in $CDVIRTBINS; do ln -sf install2 ../../../RedHat/instimage/usr/bin/$n done cp ../install/install2.tr supp/usr/etc cp ../install/install2.tr ../../../RedHat/instimage/usr/etc if echo $3 | grep -s -e -; then shortname=`echo $3 | sed 's/-.*//'` else shortname=$3 fi rm -rf pcmcia/lib/modules mkdir -p pcmcia/lib/modules/${shortname}/pcmcia mkdir -p pcmcia/etc/pcmcia mkdir -p pcmcia/sbin #cp $KERNELROOT/lib/modules/$3/pcmcia/* pcmcia/lib/modules/${shortname}/pcmcia rm -f pcmcia/etc/pcmcia/* #cp -av $KERNELROOT/etc/pcmcia/* pcmcia/etc/pcmcia # unfotunately, this breaks things # strip --strip-unneeded pcmcia/lib/modules/$2/pcmcia/*.o for n in $MODLINKS; do ln -s /modules pcmcia/lib/modules/${shortname}/$n done (cd pcmcia/lib/modules; ln -s * preferred) #for n in $PCMCIA_SBINS; do # rm -f pcmcia/sbin/$n # cp -af $KERNELROOT/sbin/$n pcmcia/sbin/$n #done rm -rf pcmcia-disk mkdir pcmcia-disk echo "Letting NFS settle down" sleep 5 (cd pcmcia; find . -type f -o -type l | cpio -H crc -o) | gzip -9 > \ pcmcia-disk/pcmcia.cgz mkdir -p pcmcia-disk/lib cp -a /lib/ld-2*.so pcmcia-disk/lib cp -a /lib/ld-linux.so.2* pcmcia-disk/lib (cd /lib; tar cSpf - libc[-.]*) | (cd pcmcia-disk/lib; tar xSpf -) (cd pcmcia-disk/lib; strip *) (cd ../../../RedHat/instimage/; tar cSpf - modules) | (cd supp; tar xSpf -)