--- liloconfig.orig 2015-02-20 02:48:51.000000000 +0100
+++ liloconfig 2020-12-05 12:48:42.535216766 +0100
@@ -1,8 +1,8 @@
#!/bin/sh
#
-# Copyright 1994, 1998, 1999 Patrick Volkerding, Moorhead, Minnesota USA
+# 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
+# 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
@@ -22,14 +22,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
+# This script installs the lilo boot loader.
+# The kernel used will be whatever the symlink /boot/vmlinuz points to,
+# and if /boot/initrd.gz exists, that will be installed as the initrd.
+#
+
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
+# 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,
+# 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" \
@@ -37,7 +42,7 @@
--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 \
+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" \
@@ -45,7 +50,7 @@
if [ $? = 1 -o $? = 255 ]; then
exit
fi
- REPLY="`cat $TMP/reply`"
+ REPLY="$(cat $TMP/reply)"
rm -f $TMP/reply
if [ "$REPLY" = "skip" ]; then
exit
@@ -54,7 +59,7 @@
# 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
+# 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
@@ -79,7 +84,7 @@
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
+# 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
@@ -100,7 +105,7 @@
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:
+at the prompt below. The choices are:
EOF
fi
@@ -143,7 +127,7 @@
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 \
+against a black background? If you answer no here, the standard \
LILO menu will be used.\n\
" 7 65 2> $TMP/reply
RETVAL=$?
@@ -161,7 +145,7 @@
# 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.
+# 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.
@@ -175,12 +159,12 @@
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 \
+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 \
+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, \
+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" \
@@ -198,7 +182,7 @@
exit
fi
# Frame buffer modes above 1024x768 look terrible except
-# on LCD panels, and 32 bit color is slow. Since we don't
+# 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" \
@@ -212,7 +196,7 @@
# "1024x768x16m" "Frame buffer console, 1024x768x16.8m" \
# "1280x1024x16m" "Frame buffer console, 1280x1024x16.8m" \
# "1600x1200x16m" "Frame buffer console, 1600x1200x16.8m"
- CONSOLETYPE="`cat $TMP/reply`"
+ CONSOLETYPE="$(cat $TMP/reply)"
if [ "$CONSOLETYPE" = "1600x1200x16m" ]; then
CONSOLENUM=799
elif [ "$CONSOLETYPE" = "1600x1200x64k" ]; then
@@ -262,21 +246,51 @@
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 \
+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 the Master Boot Record,
+# if we are going to install lilo to the MBR.
+# The output will be a file "$TMP/LILOMBR" with the device name written to it.
+find_mbr()
+{
+ 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
}
# This function scans for bootable partitions (making some assumptions along
@@ -290,89 +304,14 @@
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
+ APPEND="$(cat $TMP/reply)"
- 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
+ # 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\
+ 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\
@@ -389,33 +328,15 @@
if [ $? = 1 -o $? = 255 ]; then
exit
fi
- TG="`cat $TMP/reply`"
+ 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
- fi
- fi
- done
- LILO_TARGET=`cat $TMP/LILOMBR`
+ find_mbr
+ LILO_TARGET=$(cat $TMP/LILOMBR)
elif [ "$TG" = "Root" ]; then
- LILO_TARGET=`echo $ROOT_DEVICE`
+ LILO_TARGET=$(echo $ROOT_DEVICE)
elif [ "$TG" = "Floppy" ]; then
LILO_TARGET="/dev/fd0"
fi
@@ -425,14 +346,19 @@
#
# Start LILO global section
EOF
- if [ ! "$APPEND" = "" -o ! "$UTFVT" = "" ]; then
+ #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
-
-#compact # faster, but won't work on all systems.
+# This option loads the kernel and initrd much faster:
+compact
# Boot BMP Image.
# Bitmap in BMP format: 640x480x8
@@ -443,7 +369,7 @@
# 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.
+# 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.
@@ -514,7 +440,7 @@
# 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 :)"
+ DOSP="$(os-prober 2> /dev/null | grep :Windows: | cut -f 1 -d :)"
else # use PROBE output:
DOSP="$(PROBE -l | grep "DOS
Win
@@ -522,10 +448,10 @@
FAT12
FAT16
HPFS" | grep -v "Ext'd" | grep -v "Extend" | sort )"
- DOSP="`echo $DOSP | cut -f 1 -d ' '`"
+ DOSP="$(echo $DOSP | cut -f 1 -d ' ')"
fi
if [ ! "$DOSP" = "" ]; then
- TABLE="`echo $DOSP | cut -b1-8`"
+ TABLE="$(echo $DOSP | cut -b1-8)"
cat << EOF >> $T_PX/etc/lilo.conf
# Windows bootable partition config begins
other = $DOSP
@@ -536,10 +462,21 @@
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`"
+ LNXP="$(PROBE -l | grep "Linux$")"
+ LNXP="$(echo $LNXP | cut -f 1 -d ' ' | sort)"
if [ ! "$LNXP" = "" ]; then
- cat << EOF >> $T_PX/etc/lilo.conf
+ if [ -r $T_PX/boot/initrd.gz ]; then
+ cat << EOF >> $T_PX/etc/lilo.conf
+# Linux bootable partition config begins
+image = $KERNEL
+ initrd = /boot/initrd.gz
+ #root = $ROOT_DEVICE
+ label = Linux
+ read-only
+# Linux bootable partition config ends
+EOF
+ else
+ cat << EOF >> $T_PX/etc/lilo.conf
# Linux bootable partition config begins
image = $KERNEL
root = $ROOT_DEVICE
@@ -547,14 +484,15 @@
read-only
# Linux bootable partition config ends
EOF
+ fi
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`"
+# OS2P="$(PROBE -l | grep "HPFS")"
+# OS2P="$(echo $OS2P | cut -f 1 -d ' ' | sort)"
# if [ ! "$OS2P" = "" ]; then
-# TABLE="`echo $OS2P | cut -b1-8`"
+# TABLE="$(echo $OS2P | cut -b1-8)"
# if [ "$TABLE" = "/dev/hda" ]; then
# cat << EOF >> $T_PX/etc/lilo.conf
## OS/2 bootable partition config begins
@@ -636,7 +574,7 @@
installcolor()
{
checkbootsplash;
- dialog --infobox "\nInstalling the Linux Loader..." 5 40
+ dialog --infobox "\nInstalling the Linux Loader..." 5 35
if [ "$T_PX" = "/" ]; then
lilo 1> /dev/null 2> /etc/lilo-error.$$
SUCCESS=$?
@@ -665,11 +603,11 @@
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 \
+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. \
+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
@@ -710,8 +648,8 @@
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
+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.
@@ -723,13 +661,13 @@
# 'probe()' borrowed from LILO QuickInst.
probe()
{
- [ ! -z "`dd if=$1 bs=1 count=1 2>/dev/null | tr '\0' x`" ]
+ [ ! -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`"
+ T_PX="$(cat $TMP/SeTT_PX)"
else
if [ "$T_PX" = "" -a ! "$1" = "" ]; then
T_PX=$1
@@ -746,15 +684,17 @@
ROOT_DEVICE=$2
if [ "$ROOT_DEVICE" = "" ]; then
if [ -r $TMP/SeTrootdev ]; then
- ROOT_DEVICE="`cat $TMP/SeTrootdev`"
+ ROOT_DEVICE="$(cat $TMP/SeTrootdev)"
else
- ROOT_DEVICE="`mount | cut -f 1 -d " " | sed -n "1 p"`"
+ 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-generic ] && [ -r $T_PX/boot/initrd.gz ]; then
+ KERNEL=/boot/vmlinuz-generic
elif [ -r $T_PX/boot/vmlinuz ]; then
KERNEL=/boot/vmlinuz
elif [ -r $T_PX/usr/src/linux/arch/$ARCHTYPE/boot/bzImage ]; then
@@ -767,11 +707,11 @@
# 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
+ if mount | grep " on $T_PX " | 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 \
+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
@@ -781,13 +721,13 @@
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 \
+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 \
+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?" \
+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" \
@@ -795,7 +735,7 @@
if [ $? = 1 -o $? = 255 ]; then
exit
fi
- REPLY="`cat $TMP/reply`"
+ REPLY="$(cat $TMP/reply)"
rm -f $TMP/reply
if [ "$REPLY" = "skip" ]; then
exit
@@ -825,7 +765,7 @@
if [ $? = 1 -o $? = 255 ]; then
REPLY="Skip"
else
- REPLY="`cat $TMP/reply`"
+ REPLY="$(cat $TMP/reply)"
fi
rm -r $TMP/reply
if [ "$REPLY" = "Begin" ]; then
@@ -835,22 +775,22 @@
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"
+ 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 \
+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 \
+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)" \
@@ -860,42 +800,22 @@
continue;
else
LNX="no"
- TG="`cat $TMP/reply`"
+ 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`
+ find_mbr
+ 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 \
+"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`"
+ LILO_TARGET="$(cat $TMP/reply)"
fi
rm -f $TMP/reply
elif [ "$TG" = "Root" ]; then
- LILO_TARGET=`echo $ROOT_DEVICE`
+ LILO_TARGET=$(echo $ROOT_DEVICE)
elif [ "$TG" = "Floppy" ]; then
LILO_TARGET="/dev/fd0"
else
@@ -903,7 +823,7 @@
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 \
+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" \
@@ -914,7 +834,7 @@
HDR="no"
continue;
else
- TIMEOUT="`cat $TMP/reply`"
+ TIMEOUT="$(cat $TMP/reply)"
fi
rm -r $TMP/reply
if [ "$TIMEOUT" = "None" ]; then
@@ -939,8 +859,13 @@
#
# Start LILO global section
boot = $LILO_TARGET
-
-#compact # faster, but won't work on all systems.
+EOF
+ 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
+# This option loads the kernel and initrd much faster:
+compact
EOF
# Boot splash
@@ -962,10 +887,10 @@
EOF
fi
- if [ ! "$APPEND" = "" -o ! "$UTFVT" = "" ]; then
+ #if [ ! "$APPEND" = "" -o ! "$UTFVT" = "" ]; then
echo "# Append any additional kernel parameters:" >> $TMP/lilo.conf
echo "append=\"$APPEND $UTFVT\"" >> $TMP/lilo.conf
- fi
+ #fi
cat << EOF >> $TMP/lilo.conf
$PROMPT
$TIMEOUT
@@ -1020,6 +945,8 @@
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"
@@ -1040,7 +967,7 @@
continue
fi
rm $TMP/tmpmsg
- LINUX_PART="`cat $TMP/reply`"
+ LINUX_PART="$(cat $TMP/reply)"
checkp_dialog $LINUX_PART
if [ ! $? = 0 ]; then
continue;
@@ -1053,8 +980,19 @@
if [ $? = 1 -o $? = 255 ]; then
continue
fi
- LABEL="`cat $TMP/reply`"
- cat << EOF >> $TMP/lilo.conf
+ LABEL="$(cat $TMP/reply)"
+ if [ -r $T_PX/boot/initrd.gz ]; then
+ cat << EOF >> $TMP/lilo.conf
+# Linux bootable partition config begins
+image = $KERNEL
+ initrd = /boot/initrd.gz
+ #root = $LINUX_PART
+ label = $LABEL
+ read-only # Partitions should be mounted read-only for checking
+# Linux bootable partition config ends
+EOF
+ else
+ cat << EOF >> $TMP/lilo.conf
# Linux bootable partition config begins
image = $KERNEL
root = $LINUX_PART
@@ -1062,6 +1000,7 @@
read-only # Partitions should be mounted read-only for checking
# Linux bootable partition config ends
EOF
+ fi
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
@@ -1081,13 +1020,13 @@
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
+"$(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`"
+ OS_2_PART="$(cat $TMP/reply)"
checkp_dialog $OS_2_PART
if [ ! $? = 0 ]; then
continue;
@@ -1100,9 +1039,9 @@
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
+ 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
@@ -1131,9 +1070,11 @@
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 or DOS partitions. They will be treated" > $TMP/tmpmsg
- echo "as such if you install them using this menu." >> $TMP/tmpmsg
+ 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
@@ -1141,17 +1082,17 @@
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
+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
+"$(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`"
+ DOSPART="$(cat $TMP/reply)"
checkp_dialog $DOSPART
if [ ! $? = 0 ]; then
continue;
@@ -1164,13 +1105,13 @@
if [ $? = 1 -o $? = 255 ]; then
continue
fi
- LABEL="`cat $TMP/reply`"
+ LABEL="$(cat $TMP/reply)"
unset USE_LOADER
- TABLE="`echo $DOSPART | cut -b1-8`"
- if [ "`echo $TABLE | cut -b6-8`" = "hda" ]; then
+ 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 [ "$(echo $TABLE | cut -b6-8)" = "sda" ]; then
if probe /dev/hda; then
USE_LOADER="yes"
else
@@ -1236,8 +1177,8 @@
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
+ 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