slackware-current/source/a/lilo/liloconfig
Patrick J Volkerding 76fc4757ac Slackware 14.1
Mon Nov  4 17:08:47 UTC 2013
Slackware 14.1 x86_64 stable is released!

It's been another interesting release cycle here at Slackware bringing
new features like support for UEFI machines, updated compilers and
development tools, the switch from MySQL to MariaDB, and many more
improvements throughout the system.  Thanks to the team, the upstream
developers, the dedicated Slackware community, and everyone else who
pitched in to help make this release a reality.

The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a
dual-sided
32-bit/64-bit x86/x86_64 DVD.  Please consider supporting the Slackware
project by picking up a copy from store.slackware.com.  We're taking
pre-orders now, and offer a discount if you sign up for a subscription.

Have fun!  :-)
2018-05-31 22:57:36 +02:00

1252 lines
40 KiB
Bash

#!/bin/sh
#
# Copyright 1994, 1998, 1999 Patrick Volkerding, Moorhead, Minnesota USA
# Copyright 2002, 2003 Slackware Linux, Inc, Concord, CA
# Copyright 2007, 2008, 2011, 2013 Patrick Volkerding, Sebeka, 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.
#
TMP=/var/log/setup/tmp
CONSOLETYPE=standard
unset UTFVT
# Most of the time LILO is not used on UEFI machines (in fact, it is useless
# unless the machine is running in legacy BIOS mode). So, we'll detect if
# this is a machine running UEFI and suggest skipping LILO installation.
# We'll still allow it if the user wants it, though. It won't hurt anything,
# and might be useful for booting in Legacy BIOS mode later.
if [ -d /sys/firmware/efi ]; then
dialog --title "UEFI FIRMWARE DETECTED" \
--backtitle "LILO (Linux Loader) installation" \
--menu \
"Since LILO (the traditional Linux Loader) does not work with machines \
running UEFI firmware (except in Legacy BIOS mode), you probably do not \
need to install it. Instead, you'll need ELILO, which is a version of \
LILO designed to work with EFI/UEFI systems." \
12 70 2 \
"skip" "Skip installing LILO and proceed to ELILO installation" \
"install" "Install LILO anyway" 2> $TMP/reply
if [ $? = 1 -o $? = 255 ]; then
exit
fi
REPLY="`cat $TMP/reply`"
rm -f $TMP/reply
if [ "$REPLY" = "skip" ]; then
exit
fi
fi
# Set the OS root directory (called T_PX for some unknown reason).
# If an argument is given to this script and it is a directory, it
# is taken to be the root directory. First though, we check for a
# directory named $T_PX, and that gets the first priority.
if [ ! -d "$T_PX" ]; then
if [ ! "$1" = "" ]; then
if [ -d "$1" ]; then
T_PX="$1"
fi
else
# Are we on the installer image?
if [ -r /usr/lib/setup/SeTpartitions ]; then
T_PX=/mnt
# Or, are we on a running system?
elif [ -r /etc/slackware-version ]; then
T_PX=/
# One more installer-likely thing:
elif [ -r /usr/lib/setup/setup ]; then
T_PX=/mnt
else
# We will have to assume we're on an installed and running system.
T_PX=/
fi
fi
fi
# If os-prober is availible, we will use it to filter out unbootable
# FAT/NTFS partitions. If it is not availble, we'll use /bin/true
# instead to avoid filtering.
if which os-prober > /dev/null ; then
OSPROBER=os-prober
else
OSPROBER=true
fi
# Determine LILO documentation directory:
LILODOCDIR="$(ls -d $T_PX/usr/doc/lilo-* 2> /dev/null | tail -n 1)"
if [ ! -d "$LILODOCDIR" ]; then
LILODOCDIR="/usr/doc/lilo/"
fi
# If there's no boot_message.txt, start the header for one now:
if [ ! -r $T_PX/boot/boot_message.txt ]; then
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
fi
# The default install location may be set here:
DEFAULT=" --default-item MBR "
# 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
}
# Function to ask if the Slackware logo boot screen should be used.
ask_boot_splash() {
dialog --title "OPTIONAL SLACKWARE LOGO BOOT SCREEN" \
--yesno \
"Would you like to use a boot screen with the Slackware logo \
against a black background? If you answer no here, the standard \
LILO menu will be used.\n\
" 7 65 2> $TMP/reply
RETVAL=$?
return $RETVAL
}
boot_bmp() {
cat << EO_BMP
# Boot BMP Image.
# Bitmap in BMP format: 640x480x8
bitmap = /boot/slack.bmp
# Menu colors (foreground, background, shadow, highlighted
# foreground, highlighted background, highlighted shadow):
bmp-colors = 255,0,255,0,255,0
# Location of the option table: location x, location y, number of
# columns, lines per column (max 15), "spill" (this is how many
# entries must be in the first column before the next begins to
# be used. We don't specify it here, as there's just one column.
bmp-table = 60,6,1,16
# Timer location x, timer location y, foreground color,
# background color, shadow color.
bmp-timer = 65,27,0,255
EO_BMP
}
# Menu to check if we want to use VESA framebuffer support:
use_framebuffer() {
if cat /proc/devices | grep "29 fb" 1> /dev/null ; then
dialog --title "CONFIGURE LILO TO USE FRAME BUFFER CONSOLE?" \
--default-item standard \
--menu "Looking at /proc/devices, it seems your kernel has support for \
the VESA 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, and some X drivers could be \
confused by them. 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)" \
"ask" "Ask about using VESA modes at boot; time out to standard" \
"640x480x64k" "Frame buffer console, 640x480x64k" \
"800x600x64k" "Frame buffer console, 800x600x64k" \
"1024x768x64k" "Frame buffer console, 1024x768x64k" \
"640x480x32k" "Frame buffer console, 640x480x32k" \
"800x600x32k" "Frame buffer console, 800x600x32k" \
"1024x768x32k" "Frame buffer console, 1024x768x32k" \
"640x480x256" "Frame buffer console, 640x480x256" \
"800x600x256" "Frame buffer console, 800x600x256" \
"1024x768x256" "Frame buffer console, 1024x768x256" \
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
}
# A function to ask for append= parameters.
ask_append() {
dialog --title "OPTIONAL LILO append=\"<kernel parameters>\" LINE" --inputbox \
"Some systems might require extra parameters to be passed to the kernel. \
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\
" 12 72 2> $TMP/reply
RETVAL=$?
return $RETVAL
}
ask_utf() {
dialog --defaultno --title "USE UTF-8 TEXT CONSOLE?" --yesno \
"Beginning with the 2.6.24 kernel, the text consoles default to UTF-8 mode. \
Unless you are using a UTF-8 locale (\$LANG setting), using the old default \
of a non-UTF text console is safer until some issues with various console \
programs are addressed. This option has no effect on the use of UTF-8 with X. \
\"No\" is the safe choice here." 10 70
}
# 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;
ask_append;
if [ $? = 1 -o $? = 255 ]; then
APPEND=""
fi
APPEND="`cat $TMP/reply`"
ask_utf;
if [ $? = 1 -o $? = 255 ]; then
UTFVT="vt.default_utf8=0"
else
UTFVT="vt.default_utf8=1"
fi
if PROBE -l | grep 'OS/2 Boot Manager' 1> /dev/null 2> /dev/null ; then
dialog --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" = "" -o ! "$UTFVT" = "" ]; then
echo "# Append any additional kernel parameters:" >> $T_PX/etc/lilo.conf
echo "append=\"$APPEND $UTFVT\"" >> $T_PX/etc/lilo.conf
fi
cat << EOF >> $T_PX/etc/lilo.conf
boot = $ROOT_DEVICE
#delay = 5
#compact # faster, but won't work on all systems.
EOF
if [ $CONSOLETYPE = standard ]; then
cat << EOF >> $T_PX/etc/lilo.conf
# Normal VGA console
vga = normal
# Ask for video mode at boot (time out to normal in 30s)
#vga = ask
EOF
elif [ $CONSOLETYPE = ask ]; then
cat << EOF >> $T_PX/etc/lilo.conf
# Ask for video mode at boot (time out to normal in 30s)
vga = ask
# Normal VGA console
#vga = normal
EOF
else
cat << EOF >> $T_PX/etc/lilo.conf
# VESA framebuffer at $CONSOLETYPE
vga = $CONSOLENUM
# Ask for video mode at boot (time out to normal in 30s)
#vga = ask
# Normal VGA console
#vga = normal
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
dialog --title "SELECT LILO DESTINATION" $DEFAULT --menu \
"LILO can be installed to a variety of places:\n\
\n\
1. The superblock of your root Linux partition. (which could\n\
be made the bootable partition with Windows or Linux fdisk, or\n\
booted with a program like OS/2 Boot Manager)\n\
2. A formatted floppy disk.\n\
3. The Master Boot Record of your first hard drive.\n\
\n\
Options 1 and 2 are the safest, but option 1 does require a little\n\
extra work later (setting the partition bootable with fdisk).\n\
Which option would you like?" \
20 72 3 \
"Root" "Install to superblock (not for use with XFS)" \
"Floppy" "Install to a formatted floppy in /dev/fd0 (A:)" \
"MBR" "Install to Master Boot Record" \
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 # ignore 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/etc/lilo.conf
# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
EOF
if [ ! "$APPEND" = "" -o ! "$UTFVT" = "" ]; then
echo "# Append any additional kernel parameters:" >> $T_PX/etc/lilo.conf
echo "append=\"$APPEND $UTFVT\"" >> $T_PX/etc/lilo.conf
fi
cat << EOF >> $T_PX/etc/lilo.conf
boot = $LILO_TARGET
#compact # faster, but won't work on all systems.
# Boot BMP Image.
# Bitmap in BMP format: 640x480x8
bitmap = /boot/slack.bmp
# Menu colors (foreground, background, shadow, highlighted
# foreground, highlighted background, highlighted shadow):
bmp-colors = 255,0,255,0,255,0
# Location of the option table: location x, location y, number of
# columns, lines per column (max 15), "spill" (this is how many
# entries must be in the first column before the next begins to
# be used. We don't specify it here, as there's just one column.
bmp-table = 60,6,1,16
# Timer location x, timer location y, foreground color,
# background color, shadow color.
bmp-timer = 65,27,0,255
# Standard menu.
# Or, you can comment out the bitmap menu above and
# use a boot message with the standard menu:
#message = /boot/boot_message.txt
# Wait until the timeout to boot (if commented out, boot the
# first entry immediately):
prompt
# Timeout before the first entry boots.
# This is given in tenths of a second, so 600 for every minute:
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
# Ask for video mode at boot (time out to normal in 30s)
#vga = ask
EOF
elif [ $CONSOLETYPE = ask ]; then
cat << EOF >> $T_PX/etc/lilo.conf
# Ask for video mode at boot (time out to normal in 30s)
vga = ask
# Normal VGA console
#vga = normal
EOF
else
cat << EOF >> $T_PX/etc/lilo.conf
# VESA framebuffer console @ $CONSOLETYPE
vga = $CONSOLENUM
# Normal VGA console
#vga = normal
# Ask for video mode at boot (time out to normal in 30s)
#vga = ask
EOF
fi
cat << EOF >> $T_PX/etc/lilo.conf
# 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
cat << EOF >> $T_PX/etc/lilo.conf
# End LILO global section
EOF
# OK, now let's look for Windows partitions:
# If we have os-prober, use the Windows partition list from that:
if which os-prober > /dev/null ; then
DOSP="$(os-prober 2> /dev/null | grep Windows | cut -f 1 -d :)"
else # use PROBE output:
DOSP="$(PROBE -l | grep "DOS
Win
W95
FAT12
FAT16
HPFS" | grep -v "Ext'd" | grep -v "Extend" | sort )"
DOSP="`echo $DOSP | cut -f 1 -d ' '`"
fi
if [ ! "$DOSP" = "" ]; then
TABLE="`echo $DOSP | cut -b1-8`"
cat << EOF >> $T_PX/etc/lilo.conf
# Windows bootable partition config begins
other = $DOSP
label = Windows
table = $TABLE
# Windows bootable partition config ends
EOF
echo "Windows - (Windows FAT/NTFS 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 partition)" >> $T_PX/boot/boot_message.txt
fi
# DEAD CODE, BUT IN CASE OS/2 MAKES A COMEBACK!
# # 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
# 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
dialog --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
}
checkbootsplash()
{
if [ "$(uname -m)" = "x86_64" ]; then
if [ -r $LILODOCDIR/sample/slack64.bmp ]; then
cp -a $LILODOCDIR/sample/slack64.bmp /boot/slack.bmp
fi
else
if [ -r $LILODOCDIR/sample/slack.bmp ]; then
cp -a $LILODOCDIR/sample/slack.bmp /boot/slack.bmp
fi
fi
if [ -r $HOME/1337 ]; then
if [ -r $LILODOCDIR/sample/sl1337.bmp ]; then
cp -a $LILODOCDIR/sample/sl1337.bmp /boot/slack.bmp
fi
fi
# Mayan calendar easter egg
if [ "$(date "+%Y%m%d")" = "20121221" ]; then
if [ -r $LILODOCDIR/sample/slack14.0.2012.bmp ]; then
cp -a $LILODOCDIR/sample/slack14.0.2012.bmp /boot/slack.bmp
fi
fi
}
installcolor()
{
checkbootsplash;
dialog --infobox "\nInstalling the Linux Loader..." 5 40
if [ "$T_PX" = "/" ]; then
lilo 1> /dev/null 2> /etc/lilo-error.$$
SUCCESS=$?
else
lilo -r $T_PX -m /boot/map -C /etc/lilo.conf 1> /dev/null 2> /etc/lilo-error.$$
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> /etc/lilo-error.$$
SUCCESS=$?
else
lilo -r $T_PX -m /boot/map -C /etc/lilo.conf 1> /dev/null 2> /etc/lilo-error.$$
SUCCESS=$?
fi
fi
sleep 1
if [ ! "$SUCCESS" = "0" ]; then # some LILO error occured
echo >> /etc/lilo-error.$$
cat << EOF >> /etc/lilo-error.$$
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 $LILODOCDIR for more help. \
The error message may be seen above.
EOF
dialog --msgbox "$(cat /etc/lilo-error.$$)" 0 0
fi
}
installtext()
{
checkbootsplash;
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
sleep 1
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 $LILODOCDIR 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
}
# 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:
ARCHTYPE=i386
if [ -r $T_PX/vmlinuz ]; then
KERNEL=/vmlinuz
elif [ -r $T_PX/boot/vmlinuz ]; then
KERNEL=/boot/vmlinuz
elif [ -r $T_PX/usr/src/linux/arch/$ARCHTYPE/boot/bzImage ]; then
KERNEL=/usr/src/linux/arch/$ARCHTYPE/boot/bzImage
elif [ -r $T_PX/usr/src/linux/arch/$ARCHTYPE/boot/zImage ]; then
KERNEL=/usr/src/linux/arch/$ARCHTYPE/boot/zImage
else
exit 99 # no kernel? guess you couldn't read. bye bye.
fi
# 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
dialog --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:
dialog --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 Windows 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
dialog --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?" 21 73 8 \
"Begin" "Start LILO configuration with a new LILO header" \
"Linux" "Add a Linux partition to the LILO config" \
"Windows" "Add a Windows FAT or NTFS partition to the LILO config" \
"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
ask_append;
if [ $? = 1 -o $? = 255 ]; then
APPEND=""
HDR="no"
continue;
else
APPEND="`cat $TMP/reply`"
fi
ask_utf;
if [ $? = 1 -o $? = 255 ]; then
UTFVT="vt.default_utf8=0"
else
UTFVT="vt.default_utf8=1"
fi
use_framebuffer;
dialog --title "SELECT LILO TARGET LOCATION" $DEFAULT --menu "LILO can be installed \
to a variety of places: \
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 Boot Manager, you should use the "Root" \
selection. Please pick a target location:" 15 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 # ignore 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`
dialog --title "CONFIRM LOCATION TO INSTALL LILO" --inputbox \
"The auto-detected location to install the LILO boot block is shown below. \
If you need to make any changes, you can make them below. Otherwise, hit \
ENTER to accept the target location shown." 11 60 $LILO_TARGET 2> $TMP/reply
if [ $? = 0 ]; then
LILO_TARGET="`cat $TMP/reply`"
fi
rm -f $TMP/reply
elif [ "$TG" = "Root" ]; then
LILO_TARGET=`echo $ROOT_DEVICE`
elif [ "$TG" = "Floppy" ]; then
LILO_TARGET="/dev/fd0"
else
HDR="no"
continue;
fi
dialog --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 74 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
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.
EOF
# Boot splash
if [ "$PROMPT" = "prompt" ]; then
if ask_boot_splash ; then
boot_bmp >> $TMP/lilo.conf
cat << EOF >> $TMP/lilo.conf
# Standard menu.
# Or, you can comment out the bitmap menu above and
# use a boot message with the standard menu:
#message = /boot/boot_message.txt
EOF
fi
else
cat << EOF >> $TMP/lilo.conf
# Standard menu.
message = /boot/boot_message.txt
EOF
fi
if [ ! "$APPEND" = "" -o ! "$UTFVT" = "" ]; then
echo "# Append any additional kernel parameters:" >> $TMP/lilo.conf
echo "append=\"$APPEND $UTFVT\"" >> $TMP/lilo.conf
fi
cat << EOF >> $TMP/lilo.conf
$PROMPT
$TIMEOUT
EOF
if [ "$CONSOLETYPE" = "standard" ]; then
cat << EOF >> $TMP/lilo.conf
# Normal VGA console
vga = normal
# Ask for video mode at boot (time out to normal in 30s)
#vga = ask
EOF
elif [ "$CONSOLETYPE" = "ask" ]; then
cat << EOF >> $TMP/lilo.conf
# Ask for video mode at boot (time out to normal in 30s)
vga = ask
# Normal VGA console
#vga = normal
EOF
else
cat << EOF >> $TMP/lilo.conf
# VESA framebuffer console @ $CONSOLETYPE
vga = $CONSOLENUM
# Normal VGA console
#vga = normal
# Ask for video mode at boot (time out to normal in 30s)
#vga = ask
EOF
fi
cat << EOF >> $TMP/lilo.conf
# 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
cat << EOF >> $TMP/lilo.conf
# ramdisk = 0 # paranoia setting
# End LILO global section
EOF
HDR="yes"
elif [ "$REPLY" = "Linux" ]; then
if [ "$HDR" = "yes" ]; then
if [ "$ROOT_DEVICE" != "" ]; then
DEFROOT="--default-item $ROOT_DEVICE"
fi
echo "dialog --title \"SELECT LINUX PARTITION\" $DEFROOT --menu \\" > $TMP/tmpmsg
echo "\"Which Linux partition would you like LILO to boot?\n\
\n\
Partition Start End Sectors ID\" 22 74 13 \\" >> $TMP/tmpmsg
PROBE -l 2> /dev/null | grep "Linux$" | sort | while read STR; do
STR1="$(echo -n "$STR" | cut -f 1 -d ' ')"
STR2="$(echo -n "$STR" | cut -f 2- -d ' ')"
echo "\"$STR1\" \"$STR2\" \\" >> $TMP/tmpmsg
done
echo "2> $TMP/reply" >> $TMP/tmpmsg
. $TMP/tmpmsg
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
dialog --title "SELECT PARTITION NAME FOR $LINUX_PART" --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 # Partitions should be mounted read-only for checking
# Linux bootable partition config ends
EOF
else
dialog --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"
# MORE OS/2 DEAD CODE... DOESN'T HURT.
# THIS ITEM HAS LONG BEEN REMOVED FROM THE MENU...
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
dialog --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
dialog --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
dialog --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" = "Windows" ]; then
if [ "$HDR" = "yes" ]; then
echo "These are possibly Windows or 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
W95
FAT12
FAT16
HPFS" | grep -v "Ext'd" | grep -v "Extend" | sort | grep "$($OSPROBER 2> /dev/null | grep Windows | cut -f 1 -d :)" >> $TMP/tmpmsg
echo >> $TMP/tmpmsg
echo "Which one would you like LILO to boot?" >> $TMP/tmpmsg
dialog --title "SELECT WINDOWS 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
dialog --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. 'Windows' 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
# Windows bootable partition config begins
other = $DOSPART
label = $LABEL
table = $TABLE
# Windows bootable partition config ends
EOF
else
cat << EOF >> $TMP/lilo.conf
# Windows bootable partition config begins
other = $DOSPART
label = $LABEL
# map-drive = 0x80
# to = 0x81
# map-drive = 0x81
# to = 0x80
table = $TABLE
# Windows bootable partition config ends
EOF
fi
else
dialog --title "CAN'T ADD WINDOWS 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
dialog --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
dialog --title "YOUR NEW /etc/lilo.conf" --textbox "$TMP/lilo.conf" 22 70
else
if [ -r /mnt/etc/lilo.conf ]; then
dialog --title "YOUR OLD /etc/lilo.conf" --textbox "/mnt/etc/lilo.conf" 22 70
elif [ "$T_PX" = "/" -a -r /etc/lilo.conf ]; then
dialog --title "YOUR OLD /etc/lilo.conf" --textbox "/etc/lilo.conf" 22 70
else
dialog --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
dialog --title "LILO INSTALLATION HELP" --textbox "$T_PX/var/log/setup/text.lilohelp" 22 68
fi
done