Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

LILO "L 99 99..." boot problem - SOLVED!

7 views
Skip to first unread message

Centurion

unread,
Apr 3, 2003, 3:28:31 AM4/3/03
to
According to the LILO manual a boot error of "L xx xx xx.." where xx is
some number is due to the drive geometry being wrong or misreported by
the BIOS.

My hardware is an ASUS A7V running two ATA100 drives as masters one on
each of the ATA100 controller channels. I also have a PCI SCSI
controller for a third hard drive, scanner and CD-RW. The 2 onboard IDE
controllers are disabled in BIOS. The BIOS boot order is ATA100/SCSI
then Onboard IDE then Floppy last is network. So my BIOS reports the
drives in the following order if present:
ATA100-1 Master 0x80
ATA100-1 Slave 0x81
ATA100-2 Master 0x82
ATA100-2 Slave 0x83
SCSI-ID0 0x84
...
etc. incrementing 0x8? by one for each SCSI ID.

For my machine Linux interpreted 0x80 as /dev/hde because it could still
interrogate the standard IDE controllers even though they were disabled
and the BIOS was not reporting any drives present during boot.
(/dev/hda -> /dev/hdd are the onboard IDE controller drives).

I could boot the Debian installation OK, even Knoppix had no problems.
But as soon as I tried booting using LILO after a normal install, it all
went pear-shaped. Sound familiar?

OK. It's easily fixed :-) Just needs a little info-gathering and
lilo.conf tweaking first.

Your BIOS is not telling LILO the truth about the hard drives.

1. Boot using a rescue floppy or Knoppix etc.

2. Run "hdparm -g /dev/hd?" on each of your hard drives (you need to
know which one is on which controller). In my case /dev/hdg and
/dev/hde. /dev/hde is the first device (or 0x80) and /dev/hdg is the
second (or 0x81).

3. Copy the drive geometry down: it is displayed as
cylinders/heads/sectors.

4. Edit lilo.conf and add the following for each drive on your ATA100
controller:
disk=/dev/hde
drive=0x80
cylinders=xxxxxx
heads=yyyyy
sectors=zzzzz

(where x/y/z is the c/h/s returned by hdparm).

5. Repeat for other drives.

6. Run "lilo" and that's it :-)

Below is a copy of my lilo.conf file to compare.

# /etc/lilo.conf - See: `lilo(8)' and `lilo.conf(5)',
# --------------- `install-mbr(8)', `/usr/share/doc/lilo/',
# and `/usr/share/doc/mbr/'.

# +---------------------------------------------------------------+
# | !! Reminder !! |
# | |
# | Don't forget to run `lilo' after you make changes to this |
# | conffile, `/boot/bootmess.txt', or install a new kernel. The |
# | computer will most likely fail to boot if a kernel-image |
# | post-install script or you don't remember to run `lilo'. |
# | |
# +---------------------------------------------------------------+

# Support LBA for large hard disks.
#
lba32

# Overrides the default mapping between harddisk names and the BIOS'
# harddisk order. Use with caution.
disk=/dev/hde
bios=0x80
cylinders=2495
heads=255
sectors=63

disk=/dev/hdg
bios=0x81
cylinders=58168
heads=16
sectors=63

# Specifies the boot device. This is where Lilo installs its boot
# block.
boot=/dev/hde

# Specifies the device that should be mounted as root. (`/')
#
root=/dev/hdg3

# Installs the specified file as the new boot sector
# You have the choice between: bmp, compat, menu and text
# Look in /boot/ and in lilo.conf(5) manpage for details
#
install=/boot/boot-menu.b

# Specifies the location of the map file
#
map=/boot/map

# Specifies the number of deciseconds (0.1 seconds) LILO should
# wait before booting the first image.
#
delay=20

prompt
timeout=150
vga=6

# Boot up Linux by default.
#
default=Linux

image=/vmlinuz
label=Linux
initrd=/boot/initrd.debinstall
read-only
append="apm=power-off vga=6"

image=/vmlinuz.old
label=LinuxOLD
read-only
optional

# If you have another OS on this machine to boot, you can uncomment the
# following lines, changing the device name on the `other' line to
# where your other OS' partition is.
other=/dev/hde1
label="Win2000-Pro"


0 new messages