home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- # Copyright 1993, 1994 Patrick Volkerding, Moorhead, Minnesota USA
- # All rights reserved.
- #
- # Redistribution and use of this script, with or without modification, is
- # permitted provided that the following conditions are met:
- #
- # 1. Redistributions of this script must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- #
- # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #
- # As always, bug reports, suggestions, etc: volkerdi@mhd1.moorhead.msus.edu
- # or bf703@cleveland.freenet.edu, or (if you absolutely must) (218) 233-4349.
- #
- #
- reset
- rm -f /tmp/SeT*
- touch /tmp/SeTcolor
- PATH="$PATH:/usr/lib/setup"
- export PATH;
- PARTLIST="`fdisk -l | fgrep "Linux native"`"
- echo "$PARTLIST" > /tmp/SeTplist
- T_PX="/"
- echo "$T_PX" > /tmp/SeTT_PX
- #DISTRIBUTION_SOURCE="/var/adm/mount"
- #echo "$DISTRIBUTION_SOURCE" > /tmp/SeTDS
- #SOURCE_DEVICE="/dev/fd0"
- # We may want to force the issue...
- # echo "$SOURCE_DEVICE" > /tmp/SeTsource
- ROOT_DEVICE="`mount | fgrep "on / " | cut -b-10`"
- echo "$ROOT_DEVICE" > /tmp/SeTrootdev
- if mount | fgrep /var/adm/mount 1> /dev/null 2> /dev/null ; then # clear source
- umount /var/adm/mount # location
- fi
- #if [ -d /mnt/etc -o /mnt/lost+found ]; then # nothing should be on /mnt here!
- # umount -a 1> /dev/null 2> /dev/null
- # mount /proc /proc -t proc
- #fi
- rm -f /var/adm/mount 2> /dev/null
- rmdir /var/adm/mount 2> /dev/null
- mkdir /var/adm/mount 2> /dev/null
-
- while [ 0 ]; do
- if [ -r /tmp/SeTQUICK ]; then
- QUICK="QUICK"
- else
- QUICK="VERBOSE"
- fi
-
- dialog --title "Slackware Linux Setup (version HD-2.0.0)" --menu "\nWelcome\
- to Slackware Linux Setup.\n\
- \nHint: If you have trouble using the arrow keys on your keyboard,\n\
- you can use '+', '-', and TAB instead. Which option would you like?" 22 74 11 \
- "HELP" "Read the Slackware Setup HELP file" \
- "KEYMAP" "Remap your keyboard" \
- "QUICK" "Choose QUICK or VERBOSE install mode [now: $QUICK]" \
- "MAKE TAGS" "Tagfile customization program" \
- "TARGET" "Select target directory [now: $T_PX]" \
- "SOURCE" "Select source media" \
- "DISK SETS" "Decide which disk sets you wish to install" \
- "INSTALL" "Install selected disk sets" \
- "CONFIGURE" "Reconfigure your Linux system" \
- "PKGTOOL" "Install or remove packages with Pkgtool" \
- "EXIT" "Exit Slackware Linux Setup" 2> /tmp/hdset
- if [ $? = 1 -o $? = 255 ]; then
- rm -f /tmp/hdset /tmp/SeT*
- reset
- exit
- fi
- MAINSELECT="`cat /tmp/hdset`"
- rm /tmp/hdset
-
- # Start checking what to do. Some modules may reset MAINSELECT to run the
- # next item in line.
-
- if [ "$MAINSELECT" = "HELP" ]; then
- SeTHELP
- fi
-
- if [ "$MAINSELECT" = "QUICK" ]; then
- SeTquick
- fi
-
- if [ "$MAINSELECT" = "MAKE TAGS" ]; then
- SeTmaketag
- fi
-
- if [ "$MAINSELECT" = "KEYMAP" ]; then
- SeTkeymap
- if [ -r /tmp/SeTkeymap ]; then
- dialog --title "CONTINUE?" --yesno "We're done with the KEYMAP section, \
- would you like to \
- go on to the SOURCE section?" 7 40
- if [ $? = 0 ]; then
- MAINSELECT="SOURCE"
- fi
- fi
- fi
-
- if [ "$MAINSELECT" = "SOURCE" ]; then
- SeTmedia
- if [ -r /tmp/SeTsource -a ! -r /tmp/SeTSERIES ]; then
- dialog --title "CONTINUE?" --yesno "Now that you've set up your source \
- location, would you like \
- to go on to the DISK SETS section and decide which disk sets you wish to \
- install?" 9 40
- if [ $? = 0 ]; then
- MAINSELECT="DISK SETS"
- fi
- elif [ -r /tmp/SeTsource -a -r /tmp/SeTSERIES ]; then
- dialog --title "CONTINUE?" --yesno "Now that you've indicated \
- your source location and selected \
- the disk sets you want, you may begin the installation process, or you may \
- return to the main menu. Would you like to begin the installation?" 9 50
- if [ $? = 0 ]; then
- MAINSELECT="INSTALL"
- fi
- fi
- fi
-
- if [ "$MAINSELECT" = "TARGET" ]; then
- dialog --title "CHANGE TARGET DIRECTORY?" --yesno "The target \
- directory is the one the packages will be untarred \
- from. In most cases, there is no need to change this from the default \
- value of '/', but if you are installing Slackware Linux into a subdirectory \
- for some reason, then you'll want to change it. It's unlikely that the system \
- will run in a directory other \
- than '/', though. Are you sure you want to change \
- the target directory? " 11 70
- if [ $? = 1 ]; then
- continue;
- fi
- dialog --inputbox "What directory would you like \
- to install Slackware into?" \
- 9 40 2> /tmp/slackdir
- if [ $? = 0 ]; then
- T_PX="`cat /tmp/slackdir`"
- mkdir -p $T_PX
- echo "$T_PX" > /tmp/SeTT_PX
- else
- rm -f /tmp/slackdir
- continue
- fi
- rm -f /tmp/slackdir
- fi
-
- if [ "$MAINSELECT" = "DISK SETS" ]; then
- SeTPKG
- if [ -r /tmp/SeTSERIES -a -r /tmp/SeTsource ]; then
- dialog --title "CONTINUE?" --yesno "Now that you've set up \
- the source location and decided \
- what you want to install, you can go ahead and begin the installation \
- process, or you can go back to the main menu. Do you want to start the INSTALL \
- section and begin installing software?" 10 55
- if [ $? = 0 ]; then
- MAINSELECT="INSTALL"
- fi
- fi
- fi
-
- if [ "$MAINSELECT" = "INSTALL" ]; then
- if [ ! -r /tmp/SeTSERIES -o ! -r /tmp/SeTsource -o ! /tmp/SeTnative ]; then
- dialog --title "CANNOT INSTALL SOFTWARE YET" --msgbox "\
- \n\
- Before you can install software, complete the following tasks:\n\
- \n\
- 1. Select your source media.\n\
- 2. Select which disk sets to install.\n\
- \n\
- You may also optionally remap your keyboard or select a\n\
- different target directory than '/'.\n\
- \n\
- Press ENTER to return to the main menu." 15 68
- continue
- fi
- SERIES="-sets `cat /tmp/SeTSERIES`"
- SOURCE_DEVICE="`cat /tmp/SeTsource`"
- IGNORE_TAGFILES=""
- while [ 0 ]; do
- if [ -r /tmp/SeTQUICK ]; then
- MODE="Normal"
- break;
- fi
- dialog --title "SELECT PROMPTING MODE" --menu "\
- \n\
- Now you must select which type of prompting you would like to\n\
- use while installing your software packages. If you're not\n\
- sure which mode to use, read the help file.\n\n\
- Which type of prompting would you like to use?\
- " 17 70 5 \
- "Normal" "Use the default tagfiles" \
- "Custom" "Use custom tagfiles in the package directories" \
- "Path" "Use tagfiles in the subdirectories of a custom path" \
- "None" "Use no tagfiles - install everything" \
- "HELP" "Read the prompt mode help file" 2> /tmp/SeTpmode
- if [ $? = 1 -o $? = 255 ]; then
- rm -f /tmp/SeTpmode
- exit
- fi
- MODE="`cat /tmp/SeTpmode`"
- rm -f /tmp/SeTtagext
-
- if [ "$MODE" = "Path" ]; then
- dialog --title "PROVIDE A CUSTOM PATH TO YOUR TAGFILES" --inputbox "If \
- you're installing from CD-ROM, it's impossible to edit the tagfiles that are \
- in the package directories. In this case, you might want to provide a path to \
- your custom tagfiles. As an example, you could create a /tagfiles directory \
- and mount a floppy disk containing the tagfiles on that directory. Then you'd \
- enter '/tagfiles' at the prompt below. The setup program will look for your \
- tagfile in SUBDIRECTORIES of the path you provide, such as /tagfiles/a1, \
- /tagfiles/ap1, /tagfiles/d1, and so on. You only need to provide a \
- subdirectory and tagfile for the first disk of each series to be installed. \
- If a custom tagfile is not found at the path you provide, setup will revert to \
- the default tagfiles. Please enter the path to your custom tagfiles:" \
- 20 70 2> /tmp/SeTtagpath
- if [ $? = 1 -o $? = 255 ]; then
- continue
- fi
- if [ -r /tmp/SeTtagpath ]; then
- if [ "`cat /tmp/SeTtagpath`" = "" ]; then
- rm -f /tmp/SeTtagpath
- fi
- fi
- break;
- fi
-
- if [ "$MODE" = "HELP" ]; then
- SeTprHELP
- fi
-
- if [ "$MODE" = "Normal" ]; then
- break;
- fi
-
- if [ "$MODE" = "Custom" ]; then
- dialog --title "ENTER CUSTOM EXTENSION" --inputbox "Now, enter the custom \
- extension you have used for your tagfiles. This must be a valid MS-DOS format \
- file extension consisting of a period followed by three characters. For \
- example, I use '.pat'. You might see my tagfiles on your disks. :^)" \
- 13 60 2> /tmp/SeTtagext
- if [ $? = 1 -o $? = 255 ]; then
- continue
- fi
- if [ -r /tmp/SeTtagext ]; then
- if [ "`cat /tmp/SeTtagext`" = "" ]; then
- rm -f /tmp/SeTtagext
- fi
- fi
- break;
- fi
-
- if [ "$MODE" = "None" ]; then
- dialog --title "WARNING" --yesno "You should be advised that installing \
- *everything* is often a bad plan. If you're just putting the base system in \
- place and planning to install things like X and Emacs a little more \
- selectively from your hard drive later, then there's no problem. Otherwise, \
- if you try to install the whole thing without prompts you will not get as \
- optimal an installation as you might like. Are you sure you want to install \
- without prompts?" 13 60
- if [ ! $? = 0 ]; then
- continue
- fi
- IGNORE_TAGFILES="-ignore_tagfiles"
- break;
- fi
-
- done
-
- if [ "$IGNORE_TAGFILES" = "" ]; then
- dialog --infobox "PROMPT mode selected. Using prompting defaults \
- found in tagfiles along the way." 4 50
- sleep 3
- else
- IGNORE_TAGFILES="-ignore_tagfiles"
- dialog --infobox "PROMPT mode not selected. Installing all the packages \
- on the selected disk sets." 4 50
- sleep 3
- fi
- SOURCE_MOUNTED="`cat /tmp/SeTmount`"
- DISTRIBUTION_SOURCE="`cat /tmp/SeTDS`"
- if [ "$DISTRIBUTION_SOURCE" != "" ]; then
- cpkgtool $SOURCE_MOUNTED $IGNORE_TAGFILES -source_device $SOURCE_DEVICE -source_dir $DISTRIBUTION_SOURCE -target_dir $T_PX $SERIES
- else
- cpkgtool $SOURCE_MOUNTED $IGNORE_TAGFILES -source_device $SOURCE_DEVICE -target_dir $T_PX $SERIES
- fi
- dialog --title "EXTRA CONFIGURATION" --yesno "If you wish, you may \
- now go through the options to reconfigure your hardware, make a \
- bootdisk, and install LILO, and run any other system scripts that \
- have been installed for you, such as the one to configure your \
- timezone, or set up your default baud rate. If you've installed \
- a new kernel image, you should definately go through these steps \
- again. \
- Otherwise, it's up to you. \
- Reconfigure your system? " 12 60
- if [ ! "$?" = "0" ]; then
- continue
- else
- MAINSELECT="CONFIGURE"
- fi
- fi
-
- if [ "$MAINSELECT" = "CONFIGURE" ]; then
- SeTconfig
- fi
-
- if [ "$MAINSELECT" = "PKGTOOL" ]; then
- cpkgtool
- fi
-
- if [ "$MAINSELECT" = "EXIT" ]; then
- rm -f /tmp/SeT*
- reset
- break
- fi
-
- done # end of main loop
-
- rm -f /tmp/tagfile /tmp/SeT*
-
- sync
- if mount | fgrep /var/adm/mount 1> /dev/null 2> /dev/null ; then
- umount /var/adm/mount
- fi
- rm -f /var/adm/mount 2> /dev/null
- rmdir /var/adm/mount 2> /dev/null
- mkdir /var/adm/mount 2> /dev/null
- chmod 755 /var/adm/mount
- if [ -r /tagfile ]; then
- rm -f /tagfile
- fi
- chmod 755 $T_PX
- if [ -d $T_PX/tmp ]; then
- chmod 1777 $T_PX/tmp
- fi
- # end slackware setup script
-