--- 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=\"\" 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