aboutsummaryrefslogtreecommitdiffstats
path: root/patches/liloconfig_14.2.patch
blob: 47cae65fe915d6e33e35e03a120cd78bca545347 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
--- 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