Lilo, the 2.6.30.x kernel and Slackware on x86_64
Although Slackware -current still has a 2.6.29.x kernel, I am sure that people are experimenting with 2.6.30 kernels. In some cases, and only on Slackware for the x86_64 architecture so far, this may lead to boot problems. There is a problem that manifests itself when you are using an initial ramdisk with your kernel. The error message that you may see (unless it scrolls off your screen too fast) is this:
“initramfs unpacking failed: junk in compressed archive“
As a result, your computer will fail to boot.
Now, what is happening here?
By default, LILO loads your initial ramdisk (/boot/initrd.img) into the first 15MB of memory. This circumvents a BIOS limitation for older systems (typically, computers produced before 2001).
However, the linux kernel has been growing in size, and there are combinations of kernel and initrd that will no longer fit into the first 15MB of memory. This leads to boot failure. Because of the fact that the kernel and initrd files are compressed archives, the rule of thumb is that these issues appear when the combined size of your kernel and initrd files is larger than 8 MB. The kernel will then overwrite part of the initrd in memory, leading to the above error message.
For computers with a x86_64 capable CPU, it is safe to assume that the computer has a BIOS without the 15MB limitation. In this case, you can add the following parameter to your “/etc/lilo.conf” file:
large-memory
This option instructs LILO to use a larger memory window when loading the initial ramdisk (do not forget to run the “lilo” command after making this change). It will cure the issue.
I think this should be added as a default option in the lilo.conf file generated by the liloconfig utility of slackware64.
Eric
Ooh, thanks for writing this up. I had planned to note this in C&H anyway, so now if I forget, at least it’s somewhere that’s easy to find — I don’t want anyone else to go through the headache I experienced. 🙂