mirror of
git://slackware.nl/current.git
synced 2024-12-27 09:59:16 +01:00
84c2304885
a/lilo-24.2-x86_64-10.txz: Rebuilt. Add -fcommon to fix build with gcc10. liloconfig: Don't warn about UMSDOS which is long obsolete. Detect QEMU and use /dev/vda as the boot device in that case. Fix a case where /mnt was used instead of the target partition variable. Thanks to alienBOB. a/mkinitrd-1.4.11-x86_64-16.txz: Rebuilt. Blacklist rules.d/73-seat-late.rules. Thanks to Robby Workman. a/ndctl-71.1-x86_64-1.txz: Upgraded. a/sysklogd-2.1.2-x86_64-3.txz: Rebuilt. /etc/logrotate.d/syslog.new: add missingok option. Thanks to sovteq. l/gdbm-1.19-x86_64-1.txz: Upgraded. t/fig2dev-3.2.8-x86_64-1.txz: Upgraded. x/libepoxy-1.5.5-x86_64-1.txz: Upgraded.
1165 lines
37 KiB
Bash
1165 lines
37 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, 2018, 2020 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 -c
|
|
else # use fdisk directly:
|
|
fdisk -l 2> /dev/null | sed -e "s/Linux filesystem/Linux/g"
|
|
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
|
|
}
|
|
|
|
# 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)"
|
|
|
|
# If we got here, we either don't have boot manager or don't want to use it
|
|
# Note 3/2018: or OS/2 Boot Manager cruft was removed ;-)
|
|
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
|
|
dialog --infobox "\nScanning partitions and generating /etc/lilo.conf..." 5 57
|
|
sleep 1
|
|
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
|
|
elif [ "$MAJOR" = "259" -a ! "$MBR_TARGET" = "/dev/hda" -a ! "$MBR_TARGET" = "/dev/hdc" -a ! "$MBR_TARGET" = "/dev/hde" -a ! "$MBR_TARGET" = "/dev/hdg" ]; then
|
|
if [ "$(echo $LINE | cut -f 4 -d ' ' | cut -b 1-4)" = "nvme" ]; then
|
|
MBR_TARGET="/dev/$(echo $LINE | cut -f 4 -d ' ' | cut -f 1 -d p)"
|
|
echo $MBR_TARGET > $TMP/LILOMBR
|
|
fi
|
|
fi
|
|
if dmidecode 2> /dev/null | grep -q QEMU 2> /dev/null ; then
|
|
if [ -r /dev/vda ]; then
|
|
MBR_TARGET=/dev/vda
|
|
echo $MBR_TARGET > $TMP/LILOMBR
|
|
fi
|
|
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
|
|
echo >> $T_PX/etc/lilo.conf
|
|
#fi
|
|
|
|
if echo $LILO_TARGET | grep -q vda 2>/dev/null ; then
|
|
echo "disk = /dev/vda bios=0x80 max-partitions=7" >> $T_PX/etc/lilo.conf
|
|
fi
|
|
cat << EOF >> $T_PX/etc/lilo.conf
|
|
boot = $LILO_TARGET
|
|
# This option loads the kernel and initrd much faster:
|
|
compact
|
|
|
|
# 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 35
|
|
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 | grep " on $T_PX " | cut -f 1 -d " " | head -n 1)"
|
|
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
|
|
|
|
# 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
|
|
if dmidecode 2> /dev/null | grep -q QEMU 2> /dev/null ; then
|
|
if [ -r /dev/vda ]; then
|
|
MBR_TARGET=/dev/vda
|
|
echo $MBR_TARGET > $TMP/LILOMBR
|
|
fi
|
|
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
|
|
|
|
# This option loads the kernel and initrd much faster:
|
|
compact
|
|
|
|
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
|
|
if echo $LILO_TARGET | grep -q vda 2>/dev/null ; then
|
|
echo "disk = /dev/vda bios=0x80 max-partitions=7" >> $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
|
|
dialog --infobox "\nScanning for Linux partitions..." 5 37
|
|
sleep 1
|
|
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
|
|
dialog --infobox "\nScanning for Windows partitions..." 5 39
|
|
sleep 1
|
|
if [ "$HDR" = "yes" ]; then
|
|
echo "These are possibly Windows partitions. They will be treated as" > $TMP/tmpmsg
|
|
echo "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 $T_PX/etc/lilo.conf ]; then
|
|
dialog --title "YOUR OLD /etc/lilo.conf" --textbox "$T_PX/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
|
|
|