#!/bin/sh # # Copyright 1994, 1998, 1999 Patrick Volkerding, Moorhead, Minnesota USA # Copyright 2002 Slackware Linux, Inc, Concord, CA # 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. # if [ ! $DISPLAY = "" ]; then DCMD="Xdialog --wrap" CMD="rxvt -e " else DCMD="dialog" CMD="" fi TMP=/var/log/setup/tmp CONSOLETYPE=standard if [ "$COLOR" = "" ]; then # Set color menu mode unless we detect that we're on the text.gz disk: if [ ! -r /usr/lib/setup/setup.tty ]; then COLOR=on fi fi if mount | grep xfs 1> /dev/null 2> /dev/null ; then DEFAULT=" --default-item MBR " fi # This is a different 'probe' than the function below. PROBE() { if [ -x /sbin/probe ]; then /sbin/probe -l elif fdisk -l | grep "Disk /dev/ide" 1> /dev/null 2> /dev/null ; then # no devfs yet for devs in /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/hde /dev/hdf /dev/hdg \ /dev/hdh /dev/hdi /dev/hdj /dev/hdk /dev/hdl /dev/hdm /dev/hdn /dev/hdo /dev/hdp \ /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi \ /dev/sdj /dev/sdk /dev/sdl /dev/sdm /dev/sdn /dev/sdo /dev/sdp ; do fdisk -l $devs 2> /dev/null done elif fdisk -l | grep "Disk /dev/scsi" 1> /dev/null 2> /dev/null ; then # no devfs yet for devs in /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/hde /dev/hdf /dev/hdg \ /dev/hdh /dev/hdi /dev/hdj /dev/hdk /dev/hdl /dev/hdm /dev/hdn /dev/hdo /dev/hdp \ /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi \ /dev/sdj /dev/sdk /dev/sdl /dev/sdm /dev/sdn /dev/sdo /dev/sdp ; do fdisk -l $devs 2> /dev/null done elif [ -z "`fdisk -l`" ]; then for devs in /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/hde /dev/hdf /dev/hdg \ /dev/hdh /dev/hdi /dev/hdj /dev/hdk /dev/hdl /dev/hdm /dev/hdn /dev/hdo /dev/hdp \ /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi \ /dev/sdj /dev/sdk /dev/sdl /dev/sdm /dev/sdn /dev/sdo /dev/sdp ; do fdisk -l $devs 2> /dev/null done else # We got output without /dev/ide or /dev/scsi, so it can probably be trusted: fdisk -l 2> /dev/null fi } # Menu to check if we want to use VESA framebuffer support: use_framebuffer() { if cat /proc/devices | grep "29 fb" 1> /dev/null ; then $DCMD --title "CONFIGURE LILO TO USE FRAME BUFFER CONSOLE?" \ --default-item 1024x768x256 \ --menu "Looking at /proc/devices, it seems your kernel has support for \ the Linux frame buffer console. If we enable this in /etc/lilo.conf, it \ will allow more rows and columns of text on the screen and give you a cool \ penguin logo at boot time. However, the frame buffer text console is \ slower than a standard text console. In addition, not every video card \ or monitor supports all of these video modes. Would you like to use the \ frame buffer console, or the standard Linux console?" 0 0 0 \ "standard" "Use the standard Linux console (the safe choice)" \ "640x480x256" "Frame buffer console, 640x480x256" \ "800x600x256" "Frame buffer console, 800x600x256" \ "1024x768x256" "Frame buffer console, 1024x768x256" \ "640x480x32k" "Frame buffer console, 640x480x32k" \ "800x600x32k" "Frame buffer console, 800x600x32k" \ "1024x768x32k" "Frame buffer console, 1024x768x32k" \ "640x480x64k" "Frame buffer console, 640x480x64k" \ "800x600x64k" "Frame buffer console, 800x600x64k" \ "1024x768x64k" "Frame buffer console, 1024x768x64k" \ 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then exit fi # Frame buffer modes above 1024x768 look terrible except # on LCD panels, and 32 bit color is slow. Since we don't # even need to run a framebuffer console to run framebuffer # X anymore, these modes aren't of much real use. # "1280x1024x256" "Frame buffer console, 1280x1024x256" \ # "1600x1200x256" "Frame buffer console, 1600x1200x256" \ # "1280x1024x32k" "Frame buffer console, 1280x1024x32k" \ # "1600x1200x32k" "Frame buffer console, 1600x1200x32k" \ # "1280x1024x64k" "Frame buffer console, 1280x1024x64k" \ # "1600x1200x64k" "Frame buffer console, 1600x1200x64k" \ # "640x480x16m" "Frame buffer console, 640x480x16.8m" \ # "800x600x16m" "Frame buffer console, 800x600x16.8m" \ # "1024x768x16m" "Frame buffer console, 1024x768x16.8m" \ # "1280x1024x16m" "Frame buffer console, 1280x1024x16.8m" \ # "1600x1200x16m" "Frame buffer console, 1600x1200x16.8m" CONSOLETYPE="`cat $TMP/reply`" if [ "$CONSOLETYPE" = "1600x1200x16m" ]; then CONSOLENUM=799 elif [ "$CONSOLETYPE" = "1600x1200x64k" ]; then CONSOLENUM=798 elif [ "$CONSOLETYPE" = "1600x1200x32k" ]; then CONSOLENUM=797 elif [ "$CONSOLETYPE" = "1600x1200x256" ]; then CONSOLENUM=796 elif [ "$CONSOLETYPE" = "1280x1024x16m" ]; then CONSOLENUM=795 elif [ "$CONSOLETYPE" = "1280x1024x64k" ]; then CONSOLENUM=794 elif [ "$CONSOLETYPE" = "1280x1024x32k" ]; then CONSOLENUM=793 elif [ "$CONSOLETYPE" = "1280x1024x256" ]; then CONSOLENUM=775 elif [ "$CONSOLETYPE" = "1024x768x16m" ]; then CONSOLENUM=792 elif [ "$CONSOLETYPE" = "1024x768x64k" ]; then CONSOLENUM=791 elif [ "$CONSOLETYPE" = "1024x768x32k" ]; then CONSOLENUM=790 elif [ "$CONSOLETYPE" = "1024x768x256" ]; then CONSOLENUM=773 elif [ "$CONSOLETYPE" = "800x600x16m" ]; then CONSOLENUM=789 elif [ "$CONSOLETYPE" = "800x600x64k" ]; then CONSOLENUM=788 elif [ "$CONSOLETYPE" = "800x600x32k" ]; then CONSOLENUM=787 elif [ "$CONSOLETYPE" = "800x600x256" ]; then CONSOLENUM=771 elif [ "$CONSOLETYPE" = "640x480x16m" ]; then CONSOLENUM=786 elif [ "$CONSOLETYPE" = "640x480x64k" ]; then CONSOLENUM=785 elif [ "$CONSOLETYPE" = "640x480x32k" ]; then CONSOLENUM=784 elif [ "$CONSOLETYPE" = "640x480x256" ]; then CONSOLENUM=769 fi fi } # This function scans for bootable partitions (making some assumptions along # the way which may or may not be correct, but usually work), and sets up # LILO in either the superblock, or the MBR. simplelilo() { use_framebuffer; $DCMD --title "OPTIONAL LILO append=\"\" LINE" --inputbox \ "Some systems might require extra parameters to be passed to the kernel. \ For example, you might need to tell the kernel to use SCSI emulation \ mode for an IDE/ATAPI CD-RW drive on /dev/hdc, like this: \ \n\ \n\ hdc=ide-scsi \n\ \n\ If you needed to pass parameters to the kernel when you booted the Slackware \ bootdisk, you'll probably want to enter the same ones here. Most \ systems won't require any extra parameters. If you don't need any, just \ hit ENTER to continue.\n\ \n\ " 18 72 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then unset APPEND fi APPEND="`cat $TMP/reply`" if PROBE -l | grep 'OS/2 Boot Manager' 1> /dev/null 2> /dev/null ; then $DCMD --title "OS/2 BOOT MANAGER FOUND" --yesno \ "Your system appears to have Boot Manager, a boot menu system provided \ with OS/2 and Partition Magic. If you like, we can install a very simple \ LILO boot block at the start of your Linux partition. Then, you can \ add the partition to the Boot Manager menu, and you'll be able to use \ Boot Manager to boot Linux. Would you like to install LILO in a Boot \ Manager compatible way?" 11 65 FLAG=$? if [ ! $FLAG = 0 -a ! $FLAG = 1 ]; then exit 1 fi if [ $FLAG = 0 ]; then # yes, use BM if [ -r $T_PX/etc/lilo.conf ]; then mv $T_PX/etc/lilo.conf $T_PX/etc/lilo.conf.orig fi cat << EOF > $T_PX/etc/lilo.conf # LILO configuration file # generated by 'liloconfig' # # Start LILO global section EOF if [ ! "$APPEND" = "" ]; then echo "append=\"$APPEND\"" >> $T_PX/etc/lilo.conf fi cat << EOF >> $T_PX/etc/lilo.conf boot = $ROOT_DEVICE #delay = 5 EOF if [ "$CONSOLETYPE" = "standard" ]; then cat << EOF >> $T_PX/etc/lilo.conf vga = normal EOF else cat << EOF >> $T_PX/etc/lilo.conf # VESA framebuffer at $CONSOLETYPE vga = $CONSOLENUM EOF fi cat << EOF >> $T_PX/etc/lilo.conf # End LILO global section # Linux root partition section image = $KERNEL root = $ROOT_DEVICE label = Linux read-only # End root Linux partition section EOF installcolor; return fi # Use Boot Manager fi # Boot Manager detected # If we got here, we either don't have boot manager or don't want to use it $DCMD --title "SELECT LILO DESTINATION" $DEFAULT --menu \ "LILO can be installed to a variety of places:\n\ \n\ 1. The Master Boot Record of your first hard drive.\n\ You should use this, except you have installed another \n\ boot manager (GRUB, PQMagic boot manager, etc ..)\n\ or another exotic operating system (e.g: Windows NT).\n\ 2. The boot sector of your Linux partition.\n\ This is safer than the first option, but you need to either:\n\ a) make the partition bootable (using fdisk for example)\n\ b) use another boot manager to boot this partition\n\ 3. A formatted floppy disk. Obviously the the safest\n\ \n\ Which option would you like?" \ 22 72 3 \ "MBR" "Install to Master Boot Record (simplest)" \ "Sector" "Install to boot sector (need more manual setting)" \ "Floppy" "Install to a formatted floppy in /dev/fd0 (A:)" \ 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then exit fi TG="`cat $TMP/reply`" rm -r $TMP/reply if [ "$TG" = "MBR" ]; then MBR_TARGET=/dev/sda echo $MBR_TARGET > $TMP/LILOMBR cat /proc/partitions | while read LINE ; do MAJOR="`echo $LINE | cut -f 1 -d ' '`" MINOR="`echo $LINE | cut -f 2 -d ' '`" if [ ! "$MINOR" = "0" -a ! "$MINOR" = "64" ]; then # ingore whole devices to weed out CD drives if [ "$MAJOR" = "3" ]; then MBR_TARGET=/dev/hda echo $MBR_TARGET > $TMP/LILOMBR elif [ "$MAJOR" = "22" -a ! "$MBR_TARGET" = "/dev/hda" ]; then MBR_TARGET=/dev/hdc echo $MBR_TARGET > $TMP/LILOMBR elif [ "$MAJOR" = "33" -a ! "$MBR_TARGET" = "/dev/hda" -a ! "$MBR_TARGET" = "/dev/hdc" ]; then MBR_TARGET=/dev/hde echo $MBR_TARGET > $TMP/LILOMBR elif [ "$MAJOR" = "34" -a ! "$MBR_TARGET" = "/dev/hda" -a ! "$MBR_TARGET" = "/dev/hdc" -a ! "$MBR_TARGET" = "/dev/hde" ]; then MBR_TARGET=/dev/hdg echo $MBR_TARGET > $TMP/LILOMBR fi fi done LILO_TARGET=`cat $TMP/LILOMBR` elif [ "$TG" = "Root" ]; then LILO_TARGET=`echo $ROOT_DEVICE` elif [ "$TG" = "Floppy" ]; then LILO_TARGET="/dev/fd0" fi cat << EOF > $T_PX/boot/boot_message.txt Welcome to the LILO Boot Loader! Please enter the name of the partition you would like to boot at the prompt below. The choices are: EOF cat << EOF > $T_PX/etc/lilo.conf # LILO configuration file # generated by 'liloconfig' # # Start LILO global section EOF if [ ! "$APPEND" = "" ]; then echo "append=\"$APPEND\"" >> $T_PX/etc/lilo.conf fi cat << EOF >> $T_PX/etc/lilo.conf boot = $LILO_TARGET message = /boot/boot_message.txt prompt timeout = 1200 # Override dangerous defaults that rewrite the partition table: change-rules reset EOF if [ "$CONSOLETYPE" = "standard" ]; then cat << EOF >> $T_PX/etc/lilo.conf # Normal VGA console vga = normal # VESA framebuffer console @ 1024x768x64k # vga=791 # VESA framebuffer console @ 1024x768x32k # vga=790 # VESA framebuffer console @ 1024x768x256 # vga=773 # VESA framebuffer console @ 800x600x64k # vga=788 # VESA framebuffer console @ 800x600x32k # vga=787 # VESA framebuffer console @ 800x600x256 # vga=771 # VESA framebuffer console @ 640x480x64k # vga=785 # VESA framebuffer console @ 640x480x32k # vga=784 # VESA framebuffer console @ 640x480x256 # vga=769 EOF else cat << EOF >> $T_PX/etc/lilo.conf # VESA framebuffer console @ $CONSOLETYPE vga = $CONSOLENUM # Normal VGA console # vga = normal # VESA framebuffer console @ 1024x768x64k # vga=791 # VESA framebuffer console @ 1024x768x32k # vga=790 # VESA framebuffer console @ 1024x768x256 # vga=773 # VESA framebuffer console @ 800x600x64k # vga=788 # VESA framebuffer console @ 800x600x32k # vga=787 # VESA framebuffer console @ 800x600x256 # vga=771 # VESA framebuffer console @ 640x480x64k # vga=785 # VESA framebuffer console @ 640x480x32k # vga=784 # VESA framebuffer console @ 640x480x256 # vga=769 default = Linux EOF fi cat << EOF >> $T_PX/etc/lilo.conf # End LILO global section EOF # OK, now let's look for DOS partitions: DOSP="`PROBE -l | grep "DOS Win FAT12 FAT16 HPFS" | grep -v "Ext'd" | grep -v "Extend" | sort`" DOSP="`echo $DOSP | cut -f 1 -d ' '`" if [ ! "$DOSP" = "" ]; then TABLE="`echo $DOSP | cut -b1-8`" cat << EOF >> $T_PX/etc/lilo.conf # DOS bootable partition config begins other = $DOSP label = DOS table = $TABLE # DOS bootable partition config ends EOF echo "DOS - DOS or Windows (FAT/FAT32 partition)" >> $T_PX/boot/boot_message.txt fi # Next, we search for Linux partitions: LNXP="`PROBE -l | grep "Linux$"`" LNXP="`echo $LNXP | cut -f 1 -d ' ' | sort`" if [ ! "$LNXP" = "" ]; then cat << EOF >> $T_PX/etc/lilo.conf # Linux bootable partition config begins image = $KERNEL root = $ROOT_DEVICE label = Linux read-only # Linux bootable partition config ends EOF echo "Linux - Linux (Linux native partition)" >> $T_PX/boot/boot_message.txt fi # OK, hopefully we can remember how to deal with OS/2 :^) OS2P="`PROBE -l | grep "HPFS"`" OS2P="`echo $OS2P | cut -f 1 -d ' ' | sort`" if [ ! "$OS2P" = "" ]; then TABLE="`echo $OS2P | cut -b1-8`" if [ "$TABLE" = "/dev/hda" ]; then cat << EOF >> $T_PX/etc/lilo.conf # OS/2 bootable partition config begins other = $OS2P label = OS2 table = $TABLE # OS/2 bootable partition config ends EOF else cat << EOF >> $T_PX/etc/lilo.conf # OS/2 bootable partition config begins other = $OS2P label = OS2 table = $TABLE loader = /boot/os2_d.b # map-drive = 0x80 # to = 0x81 # map-drive = 0x81 # to = 0x80 # OS/2 bootable partition config ends EOF echo "OS2 - OS/2 Warp (HPFS partition)" >> $T_PX/boot/boot_message.txt fi fi echo >> $T_PX/boot/boot_message.txt # Add TEXT MODE cat << EOF >> $T_PX/etc/lilo.conf # Linux TUI mode image = $KERNEL root = $ROOT_DEVICE label = Linux-gui append = "5" read-only # End root Linux Text Mode EOF echo "Linux-gui - Linux directly into GUI mode" >> $T_PX/boot/boot_message.txt # Add GUI Mode cat << EOF >> $T_PX/etc/lilo.conf # Linux GUI mode image = $KERNEL root = $ROOT_DEVICE label = Linux-tui append = "2" read-only # End root Linux GUI EOF echo "Linux-tui - Linux directly into Text mode" >> $T_PX/boot/boot_message.txt # Add failsave cat << EOF >> $T_PX/etc/lilo.conf # Linux Single image = $KERNEL root = $ROOT_DEVICE label = failsafe append = "single" vga = normal read-only # End root Linux Text Mode EOF echo "failsafe - Linux maintenance mode" >> $T_PX/boot/boot_message.txt # Done, now we must install lilo: installcolor; } checkp_text() { if [ ! -r $1 ]; then echo echo "I can't find a device named '$1'!" echo echo -n "Are you sure you want to use this device name [y]es, [n]o? " read use_device; if [ ! "$use_device" = "y" ]; then return 1; fi return 0; fi } checkp_dialog() { if [ ! -r $1 ]; then $DCMD --title "DEVICE FILE NOT FOUND" --yesno "I can't find a \ device named '$1'. Are you sure you want to use this device \ name?" 7 60 return $?; fi } installcolor() { $DCMD --infobox "\nInstalling the Linux Loader..." 5 40 if [ "$T_PX" = "/" ]; then lilo 1> /dev/null 2> /dev/null SUCCESS=$? else lilo -r $T_PX -m /boot/map -C /etc/lilo.conf 1> /dev/null 2> /dev/null SUCCESS=$? fi if [ ! "$SUCCESS" = "0" ]; then # edit file to try lba32 mode: cat $T_PX/etc/lilo.conf | while read line ; do echo $line if [ "$line" = "# Start LILO global section" ] ; then echo "lba32 # Allow booting past 1024th cylinder with a recent BIOS" fi done > $T_PX/etc/lilo.conf.lba32 mv $T_PX/etc/lilo.conf.lba32 $T_PX/etc/lilo.conf if [ "$T_PX" = "/" ]; then lilo 1> /dev/null 2> /dev/null SUCCESS=$? else lilo -r $T_PX -m /boot/map -C /etc/lilo.conf 1> /dev/null 2> /dev/null SUCCESS=$? fi fi if [ ! "$SUCCESS" = "0" ]; then # some LILO error occured $DCMD --title "LILO INSTALL ERROR # $SUCCESS" --msgbox \ "Sorry, but the attempt to install LILO has returned an error, so LILO \ has not been correctly installed. You'll have to use a bootdisk \ to start your \ machine instead. It should still be possible to get LILO working by \ editing the /etc/lilo.conf and reinstalling LILO manually. See the \ LILO man page and documentation in /usr/doc/lilo/ for more help." 11 60 fi } installtext() { echo "Installing the Linux Loader..." if [ "$T_PX" = "/" ]; then lilo SUCCESS=$? else lilo -r $T_PX -m /boot/map -C /etc/lilo.conf SUCCESS=$? fi if [ ! "$SUCCESS" = "0" ]; then # try lba32 mode: cat $T_PX/etc/lilo.conf | while read line ; do echo $line if [ "$line" = "# Start LILO global section" ] ; then echo "lba32 # Allow booting past 1024th cylinder with a recent BIOS" fi done > $T_PX/etc/lilo.conf.lba32 mv $T_PX/etc/lilo.conf.lba32 $T_PX/etc/lilo.conf if [ "$T_PX" = "/" ]; then lilo 1> /dev/null 2> /dev/null SUCCESS=$? else lilo -r $T_PX -m /boot/map -C /etc/lilo.conf 1> /dev/null 2> /dev/null SUCCESS=$? fi fi if [ ! "$SUCCESS" = "0" ]; then # some LILO error occured cat << EOF LILO INSTALL ERROR # $SUCCESS Sorry, but the attempt to install LILO has returned an error, so LILO has not been correctly installed. You'll have to use a bootdisk to start your machine instead. It should still be possible to get LILO working by editing the /etc/lilo.conf and reinstalling LILO manually. See the LILO man page and documentation in /usr/doc/lilo/ for more help. EOF fi } # 'probe()' borrowed from LILO QuickInst. probe() { [ ! -z "`dd if=$1 bs=1 count=1 2>/dev/null | tr '\0' x`" ] return } echo HI # liloconfig-color? if [ "`basename $0`" = "liloconfig-color" ]; then COLOR=on fi # Figure out if we're installing from the hard drive if [ -r $TMP/SeTT_PX ]; then T_PX="`cat $TMP/SeTT_PX`" else if [ "$T_PX" = "" -a ! "$1" = "" ]; then T_PX=$1 else T_PX=/ fi fi HDR="no" # this means the header section of /etc/lilo.conf has not yet # been configured LNX="no" # this means no Linux partition has been defined as bootable # through LILO. Both of these must change to "yes" before LILO will # install from this script. # Determine the root partition (such as /dev/hda2) ROOT_DEVICE=$2 if [ "$ROOT_DEVICE" = "" ]; then if [ -r $TMP/SeTrootdev ]; then ROOT_DEVICE="`cat $TMP/SeTrootdev`" else ROOT_DEVICE="`mount | cut -f 1 -d " " | sed -n "1 p"`" fi fi # Figure out where the kernel is: if [ -r $T_PX/vmlinuz ]; then KERNEL=/vmlinuz elif [ -r $T_PX/boot/vmlinuz ]; then KERNEL=/boot/vmlinuz else exit 99 # no kernel? guess you couldn't read. bye bye. fi if [ -r $TMP/SeTcolor -o "$COLOR" = "on" ]; then # use color menus, otherwise tty # If we're installing from the umsdos.gz rootdisk, suggest skipping LILO: if [ ! "$T_PX" = "/" ]; then if mount | grep " on /mnt " | grep umsdos 1> /dev/null 2> /dev/null ; then $DCMD --title "SKIP LILO CONFIGURATION? (RECOMMENDED)" --yesno "Since \ you are installing to a FAT partition, it's suggested that you do not \ configure LILO at this time. (Instead, use your bootdisk. For booting \ off the hard drive from MS-DOS, you can use Loadlin. You'll find \ Loadlin on your hard drive in \LINUX\ROOT) Skip LILO configuration \ (highly recommended)?" 10 70 if [ $? = 0 ]; then exit fi fi fi # OK, now let's see if we should automate things: $DCMD --title "INSTALL LILO" --menu "LILO (Linux Loader) is a generic \ boot loader. There's a simple installation which tries to automatically \ set up LILO to boot Linux (also DOS, Windows, and OS/2 if found). For \ more advanced users, the expert option offers more control over the \ installation process. Since LILO does not work in all cases (and can \ damage partitions if incorrectly installed), there's the third (safe) \ option, which is to skip installing LILO for now. You can always install \ it later with the 'liloconfig' command. Which option would you like?" \ 18 67 3 \ "simple" "Try to install LILO automatically" \ "expert" "Use expert lilo.conf setup menu" \ "skip" "Do not install LILO" 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then exit fi REPLY="`cat $TMP/reply`" rm -f $TMP/reply if [ "$REPLY" = "skip" ]; then exit elif [ "$REPLY" = "simple" ]; then # Do simple LILO setup simplelilo exit fi # drop through to last option: (use the expert menus) while [ 0 ]; do $DCMD --title "EXPERT LILO INSTALLATION" --menu \ "This menu directs the creation of the LILO config file, lilo.conf. \ To install, you make a new LILO configuration file by creating a new header \ and then adding one or more bootable partitions to the file. Once you've done \ this, you can select the install option. Alternately, if you already have an \ /etc/lilo.conf, you may reinstall using that. If you make a mistake, you can \ always start over by choosing 'Begin'. \ Which option would you like?" 22 73 9 \ "Begin" "Start LILO configuration with a new LILO header" \ "Linux" "Add a Linux partition to the LILO config file" \ "OS/2" "Add an OS/2 partition to the LILO config file" \ "DOS" "Add a DOS partition to the LILO config file" \ "Install" "Install LILO" \ "Recycle" "Reinstall LILO using the existing lilo.conf" \ "Skip" "Skip LILO installation and exit this menu" \ "View" "View your current /etc/lilo.conf" \ "Help" "Read the Linux Loader HELP file" 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then REPLY="Skip" else REPLY="`cat $TMP/reply`" fi rm -r $TMP/reply if [ "$REPLY" = "Begin" ]; then $DCMD --title "OPTIONAL LILO append=\"\" LINE" --inputbox \ "Some systems might require extra parameters to be passed to the kernel. \ For example, you might need to tell the kernel to use SCSI emulation \ mode for an IDE/ATAPI CD-RW drive on /dev/hdc, like this: \ \n\ \n\ hdc=ide-scsi \n\ \n\ If you needed to pass parameters to the kernel when you booted the Slackware \ bootdisk, you'll probably want to enter the same ones here. Most \ systems won't require any extra parameters. If you don't need any, just \ hit ENTER to continue.\n\ \n\ " 18 72 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then HDR="no" continue; else APPEND="`cat $TMP/reply`" fi use_framebuffer; $DCMD --title "SELECT LILO TARGET LOCATION" $DEFAULT --menu "LILO can be installed \ to a variety of places: the master boot record of your first hard drive, \ the superblock of your root Linux partition (which could then be made the \ bootable partition with fdisk), a formatted floppy disk, \ or the master boot record of your first hard drive. If you're using \ a boot system such as OS/2's Boot Manager, you should use the "Root" \ selection. Please pick a target location:" 16 65 3 \ "Root" "Install to superblock (not for use with XFS)" \ "Floppy" "Use a formatted floppy disk in the boot drive" \ "MBR" "Use the Master Boot Record (possibly unsafe)" \ 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then HDR="no" continue; else LNX="no" TG="`cat $TMP/reply`" fi rm -r $TMP/reply if [ "$TG" = "MBR" ]; then MBR_TARGET=/dev/sda echo $MBR_TARGET > $TMP/LILOMBR cat /proc/partitions | while read LINE ; do MAJOR="`echo $LINE | cut -f 1 -d ' '`" MINOR="`echo $LINE | cut -f 2 -d ' '`" if [ ! "$MINOR" = "0" -a ! "$MINOR" = "64" ]; then # ingore whole devices to weed out CD drives if [ "$MAJOR" = "3" ]; then MBR_TARGET=/dev/hda echo $MBR_TARGET > $TMP/LILOMBR elif [ "$MAJOR" = "22" -a ! "$MBR_TARGET" = "/dev/hda" ]; then MBR_TARGET=/dev/hdc echo $MBR_TARGET > $TMP/LILOMBR elif [ "$MAJOR" = "33" -a ! "$MBR_TARGET" = "/dev/hda" -a ! "$MBR_TARGET" = "/dev/hdc" ]; then MBR_TARGET=/dev/hde echo $MBR_TARGET > $TMP/LILOMBR elif [ "$MAJOR" = "34" -a ! "$MBR_TARGET" = "/dev/hda" -a ! "$MBR_TARGET" = "/dev/hdc" -a ! "$MBR_TARGET" = "/dev/hde" ]; then MBR_TARGET=/dev/hdg echo $MBR_TARGET > $TMP/LILOMBR fi fi done LILO_TARGET=`cat $TMP/LILOMBR` elif [ "$TG" = "Root" ]; then LILO_TARGET=`echo $ROOT_DEVICE` # Here, we use the partition superblock for OS/2 Boot Manager elif [ "$TG" = "Floppy" ]; then LILO_TARGET="/dev/fd0" else HDR="no" continue; fi $DCMD --title "CHOOSE LILO TIMEOUT" --menu "At boot time, how long would \ you like LILO to wait for you to select an operating system? If you \ let LILO time out, it will boot the first OS in the configuration file by \ default." 13 72 4 \ "None" "Don't wait at all - boot straight into the first OS" \ "5" "5 seconds" \ "30" "30 seconds" \ "Forever" "Present a prompt and wait until a choice is made" 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then HDR="no" continue; else TIMEOUT="`cat $TMP/reply`" fi rm -r $TMP/reply if [ "$TIMEOUT" = "None" ]; then PROMPT="#prompt" TIMEOUT="#timeout = 5" elif [ "$TIMEOUT" = "5" ]; then PROMPT="prompt" TIMEOUT="timeout = 50" elif [ "$TIMEOUT" = "30" ]; then PROMPT="prompt" TIMEOUT="timeout = 300" elif [ "$TIMEOUT" = "Forever" ]; then PROMPT="prompt" TIMEOUT="#timeout = 300" else HDR="no" continue; fi if [ "$APPEND" = "" ]; then cat << EOF > $TMP/lilo.conf # LILO configuration file # generated by 'liloconfig' # # Start LILO global section boot = $LILO_TARGET #compact # faster, but won't work on all systems. $PROMPT $TIMEOUT EOF if [ "$CONSOLETYPE" = "standard" ]; then cat << EOF >> $TMP/lilo.conf # Normal VGA console vga = normal # VESA framebuffer console @ 1024x768x64k # vga=791 # VESA framebuffer console @ 1024x768x32k # vga=790 # VESA framebuffer console @ 1024x768x256 # vga=773 # VESA framebuffer console @ 800x600x64k # vga=788 # VESA framebuffer console @ 800x600x32k # vga=787 # VESA framebuffer console @ 800x600x256 # vga=771 # VESA framebuffer console @ 640x480x64k # vga=785 # VESA framebuffer console @ 640x480x32k # vga=784 # VESA framebuffer console @ 640x480x256 # vga=769 EOF else cat << EOF >> $TMP/lilo.conf # VESA framebuffer console @ $CONSOLETYPE vga = $CONSOLENUM # Normal VGA console # vga = normal # VESA framebuffer console @ 1024x768x64k # vga=791 # VESA framebuffer console @ 1024x768x32k # vga=790 # VESA framebuffer console @ 1024x768x256 # vga=773 # VESA framebuffer console @ 800x600x64k # vga=788 # VESA framebuffer console @ 800x600x32k # vga=787 # VESA framebuffer console @ 800x600x256 # vga=771 # VESA framebuffer console @ 640x480x64k # vga=785 # VESA framebuffer console @ 640x480x32k # vga=784 # VESA framebuffer console @ 640x480x256 # vga=769 EOF fi cat << EOF >> $TMP/lilo.conf # ramdisk = 0 # paranoia setting # End LILO global section EOF HDR="yes" else cat << EOF > $TMP/lilo.conf # LILO configuration file # generated by 'liloconfig' # # Start LILO global section append="$APPEND" boot = $LILO_TARGET #compact # faster, but won't work on all systems. $PROMPT $TIMEOUT EOF if [ "$CONSOLETYPE" = "standard" ]; then cat << EOF >> $TMP/lilo.conf # Normal VGA console vga = normal # VESA framebuffer console @ 1024x768x64k # vga=791 # VESA framebuffer console @ 1024x768x32k # vga=790 # VESA framebuffer console @ 1024x768x256 # vga=773 # VESA framebuffer console @ 800x600x64k # vga=788 # VESA framebuffer console @ 800x600x32k # vga=787 # VESA framebuffer console @ 800x600x256 # vga=771 # VESA framebuffer console @ 640x480x64k # vga=785 # VESA framebuffer console @ 640x480x32k # vga=784 # VESA framebuffer console @ 640x480x256 # vga=769 EOF else cat << EOF >> $TMP/lilo.conf # VESA framebuffer console @ $CONSOLETYPE vga = $CONSOLENUM # Normal VGA console # vga = normal # VESA framebuffer console @ 1024x768x64k # vga=791 # VESA framebuffer console @ 1024x768x32k # vga=790 # VESA framebuffer console @ 1024x768x256 # vga=773 # VESA framebuffer console @ 800x600x64k # vga=788 # VESA framebuffer console @ 800x600x32k # vga=787 # VESA framebuffer console @ 800x600x256 # vga=771 # VESA framebuffer console @ 640x480x64k # vga=785 # VESA framebuffer console @ 640x480x32k # vga=784 # VESA framebuffer console @ 640x480x256 # vga=769 EOF fi cat << EOF >> $TMP/lilo.conf # ramdisk = 0 # paranoia setting # End LILO global section EOF HDR="yes" fi elif [ "$REPLY" = "Linux" ]; then if [ "$HDR" = "yes" ]; then echo "These are your Linux partitions:" > $TMP/tmpmsg echo >> $TMP/tmpmsg echo " Device Boot Start End Blocks Id System" >> $TMP/tmpmsg PROBE -l | grep "Linux$" | sort >> $TMP/tmpmsg echo >> $TMP/tmpmsg echo "Which one would you like LILO to boot?" >> $TMP/tmpmsg $DCMD --title "SELECT LINUX PARTITION" --no-collapse --inputbox \ "`cat $TMP/tmpmsg`" 20 74 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then rm $TMP/tmpmsg continue fi rm $TMP/tmpmsg LINUX_PART="`cat $TMP/reply`" checkp_dialog $LINUX_PART if [ ! $? = 0 ]; then continue; fi $DCMD --title "SELECT PARTITION NAME" --inputbox \ "Now you must select a short, unique name for this partition. \ You'll use this name if you specify a partition to boot at the \ LILO prompt. 'Linux' might not be a bad choice. THIS MUST BE A \ SINGLE WORD." 11 60 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then continue fi LABEL="`cat $TMP/reply`" cat << EOF >> $TMP/lilo.conf # Linux bootable partition config begins image = $KERNEL root = $LINUX_PART label = $LABEL read-only # Non-UMSDOS filesystems should be mounted read-only for checking # Linux bootable partition config ends EOF else $DCMD --title "CAN'T ADD LINUX PARTITION" --msgbox "You can't add \ partitions unless you start over with a new LILO header." 6 60 continue fi LNX="yes" elif [ "$REPLY" = "OS/2" ]; then if [ "$HDR" = "yes" ]; then echo "These are possibly OS/2 partitions. They will be treated" > $TMP/tmpmsg echo "as such if you install them using this menu." >> $TMP/tmpmsg echo >> $TMP/tmpmsg echo " Device Boot Start End Blocks Id System" >> $TMP/tmpmsg PROBE -l | grep DOS | sort >> $TMP/tmpmsg PROBE -l | grep HPFS | sort >> $TMP/tmpmsg echo >> $TMP/tmpmsg echo "Which one would you like LILO to boot?" >> $TMP/tmpmsg $DCMD --title "SELECT OS/2 PARTITION" --no-collapse --inputbox \ "`cat $TMP/tmpmsg`" 20 74 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then rm $TMP/tmpmsg continue fi rm $TMP/tmpmsg OS_2_PART="`cat $TMP/reply`" checkp_dialog $OS_2_PART if [ ! $? = 0 ]; then continue; fi $DCMD --title "SELECT PARTITION NAME" --inputbox \ "Now you must select a short, unique name for this partition. \ You'll use this name if you specify a partition to boot at the \ LILO prompt. 'OS/2' might not be a bad choice. THIS MUST BE A \ SINGLE WORD." 11 60 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then continue fi LABEL="`cat $TMP/reply`" TABLE="`echo $OS_2_PART | cut -b1-8`" if [ "`echo $TABLE | cut -b6-8`" = "hda" ]; then cat << EOF >> $TMP/lilo.conf # OS/2 bootable partition config begins other = $OS_2_PART label = $LABEL table = $TABLE # OS/2 bootable partition config ends EOF else cat << EOF >> $TMP/lilo.conf # OS/2 bootable partition config begins other = $OS_2_PART label = $LABEL table = $TABLE loader = /boot/os2_d.b # map-drive = 0x80 # to = 0x81 # map-drive = 0x81 # to = 0x80 # OS/2 bootable partition config ends EOF fi else $DCMD --title "CAN'T ADD OS/2 PARTITION" --msgbox "You can't add \ partitions unless you start over with a new LILO header." 6 60 continue fi LNX="yes" elif [ "$REPLY" = "DOS" ]; then if [ "$HDR" = "yes" ]; then echo "These are possibly DOS partitions. They will be treated" > $TMP/tmpmsg echo "as such if you install them using this menu." >> $TMP/tmpmsg echo >> $TMP/tmpmsg echo " Device Boot Start End Blocks Id System" >> $TMP/tmpmsg PROBE -l | grep "DOS Win FAT12 FAT16 HPFS" | grep -v "Ext'd" | grep -v "Extend" | sort >> $TMP/tmpmsg echo >> $TMP/tmpmsg echo "Which one would you like LILO to boot?" >> $TMP/tmpmsg $DCMD --title "SELECT DOS PARTITION" --no-collapse --inputbox \ "`cat $TMP/tmpmsg`" 20 74 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then rm $TMP/tmpmsg continue fi rm $TMP/tmpmsg DOSPART="`cat $TMP/reply`" checkp_dialog $DOSPART if [ ! $? = 0 ]; then continue; fi $DCMD --title "SELECT PARTITION NAME" --inputbox \ "Now you must select a short, unique name for this partition. \ You'll use this name if you specify a partition to boot at the \ LILO prompt. 'DOS' might not be a bad choice. THIS MUST BE A \ SINGLE WORD." 11 60 2> $TMP/reply if [ $? = 1 -o $? = 255 ]; then continue fi LABEL="`cat $TMP/reply`" unset USE_LOADER TABLE="`echo $DOSPART | cut -b1-8`" if [ "`echo $TABLE | cut -b6-8`" = "hda" ]; then USE_LOADER="no" fi if [ "`echo $TABLE | cut -b6-8`" = "sda" ]; then if probe /dev/hda; then USE_LOADER="yes" else USE_LOADER="no" fi fi if [ "$USE_LOADER" = "no" ]; then cat << EOF >> $TMP/lilo.conf # DOS bootable partition config begins other = $DOSPART label = $LABEL table = $TABLE # DOS bootable partition config ends EOF else cat << EOF >> $TMP/lilo.conf # DOS bootable partition config begins other = $DOSPART label = $LABEL # map-drive = 0x80 # to = 0x81 # map-drive = 0x81 # to = 0x80 table = $TABLE # DOS bootable partition config ends EOF fi else $DCMD --title "CAN'T ADD DOS PARTITION" --msgbox "You can't add \ partitions unless you start over with a new LILO header." 6 60 continue fi LNX="yes" elif [ "$REPLY" = "Install" -o "$REPLY" = "Recycle" ]; then if [ "$REPLY" = "Recycle" -a -r $T_PX/etc/lilo.conf ]; then LNX="yes" fi if [ "$LNX" = "no" ]; then $DCMD --title "CAN'T INSTALL LILO" --msgbox "LILO could not be \ installed. If you have not created a LILO configuration file by defining \ a new header and adding at least one bootable partition to it, you must do \ so before installing LILO. If you were attempting to use an existing LILO \ configuration file, it could not be found. Try making a new one." 9 70 continue else if [ "$REPLY" = "Install" ]; then if [ -r $TMP/lilo.conf ]; then if [ -r $T_PX/etc/lilo.conf ]; then mv $T_PX/etc/lilo.conf $T_PX/etc/lilo.conf.bak fi cp $TMP/lilo.conf $T_PX/etc/lilo.conf chmod 644 $T_PX/etc/lilo.conf fi fi installcolor; fi rm -f $TMP/tmpmsg $TMP/reply break elif [ "$REPLY" = "Skip" ]; then rm -f $TMP/tmpmsg $TMP/reply break elif [ "$REPLY" = "View" ]; then if [ -r $TMP/lilo.conf ]; then $DCMD --title "YOUR NEW /etc/lilo.conf" --textbox "$TMP/lilo.conf" 22 70 else if [ -r /mnt/etc/lilo.conf ]; then $DCMD --title "YOUR OLD /etc/lilo.conf" --textbox "/mnt/etc/lilo.conf" 22 70 elif [ "$T_PX" = "/" -a -r /etc/lilo.conf ]; then $DCMD --title "YOUR OLD /etc/lilo.conf" --textbox "/etc/lilo.conf" 22 70 else $DCMD --title "NO CONFIG FILE FOUND" --msgbox "Sorry, but you don't \ have a LILO configuration file that can be viewed." 6 60 fi fi elif [ "$REPLY" = "Help" ]; then $DCMD --title "LILO INSTALLATION HELP" --textbox "$T_PX/var/log/setup/text.lilohelp" 22 68 fi done else # don't use color! while [ 0 ]; do cat << EOF LILO INSTALLATION LILO (the Linux Loader) is the program that allows booting Linux directly from the hard drive. To install, you make a new LILO configuration file by creating a new header and then adding at least one bootable partition to the file. Once you've done this, you can select the install option. Alternately, if you already have an /etc/lilo.conf, you may reinstall using that. If you make a mistake, just select (1) to start over. 1 -- Start LILO configuration with a new LILO header 2 -- Add a Linux partition to the LILO config file 3 -- Add an OS/2 partition to the LILO config file 4 -- Add a DOS partition to the LILO config file 5 -- Install LILO 6 -- Reinstall LILO using the existing lilo.conf 7 -- Skip LILO installation and exit this menu 8 -- View your current /etc/lilo.conf 9 -- Read the Linux Loader HELP file EOF echo -n "Which option would you like (1 - 9)? " read REPLY; echo if [ "$REPLY" = "1" ]; then cat << EOF OPTIONAL append="" LINE Some systems might require extra parameters to be passed to the kernel in order to boot. An example would be the hd=cyl,hds,secs needed with some SCSI systems and some machines with IBM motherboards. If you needed to pass parameters to the kernel when you booted the Slackware bootdisk, you'll probably want to enter the same ones here. Most systems won't require any extra parameters. If you don't need any, just hit ENTER to continue. EOF echo -n "Enter extra parameters==> " read APPEND; echo cat << EOF SELECT LILO TARGET LOCATION LILO can be installed to a variety of places: 1. The Master Boot Record of your first hard drive 2. The superblock of your root Linux partition (which could then be made the bootable partition with fdisk) (NOT FOR XFS!) 3. A formatted floppy disk If you're using a boot system such as OS/2's Boot Manager, you should install LILO on the superblock of your root Linux partition. EOF echo -n "Please pick a target location (1 - 3): " read TG; echo if [ "$TG" = "1" ]; then if [ -L $T_PX/dev/hda ]; then LILO_TARGET="/dev/sda" elif probe /dev/hda; then LILO_TARGET="/dev/hda" elif probe /dev/sda; then LILO_TARGET="/dev/sda" else cat << EOF ***** ERROR probing for first hard drive. LILO can't find your first hard drive! Sorry, but LILO is getting /dev/null'ed... EOF LILO_TARGET="/dev/null" fi elif [ "$TG" = "2" ]; then LILO_TARGET=`echo $ROOT_DEVICE` # Here, we use the partition superblock for OS/2 Boot Manager elif [ "$TG" = "3" ]; then LILO_TARGET="/dev/fd0" else HDR="no" continue; fi cat << EOF CHOOSE LILO TIMEOUT How long would you like LILO to wait for you to make a choice after rebooting? If you let LILO time out, it will boot the first OS in the configuration file by default. 1 -- None, don't wait at all - boot straight into the first OS 2 -- 5 seconds 3 -- 30 seconds 4 -- Present a prompt and wait until a choice is made without timing out EOF echo -n "Which choice would you like (1 - 4)? " read TIMEOUT; echo if [ "$TIMEOUT" = "1" ]; then PROMPT="#prompt" TIMEOUT="#timeout = 5" elif [ "$TIMEOUT" = "2" ]; then PROMPT="prompt" TIMEOUT="timeout = 50" elif [ "$TIMEOUT" = "3" ]; then PROMPT="prompt" TIMEOUT="timeout = 300" elif [ "$TIMEOUT" = "4" ]; then PROMPT="prompt" TIMEOUT="#timeout = 300" else HDR="no" continue; fi if [ "$APPEND" = "" ]; then cat << EOF > $TMP/lilo.conf # LILO configuration file # generated by 'liloconfig' # # Start LILO global section boot = $LILO_TARGET #compact # faster, but won't work on all systems. $PROMPT $TIMEOUT vga = normal # ramdisk = 0 # paranoia setting # End LILO global section EOF HDR="yes" else cat << EOF > $TMP/lilo.conf # LILO configuration file # generated by 'liloconfig' # # Start LILO global section append="$APPEND" boot = $LILO_TARGET #compact # faster, but won't work on all systems. $PROMPT $TIMEOUT vga = normal # force sane state # ramdisk = 0 # paranoia setting # End LILO global section EOF HDR="yes" fi elif [ "$REPLY" = "2" ]; then if [ "$HDR" = "yes" ]; then while [ 0 ]; do cat << EOF SELECT LINUX PARTITION These are your Linux partitions: Device Boot Start End Blocks Id System `PROBE -l | grep "Linux$" | sort` EOF echo -n "Which one would you like LILO to boot? " read LINUX_PART; checkp_text $LINUX_PART if [ $? = 0 ]; then break; fi done echo cat << EOF SELECT PARTITION NAME Now you must select a short, unique name for this partition. You'll use this name if you specify a partition to boot at the LILO prompt. 'Linux' might not be a bad choice. THIS MUST BE A SINGLE WORD. EOF echo -n "Enter name: " read LABEL; cat << EOF >> $TMP/lilo.conf # Linux bootable partition config begins image = $KERNEL root = $LINUX_PART label = $LABEL read-only # Non-UMSDOS filesystems should be mounted read-only for checking # Linux bootable partition config ends EOF else cat << EOF CAN'T ADD LINUX PARTITION You can't add partitions unless you start over with a new LILO header. EOF echo -n "Press ENTER to continue." read JUNK; echo continue fi LNX="yes" elif [ "$REPLY" = "3" ]; then if [ "$HDR" = "yes" ]; then while [ 0 ]; do cat << EOF SELECT OS/2 PARTITION These are possibly OS/2 partitions. They will be treated as such if you install them using this menu. Device Boot Start End Blocks Id System `PROBE -l | grep DOS | sort` `PROBE -l | grep HPFS | sort` EOF echo -n "Which one would you like LILO to boot? " read OS_2_PART; checkp_text $OS_2_PART if [ $? = 0 ]; then break; fi done echo cat << EOF SELECT PARTITION NAME Now you must select a short, unique name for this partition. You'll use this name if you specify a partition to boot at the LILO prompt. 'OS/2' might not be a bad choice. THIS MUST BE A SINGLE WORD. EOF echo -n "Enter name: " read LABEL; echo TABLE="`echo $OS_2_PART | cut -b1-8`" if [ "`echo $TABLE | cut -b6-8`" = "hda" ]; then cat << EOF >> $TMP/lilo.conf # OS/2 bootable partition config begins other = $OS_2_PART label = $LABEL table = $TABLE # OS/2 bootable partition config ends EOF else cat << EOF >> $TMP/lilo.conf # OS/2 bootable partition config begins other = $OS_2_PART label = $LABEL table = $TABLE loader = /boot/os2_d.b # map-drive = 0x80 # to = 0x81 # map-drive = 0x81 # to = 0x80 # OS/2 bootable partition config ends EOF fi else cat << EOF CAN'T ADD OS/2 PARTITION You can't add partitions unless you start over with a new LILO header. EOF echo -n "Press ENTER to continue." read JUNK; echo continue fi LNX="yes" elif [ "$REPLY" = "4" ]; then if [ "$HDR" = "yes" ]; then while [ 0 ]; do cat << EOF SELECT DOS PARTITION These are possibly DOS partitions. They will be treated as such if you install them using this menu. Device Boot Start End Blocks Id System `PROBE -l | grep DOS | sort` EOF echo -n "Which one would you like LILO to boot? " read DOSPART; checkp_text $DOSPART if [ $? = 0 ]; then break; fi done cat << EOF SELECT PARTITION NAME Now you must select a short, unique name for this partition. You'll use this name if you specify a partition to boot at the LILO prompt. 'DOS' might not be a bad choice. THIS MUST BE A SINGLE WORD. EOF echo -n "Enter name: " read LABEL; echo TABLE="`echo $DOSPART | cut -b1-8`" unset USE_LOADER if [ "`echo $TABLE | cut -b6-8`" = "hda" ]; then USE_LOADER="no" fi if [ "`echo $TABLE | cut -b6-8`" = "sda" ]; then if probe /dev/hda; then USE_LOADER="yes" else USE_LOADER="no" fi fi if [ "$USE_LOADER" = "no" ]; then cat << EOF >> $TMP/lilo.conf # DOS bootable partition config begins other = $DOSPART label = $LABEL table = $TABLE # DOS bootable partition config ends EOF else cat << EOF >> $TMP/lilo.conf # DOS bootable partition config begins other = $DOSPART label = $LABEL # map-drive = 0x80 # to = 0x81 # map-drive = 0x81 # to = 0x80 table = $TABLE # DOS bootable partition config ends EOF fi else cat << EOF CAN'T ADD DOS PARTITION You can't add partitions unless you start over with a new LILO header. EOF echo -n "Press ENTER to continue." read JUNK; echo continue fi LNX="yes" elif [ "$REPLY" = "5" -o "$REPLY" = "6" ]; then if [ "$REPLY" = "6" -a -r $T_PX/etc/lilo.conf ]; then LNX="yes" fi if [ "$LNX" = "no" ]; then cat << EOF CAN'T INSTALL LILO LILO could not be installed. If you have not created a LILO configuration file by defining a new header and adding at least one bootable partition to it, you must do so before installing LILO. If you were attempting to use an existing LILO configuration file, it could not be found. Try making a new one. EOF echo -n "Press ENTER to continue." read JUNK; echo continue else if [ "$REPLY" = "5" ]; then if [ -r $TMP/lilo.conf ]; then if [ -r $T_PX/etc/lilo.conf ]; then mv $T_PX/etc/lilo.conf $T_PX/etc/lilo.conf.bak fi cp $TMP/lilo.conf $T_PX/etc/lilo.conf chmod 644 $T_PX/etc/lilo.conf fi fi echo installtext; fi rm -f $TMP/tmpmsg $TMP/reply break elif [ "$REPLY" = "7" ]; then rm -f $TMP/tmpmsg $TMP/reply break elif [ "$REPLY" = "8" ]; then if [ -r $TMP/lilo.conf ]; then if [ -r /bin/more ]; then cat $TMP/lilo.conf | more else cat $TMP/lilo.conf fi echo -n "Press ENTER to continue..." read JUNK; echo else if [ -r /mnt/etc/lilo.conf ]; then if [ -r /bin/more ]; then cat /mnt/etc/lilo.conf | more else cat /mnt/etc/lilo.conf fi echo -n "Press ENTER to continue..." read JUNK; echo elif [ "$T_PX" = "/" -a -r /etc/lilo.conf ]; then if [ -r /bin/more ]; then cat /etc/lilo.conf | more else cat /etc/lilo.conf fi echo -n "Press ENTER to continue..." read JUNK; echo else cat << EOF NO CONFIG FILE FOUND Sorry, but you don't have a LILO configuration file that can be viewed. EOF echo -n "Press ENTER to continue..." read JUNK; echo fi fi elif [ "$REPLY" = "9" ]; then if [ -r /bin/more ]; then cat $T_PX/var/log/setup/text.lilohelp | more else cat $T_PX/var/log/setup/text.lilohelp echo -n "Sorry... there's no pager on this disk. Press ENTER to continue." read JUNK; echo fi fi done echo fi # are we using color?