#!/bin/sh # # setup 4.1 - install a Minix distribution Author: Kees J. Bot # 20 Dec 1994 LOCALRC=/usr/etc/rc.local PATH=/bin:/usr/bin export PATH usage() { cat >&2 <<'EOF' Usage: setup # Install a skeleton system on the hard disk. setup /usr # Install the rest of the system (binaries or sources). # To install from other things then floppies: urlget http://... | setup /usr # Read from a web site. urlget ftp://... | setup /usr # Read from an FTP site. mtools copy c0d0p0:... - | setup /usr # Read from the C: drive. dosread c0d0p0 ... | setup /usr # Likewise if no mtools. EOF exit 1 } # No options. while getopts '' opt; do usage; done shift `expr $OPTIND - 1` if [ "$USER" != root ] then echo "Please run setup as root." exit 1 fi # Installing Minix on the hard disk. case "$0" in /tmp/*) rm -f "$0" ;; *) cp -p "$0" /tmp/setup exec /tmp/setup esac # Find out what we are running from. exec 9<&0 /dev/null || exit # Partition the primary. p3=0:0 test "$swapsize" -gt 0 && p3=81:`expr $swapsize \* 2` partition /dev/$primary 1 81:32768* $p3 81:0+ || exit if [ "$swapsize" -gt 0 ] then # We must have that swap, now! mkswap -f /dev/$swap || exit mount -s /dev/$swap || exit else # Forget about swap. swap= fi echo " Migrating to disk... " mkfs -B $blocksizebytes /dev/$usr echo "\ Scanning /dev/$usr for bad blocks. (Hit DEL to stop the scan if you are absolutely sure that there can not be any bad blocks. Otherwise just wait.)" trap ': nothing' 2 readall -b /dev/$usr | sh sleep 2 trap 2 mount /dev/$usr /mnt || exit # Mount the intended /usr. cpdir -v /usr /mnt || exit # Copy the usr floppy. umount /dev/$usr || exit # Unmount the intended /usr. umount $fdusr # Unmount the /usr floppy. mount /dev/$usr /usr || exit # A new /usr if [ $fdroot = unknown ] then echo " By now the floppy USR has been copied to /dev/$usr, and it is now in use as /usr. Please insert the installation ROOT floppy in a floppy drive." drive= while [ -z "$drive" ] do echo -n "What floppy drive is it in? [0] "; read drive case $drive in '') drive=0 ;; [01]) ;; *) echo "It must be 0 or 1, not \"$drive\"." drive= esac done fdroot=/dev/fd$drive fi echo " Copying $fdroot to /dev/$root " mkfs -B $blocksizebytes /dev/$root || exit mount /dev/$root /mnt || exit # Running from the installation CD. cpdir -vx / /mnt || exit chmod 555 /mnt/usr # CD remnants that aren't for the installed system rm /mnt/etc/issue /mnt/CD 2>/dev/null # Change /etc/fstab. echo >/mnt/etc/fstab "\ # Poor man's File System Table. root=/dev/$root ${swap:+swap=/dev/$swap} usr=/dev/$usr" # National keyboard map. test -n "$keymap" && cp -p "/usr/lib/keymaps/$keymap.map" /mnt/etc/keymap # Set inet.conf to correct driver if [ -n "$driver" ] then echo "eth0 $driver 0 { default; };" >/mnt/etc/inet.conf echo "$driverargs" >$LOCALRC fi umount /dev/$root || exit # Unmount the new root. # Compute size of the second level file block cache. case `arch` in i86) cache=`expr "0$memsize" - 1024` test $cache -lt 32 && cache=0 test $cache -gt 512 && cache=512 ;; *) cache=`expr "0$memsize" - 2560` test $cache -lt 64 && cache=0 test $cache -gt 1024 && cache=1024 esac echo "Second level file system block cache set to $cache kb." if [ $cache -eq 0 ]; then cache=; else cache="ramsize=$cache"; fi # Make bootable. installboot -d /dev/$root /usr/mdec/bootblock /boot/boot >/dev/null || exit edparams /dev/$root "rootdev=$root; ramimagedev=$root; $cache; main() { echo This is the MINIX 3 boot monitor.; echo MINIX will load in 5 seconds, or press ESC.; trap 5000 boot; menu; }; save" || exit pfile="/usr/src/tools/fdbootparams" echo "Remembering boot parameters in ${pfile}." echo "rootdev=$root; ramimagedev=$root; $cache; save" >$pfile || exit sync echo " Please type 'shutdown' to exit Minix. You can type 'boot $primary' to try the newly installed Minix system. See \"TESTING\" in the usage manual."