--- liloconfig.orig 2020-05-18 01:30:25.457982369 +0200
+++ liloconfig 2020-12-05 12:48:42.535216766 +0100
@@ -22,6 +22,11 @@
# 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
@@ -249,6 +254,45 @@
return $RETVAL
}
+# 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
# the way which may or may not be correct, but usually work), and sets up
# LILO in either the superblock, or the MBR.
@@ -289,38 +333,7 @@
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
+ find_mbr
LILO_TARGET=$(cat $TMP/LILOMBR)
elif [ "$TG" = "Root" ]; then
LILO_TARGET=$(echo $ROOT_DEVICE)
@@ -452,7 +465,18 @@
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
@@ -460,6 +484,7 @@
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!
@@ -668,6 +693,8 @@
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
@@ -680,7 +707,7 @@
# 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 \
@@ -777,27 +804,7 @@
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
+ 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. \
@@ -852,7 +859,11 @@
#
# Start LILO global section
boot = $LILO_TARGET
-
+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
@@ -970,7 +981,18 @@
continue
fi
LABEL="$(cat $TMP/reply)"
- cat << EOF >> $TMP/lilo.conf
+ 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
@@ -978,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
@@ -1154,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