#!/bin/sh
checkrm () {
 for j in `eval echo $dirs`;do [ -d "$j" ] && (cd $j;/bin/rm -rf $*);done }

copydir () {
 if [ ! -d $2 ];then /bin/rm -rf $2;fi
 if [ -L $2 -a $1 -ef $2 ];then /bin/rm -f $2;fi
 /bin/mkdir -p $2
 if [ -L $1 -a $1 -ef $2 ];then /bin/rm -f $1;fi
 if [ -d $1 -a ! -L $1 ];then
  echo "Moving /$1 to $2."
  (cd $1;/usr/bin/find . -type f|/usr/bin/cpio -padmu $2)
 fi
 /bin/rm -rf $1 }

imkdir () {
 for i in $*;do if [ ! -d $i ];then /bin/rm -rf $i;fi
 /bin/mkdir -p $i;done }

cd /
rfiles='cp loadkeys mkdir rm sash'
for i in $rfiles;do /mnt/ibin/rm -rf bin/$i
 /mnt/ibin/cp -pM /mnt/ibin/$i bin;done
for i in tmp var/tmp var/log;do if [ -L $i ];then /bin/rm -rf $i;fi;done
for i in backupdirs/{dev,tmp,var{,/{log,tmp}}} dev etc lib mnt sbin \
 usr{,/{bin,lib,sbin}} var{,/{lock,run}}
 do if [ -L $i ];then /bin/rm -rf $i;fi;imkdir $i;done
dirs='lib/elf {opt,usr,usr/local}/lib';checkrm LC1'*' LE2'*' LR2'*' NC2'*' \
 DL1'*' ld-linux.so'*' libtermcap.so
dirs='{,opt,usr,usr/local}/{bin,etc,sbin}';checkrm bash cat cpio dd \
 egrep fdisk fdisk.old find fgrep fsck fsck.ext2 grep gunzip gzip init \
 install.lilo ln mccinstall mkfs mkfs.ext2 mkswap more mount mv ramsize \
 rdev rootflags sleep swapdev swapoff swapon update vidmode zcat
/bin/cp -pM /mnt/ibin/{cpio,gunzip} /usr/bin
dirs='etc sbin {usr,usr/local,opt}/{bin,etc,sbin}';checkrm $rfiles sh
dirs='lib/elf {,opt,usr,usr/local}/lib';checkrm LM1'*' DB1'*' DB1'*' libc.so \
 libcurses.so libext2fs.so libreadline.so libncurses.so libm.so libdbm.so \
 libgdbm.so libdl.so
/bin/rm -rf boot/{boot.b,initrd.gz}
imkdir lib/modules/KVER/{block,scsi} usr/{libexec,share}
/usr/bin/gunzip </mnt/first.tgz|/usr/bin/cpio -imudV -H ustar -E bin/files
(cd lib;/bin/ln -f LD1 LD2;/bin/ln -snf LC2 LC1;/bin/ln -snf LM2 LM1;\
 /bin/ln -snf DL2 DL1;/bin/ln -snf DL2 libdl.so)
(cd usr/lib;/bin/ln -snf ../../lib/LC1 libc.so;/bin/ln -snf ../../LM1 libm.so;\
 /bin/ln -snf ../../lib/LR2 libreadline.so;\
 /bin/ln -snf ../../lib/NC2 libncurses.so; /bin/ln -snf DB2 DB1;\
 /bin/ln -snf libncurses.so libcurses.so;/bin/ln -snf DB1 libgdbm.so;\
 /bin/ln -snf libncurses.so libtermcap.so;/bin/ln -snf libgdbm.so libdbm.so)
/bin/cp -pM /bin/cat /bin/more
/bin/cp -pM /mnt/ibin/f* /mnt/ibin/mk[fs]* sbin
/bin/rm -rf bin/files mnt/*
copydir tmp /backupdirs/tmp
copydir usr/adm /backupdirs/var/log
copydir usr/tmp /backupdirs/var/tmp
copydir var/adm /backupdirs/var/log
copydir var/log /backupdirs/var/log
copydir var/tmp /backupdirs/var/tmp
copydir usr/dict /usr/share/dict
copydir usr/doc /usr/share/doc
copydir usr/man /usr/share/man
ln -snf share/man usr/man
imkdir boot tmp var/{log,tmp}
ln -snf ../var/tmp usr
/bin/mv -f sbin/fdisk{,.old}
/bin/mv -f backupdirs/etc/mtab etc
for i in fstab fswtab;do if [ -f $i ];then /bin/cat $i >>etc/fstab
 /bin/rm -f $i;fi;done
/bin/ln -f bin/sh bin/bash
/bin/ln -f usr/bin/{gunzip,gzip}
/bin/ln -f usr/bin/{gunzip,zcat}
/bin/mv -f /bin/secondinstall etc/init
for i in dev/[^M]*;do /bin/rm -rf backupdirs/$i;done
if [ -f linuxrc.conf ];then
 /bin/mount -n /dev/ram2 /mnt
 /bin/cp -pM mnt/* lib/modules/KVER/scsi
 /bin/mv -f lib/modules/KVER/{scsi,block}/xd.o
 /bin/mv -f lib/modules/KVER/scsi/linuxrc usr/libexec
 /bin/rm -f lib/modules/KVER/scsi/linuxrc.conf
 read dev junk <linuxrc.conf
 echo "Setting up initrd for device $dev."
 for i in mnt/*.o;do [ "$i" = mnt/$dev ] || /bin/rm $i;done
 cat ./dev/zero >mnt/junk 2>/dev/null
 /bin/rm mnt/junk
 echo "It contains `(cd mnt;echo *)`"
 /bin/sash -c 'umount /dev/ram2'
 /bin/dd if=/dev/ram2 of=linuxrc.conf bs=1024 count=CDSIZE
 /sbin/freeramdisk /dev/ram2
 /bin/mv -f linuxrc.conf boot/initrd
 /usr/bin/gzip -9f boot/initrd
fi
/bin/dd if=/dev/urandom of=/etc/random-seed count=1 &>/dev/null
