#!/bin/sh
# Copyright (C) 1994,1995,1996 Florian La Roche   All rights reserved.
#
# First read the whole script and check if it will work for you.
# I haven't put in any checks!
#

export PATH=/bin:/usr/bin:/sbin:/usr/sbin
LIBC=5.4.46
KERNEL=2.0.38

DIR=`pwd`
SIZE=2400

cp /lib/libc.so.$LIBC .
strip --strip-unneeded libc.so.$LIBC

dd if=/dev/zero of=/dev/ramdisk bs=1024 count=$SIZE
mke2fs -m 0 -q /dev/ramdisk $SIZE
mount -n -v -t ext2 /dev/ramdisk /mnt || exit 1

cd /mnt || exit 1
chmod 755 . || exit 1
mkdir -p bin sbin dev etc lib/modules/scsi proc usr/bin usr/lib/terminfo/l || exit 1

mknod -m 666 dev/console c 4 0
mknod -m 666 dev/tty1    c 4 1
mknod -m 666 dev/tty     c 5 0

BIN="mount umount cat ls pwd echo"
SBIN="insmod lsmod rmmod"
USRBIN="test"
LIB="libc.so.5"
ETC="ld.so.cache inputrc"

for i in $LIB; do
  cp -dp /lib/$i lib || exit 1
done
cp -dp /lib/ld-linux.so.1.9.11 lib/ld-linux.so.1
for i in $SBIN; do
  cp -pd /sbin/$i sbin || exit 1
done
for i in $BIN; do
  cp -pd /bin/$i bin || exit 1
done
for i in $USRBIN; do
  cp -dp /usr/bin/$i usr/bin || exit 1
done
for i in $ETC; do
  cp -dp /etc/$i etc || exit 1
done

cp -dp /usr/lib/terminfo/l/linux   usr/lib/terminfo/l/
cp -dp /lib/modules/${KERNEL}/scsi/* lib/modules/scsi

cat > linuxrc <<EOF
#! /bin/sh
PATH=/bin:/sbin:/usr/bin
export PATH

test -n "\$debug" && /bin/sh

test -z "\$scsi_host" && exit 0
insmod scsi_mod
insmod sd_mod
insmod \$scsi_host
exit 0
EOF
chmod 755 linuxrc

cat > etc/profile <<EOF
PATH=/bin:/sbin:/usr/bin:/install/bin:/install/sbin:/install/usr/sbin:/install/usr/bin
LD_LIBRARY_PATH=/lib:/install/lib:/install/usr/X11R6/lib
LESSCHARSET=latin1
LESS=-m
LESSKEY=/install/etc/lesskey.bin
export PATH LD_LIBRARY_PATH LESSCHARSET LESS LESSKEY
alias l='ls -la'
alias ..='cd ..'
alias ...='cd ../..'
set -o emacs
EOF

cat > etc/ld.so.conf <<EOF
/install/lib
/install/usr/lib
EOF

cp $DIR/libc.so.$LIBC lib
cp /usr/bin/ksh usr/bin/
test -f $DIR/termcap && cp $DIR/termcap etc/ || cp $DIR/../termcap etc/
ln -s /usr/bin/ksh bin/sh
#ln -fs /usr/bin/ksh linuxrc

sync && sync
df /mnt
cd $DIR || exit 1

umount -n /mnt || exit 1

dd if=/dev/ramdisk of=/boot/initrd-${KERNEL} count=$SIZE bs=1024
ln -sf initrd-${KERNEL} /boot/initrd
rm -f libc.so.$LIBC

echo Ready.
exit 0
