]> Zhao Yanbai Git Server - minix.git/commitdiff
setup -> setupcd
authorBen Gras <ben@minix3.org>
Wed, 13 Jul 2005 13:04:56 +0000 (13:04 +0000)
committerBen Gras <ben@minix3.org>
Wed, 13 Jul 2005 13:04:56 +0000 (13:04 +0000)
commands/scripts/Makefile
commands/scripts/setupcd.sh [new file with mode: 0755]
tools/issue.install

index aa948baae49d25d42ea3e09f830ba2e64c24996a..5058ee52f43db0cbbeccd1247376b76aa0b3e8c2 100755 (executable)
@@ -34,6 +34,7 @@ usr:  \
        /usr/bin/mkdep \
        /usr/bin/mkdist \
        /usr/bin/setup \
+       /usr/bin/setupcd \
        /usr/bin/spell \
        /usr/bin/srccrc \
        /usr/bin/svclog \
@@ -101,6 +102,9 @@ clean:
 /usr/bin/mkdist:       mkdist.sh
        install -m 755 -c -o bin $? $@
 
+/usr/bin/setupcd:      setupcd.sh
+       install -m 755 -c -o bin $? $@
+
 /usr/bin/setup:        setup.sh
        install -m 755 -c -o bin $? $@
 
diff --git a/commands/scripts/setupcd.sh b/commands/scripts/setupcd.sh
new file mode 100755 (executable)
index 0000000..271a1c0
--- /dev/null
@@ -0,0 +1,408 @@
+#!/bin/sh
+#
+#      setup 4.1 - install a Minix distribution        Author: Kees J. Bot
+#                                                              20 Dec 1994
+
+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`
+
+# Installing a floppy set?
+case $# in
+0)  # No, we're installing a skeleton system on the hard disk.
+    ;;
+1)
+    cd "$1" || exit
+
+    # Annoying message still there?
+    grep "'setup /usr'" /etc/issue >/dev/null 2>&1 && rm -f /etc/issue
+
+    if [ -t 0 ]
+    then
+       size=bad
+       while [ "$size" = bad ]
+       do
+           echo -n "\
+What is the size of the images on the diskettes? [all] "; read size
+
+           case $size in
+           ''|360|720|1200|1440)
+               ;;
+           *)  echo "Sorry, I don't believe \"$size\", try again." >&2
+               size=bad
+           esac
+       done
+
+       drive=
+       while [ -z "$drive" ]
+       do
+           echo -n "What floppy drive to use? [0] "; read drive
+
+           case $drive in
+           '') drive=0
+               ;;
+           [01])
+               ;;
+           *)  echo "It must be 0 or 1, not \"$drive\"."
+               drive=
+           esac
+       done
+
+       vol -r $size /dev/fd$drive | uncompress | tar xvfp -
+    else
+       # Standard input is where we can get our files from.
+       uncompress | tar xvfp -
+    fi
+
+    echo Done.
+    exit
+    ;;
+*)
+    usage
+esac
+
+# Installing Minix on the hard disk.
+# Must be in / or we can't mount or umount.
+if [ ! -f /CD ]
+then
+       case "`pwd`" in
+       /?*)
+           echo "Please type 'cd /' first, you are locking up `pwd`" >&2       
+           exit 1
+       esac
+fi
+
+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 </etc/mtab                   # Mounted file table.
+read thisroot rest                     # Current root (/dev/ram or /dev/fd?)
+read fdusr rest                                # USR (/dev/fd? or /dev/fd?p2)
+exec 0<&9 9<&-
+
+# What do we know about ROOT?
+case $thisroot:$fdusr in
+/dev/ram:/dev/fd0p2)   fdroot=/dev/fd0         # Combined ROOT+USR in drive 0
+                       ;;
+/dev/ram:/dev/fd1p2)   fdroot=/dev/fd1         # Combined ROOT+USR in drive 1
+                       ;;
+/dev/ram:/dev/fd*)     fdroot=unknown          # ROOT is some other floppy
+                       ;;
+/dev/fd*:/dev/fd*)     fdroot=$thisroot        # ROOT is mounted directly
+                       ;;
+*)                     fdroot=$thisroot        # ?
+    if [ -f /CD ]
+    then
+       :
+    else
+           echo -n "\
+It looks like Minix has been installed on disk already.  Are you sure you
+know what you are doing? [n] "
+           read yn
+           case "$yn" in
+           [yY]*|sure) ;;
+           *)  exit
+           esac
+     fi
+esac
+
+echo -n "\
+This is the Minix installation script.
+
+Note 1: If the screen blanks suddenly then hit CTRL+F3 to select \"software
+       scrolling\".
+
+Note 2: If things go wrong then hit DEL and start over.
+
+Note 3: The installation procedure is described in the manual page
+       usage(8).  It will be hard without it.
+
+Note 4: Some questions have default answers, like this: [y]
+       Simply hit RETURN (or ENTER) if you want to choose that answer.
+
+Note 5: If you see a colon (:) then you should hit RETURN to continue.
+:"
+read ret
+
+echo "
+What type of keyboard do you have?  You can choose one of:
+"
+ls -C /usr/lib/keymaps | sed -e 's/\.map//g' -e 's/^/    /'
+echo -n "
+Keyboard type? [us-std] "; read keymap
+test -n "$keymap" && loadkeys "/usr/lib/keymaps/$keymap.map"
+
+echo -n "
+Minix needs one primary partition of at about 210 MB for a full install
+with sources.  (The full install also fits in about 180 MB, but it
+needs more if fully recompiled.  Add more space to taste.)
+
+  * Minix currently only understands filesystems up to 4GB, so don't make
+    it bigger.
+
+If there is no free space on your disk then you have to back up one of the
+other partitions, shrink, and reinstall.  See the appropriate manuals of the
+the operating systems currently installed.  Restart your Minix installation
+after you have made space.
+
+To make this partition you will be put in the editor \"part\".  Follow the
+advice under the '!' key to make a new partition of type MINIX.  Do not
+touch an existing partition unless you know precisely what you are doing!
+Please note the name of the partition (e.g. c0d0p1, c0d1p3, c1d1p0) you
+make.  (See the devices section in usage(8) on Minix device names.)
+:"
+read ret
+
+primary=
+while [ -z "$primary" ]
+do
+    part || exit
+
+    echo -n "
+Please finish the name of the primary partition you have created:
+(Just type RETURN if you want to rerun \"part\")                   /dev/"
+    read primary
+done
+
+root=${primary}s0
+swap=${primary}s1
+usr=${primary}s2
+
+hex2int()
+{
+    # Translate hexadecimal to integer.
+    local h d i
+
+    h=$1
+    i=0
+    while [ -n "$h" ]
+    do
+       d=$(expr $h : '\(.\)')
+       h=$(expr $h : '.\(.*\)')
+       d=$(expr \( 0123456789ABCDEF : ".*$d" \) - 1)
+       i=$(expr $i \* 16 + $d)
+    done
+    echo $i
+}
+
+# Ask user about networking
+echo ""
+echo "Minix currently supports the Intel Pro/100 and RealTek 8139 "
+echo "Ethernet cards. Please choose: "
+echo ""
+echo "0. No Ethernet card (no networking)"
+echo "1. An Intel Pro/100 Ethernet card is installed"
+echo "2. A Realtek 8139 Ethernet card is installed"
+echo "3. A different Ethernet card is installed (no networking)"
+echo ""
+echo "You can always change your mind after the install."
+echo ""
+echo "Choice? "
+read eth
+driver=""
+inetparams=""
+case "$eth" in
+       1)      driver=FXP;     inetparams="servers=inet;" ;;
+       2)      driver=RTL8139; inetparams="servers=inet;" ;;
+esac
+
+# Compute the amount of memory available to Minix.
+memsize=0
+ifs="$IFS"
+IFS=','
+set -- $(sysenv memory)
+IFS="$ifs"
+
+for mem
+do
+    mem=$(expr $mem : '.*:\(.*\)')
+    memsize=$(expr $memsize + $(hex2int $mem) / 1024)
+done
+
+# Compute an advised swap size.
+swapadv=0
+case `arch` in
+i86)
+    test $memsize -lt 4096 && swapadv=$(expr 4096 - $memsize)
+    ;;
+*)  test $memsize -lt 6144 && swapadv=$(expr 6144 - $memsize)
+esac
+
+echo -n "
+How much swap space would you like?  Swapspace is only needed if this
+system is memory starved, like a 16-bit system with less then 2M, or a
+32-bit system with less then 4M.  Minix swapping isn't very good yet, so
+there is no need for it otherwise.
+                   Size in kilobytes? [$swapadv] "
+swapsize=
+read swapsize
+test -z "$swapsize" && swapsize=$swapadv
+
+echo -n "
+You have created a partition named:    /dev/$primary
+The following subpartitions are about to be created on /dev/$primary:
+
+    Root subpartition: /dev/$root      16 MB
+    Swap subpartition: /dev/$swap      $swapsize kb
+    /usr subpartition: /dev/$usr       rest of $primary
+
+Hit return if everything looks fine, or hit DEL to bail out if you want to
+think it over.  The next step will destroy /dev/$primary.
+:"
+read ret
+                                       # Secondary master bootstrap.
+installboot -m /dev/$primary /usr/mdec/masterboot >/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 /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 /dev/$root || exit
+mount /dev/$root /mnt || exit
+if [ -d /boot ]
+then
+    # Running from the floppy itself (or installation CD).
+    cpdir -vx / /mnt || exit
+    chmod 555 /mnt/usr
+else
+    # Running from the RAM disk, root image is on a floppy.
+    mount $fdroot /root || exit
+    cpdir -v /root /mnt || exit
+    umount $fdroot || exit
+    cpdir -f /dev /mnt/dev             # Copy any extra MAKEDEV'd devices
+fi
+
+# 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
+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; $inetparams; 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 'halt' to exit Minix.
+You can type 'boot $primary' to try the newly installed Minix system.  See
+\"TESTING\" in the usage manual."
+
index 8bb29591cdf7e61005318c32a3056ddeb588705a..ed198800cfd3182ea5558c6c39d95eb8f42f752a 100644 (file)
@@ -1,3 +1,3 @@
 
-Login as root and run 'setup' to install Minix.
+Login as root and run 'setupcd' to install Minix.