#!/bin/sh

LIBS="ld-2. ld-linux.so.2 libc.so libuuid.so libcom_err.so libe2p.so libext2fs.so libc- libnss_files libnsl"
BINS="gzip mke2fs ash fdisk badblocks cp df"
USRLIBS=""
DEVS="console ram tty2 tty4 zero initctl null tty1 tty3 tty5"
if [ `uname -m | sed 's/sparc64/sparc/'` = "sparc" ]; then
    BINS="$BINS insmod64"
    DEVS="$DEVS openprom"
fi
VIRTBINS="cat lsmod mkdir mknod mount rm umount ln uncpio ls insmod rmmod"  
SILO=silo-0.8.2

SBIN='$1/misc/src/install/install $1/misc/src/installinit/init $1/misc/src/install/install2'

PATH=/sbin:/usr/sbin:$PATH
ROOT=../../..

usage () {
    echo "updramdisk: <imagetree>" 2>&1
    exit 1
}

if [ -z "$1" ]; then
    usage
fi

if [ ! -d "$1/misc/src/install" ]; then
    echo "$1 is not a valid directory" 2>&1
    usage
fi

rm -rf ramdisk/[a-ln-z]*
mkdir -p ramdisk/sbin
mkdir ramdisk/usr
mkdir ramdisk/usr/bin
mkdir ramdisk/dev
mkdir ramdisk/tmp
mkdir ramdisk/proc
mkdir ramdisk/etc
ln -s sbin ramdisk/bin
ln -s ../usr/bin/ash ramdisk/bin/sh

cat > ramdisk/usr/bin/runinstall2 <<EOF
#!/bin/sh

echo '56 100 1024' > /proc/sys/vm/freepages

exec /bin/install2 \$*
EOF
chmod +x ramdisk/usr/bin/runinstall2

for n in $SBIN; do
    file=`eval echo $n`
    cp -f $file ramdisk/sbin
    for one in `basename $file`; do
	strip ramdisk/sbin/$one
    done
done

mkdir ramdisk/lib

for n in $LIBS; do
	cp -a /lib/${n}* ramdisk/lib
done

rm -f ramdisk/lib/ld-linux.so.1
rm -f ramdisk/lib/libc.so.5

for n in $USRLIBS; do
	cp -a /usr/lib/${n}* ramdisk/lib
done

for n in $DEVS; do
	cp -a /dev/$n ramdisk/dev
done

strip ramdisk/lib/*

for n in $BINS; do
	rm -f ramdisk/usr/bin/$n
	cp -af `which $n` ramdisk/usr/bin
done

for n in $VIRTBINS; do
	ln -sf /sbin/install2 ramdisk/usr/bin/$n
done

for n in $ZBINS; do
	rm -f ramdisk/usr/bin/$n
	gzip -9 < `which $n` > ramdisk/usr/bin/$n
	chmod 755 ramdisk/usr/bin/$n
done

mv -f ramdisk/usr/bin/insmod* ramdisk/usr/bin/rmmod ramdisk/bin/

ln -sf /sbin/init ramdisk/linuxrc

cp -f ../install/install1.tr ramdisk/etc
cp -f ../install/install2.tr ramdisk/etc
cp -f fonts.cgz ramdisk/etc
ln -s /proc/mounts ramdisk/etc/mtab

ln -s lib ramdisk/usr/share
rm -rf ramdisk/usr/lib/terminfo
mkdir -p ramdisk/usr/lib/terminfo/l
cp /usr/share/terminfo/l/linux ramdisk/usr/lib/terminfo/l

mkdir -p ramdisk/usr/lib/rpm
cp /usr/lib/rpm/rpmrc ramdisk/usr/lib/rpm/rpmrc

rm -rf $ROOT/lib $ROOT/etc $ROOT/proc $ROOT/tmp $ROOT/sbin $ROOT/bin \
       $ROOT/dev $ROOT/mnt $ROOT/usr $ROOT/boot
mkdir  $ROOT/lib $ROOT/etc $ROOT/proc $ROOT/tmp $ROOT/sbin 	     \
       $ROOT/dev $ROOT/mnt $ROOT/usr $ROOT/boot

cp -a ramdisk/lib/* $ROOT/lib
cp -a cdboot/boot/* $ROOT/boot
cp -a cdboot/etc/* $ROOT/etc
ln -s /tmp/resolv.conf $ROOT/etc/resolv.conf
ln -s /proc/mounts $ROOT/etc/mtab
cp -a ramdisk/sbin/* $ROOT/sbin
ln -s sbin $ROOT/bin
cp -a ramdisk/dev/* $ROOT/dev
cp -a ramdisk/usr/* $ROOT/usr
cp -a $SILO/boot/second.b $ROOT/boot/second.b
cp -a $SILO/boot/cd.b $ROOT/boot/cd.b
elftoaout -o $ROOT/boot/vmlinux-sun4cdm tftp/vml32
gzip -9f $ROOT/boot/vmlinux-sun4cdm
elftoaout -o $ROOT/boot/vmlinux-sun4u tftp/vml64
gzip -9f $ROOT/boot/vmlinux-sun4u
cp -a rescuemod.img $ROOT/boot
