Re: [PATCH][TAKE 4] THE LINUX/I386 BOOT PROTOCOL - Breaking the 256 limit

H. Peter Anvin
2006-05-05T18:20:47Z

John Coffman wrote:
> It is probably fairly easy to increase the LILO command line to 512
> bytes (including terminator). Beyond 512 there are complicating factors:
>
> 1. "lilo -R ..." -- the space reserved for the stored command line is 1
> sector.
> 2. configuration option "fallback" -- again 1 sector is the amount
> reserved.
>
> There are 2 buffers used for the command line. Since these are
> allocated on sector boundaries, 512 should present no serious problems.
>

The problem isn't that LILO can't handle more than some number of characters; that's a
LILO issue and doesn't affect the kernel.

The problem is that some people have reported that the kernel crashes if booted with LILO
and the size limit is more than 255. They haven't so far commented on how they observed
that, and that's a major problem.

If the issue is that LILO doesn't null-terminate overlong command lines, then that's
pretty easy to deal with:

- If the kernel sees protocol version <= 2.01, limit is 255+null.
- If the kernel sees protocol version >= 2.02, but ID is 0x1X, limit is 255+null.
- Otherwise limit is higher.

When LILO is fixed, it has to bump the ID byte version number.

What ID byte values has LILO used?

-hpa