aboutsummaryrefslogtreecommitdiffstats
--- 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