Oh bugger. I tried emailing John Coffman, the author of LILO, to get his
take on this (the previous comment), but the mail bounced.

It pretty much sums up my _suspicions_:
LILO has a heuristic to determine when the "large-memory" option is needed, but 
it underestimates, leading to this edge case. We are very close to the 
estimated compression ratio that LILO has.

My proposed solution:
Make LILO be more pessimistic about its estimate. This (untested) patch should 
do it:
--- boot.c.orig 2008-08-30 12:44:51.000000000 +0200
+++ boot.c      2008-08-30 14:36:51.000000000 +0200
@@ -84,7 +84,7 @@
            die("Can't load kernel at mis-aligned address 0x%08lx\n",hdr.start);
        descr->flags |= FLAG_LOADHI;    /* load kernel high */
        hi_sectors = sectors - setup;   /* number of sectors loaded high */
-       hi_sectors *= 3;                /* account for decompression */
+       hi_sectors *= 4;                /* account for decompression */
        if (hi_sectors < HIGH_4M) hi_sectors = HIGH_4M;
     }
     geo_close(&geo);

It basically makes LILO assume that the initrd has a compression ratio
of 4, therefore much sooner warning the user that "large-memory" is
required (and actually behaving as if "large-memory" was specified).

Soren: Could you test that this patch correctly gives a warning if you
run LILO (without the large-memory option)?

-- 
lilo needs to warn if initrd is too large
https://bugs.launchpad.net/bugs/260059
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to