[PATCH] i386, x86_64: Change Boot Protocol to longer command lines



After the kernel can handle command lines with 2048 characters, the
documentation should be updated.

I think it would be better to increase the boot protocol version, just
to make it possible that kexec and bootloaders can determine the size
of the command line. The problem is that if we just increase the
length in kexec, it's not possible to determine if the user wants to
load an old kernel and warn him that the kernel truncates the command
line after 256 characters.

Signed-off-by: Bernhard Walle <bwalle@xxxxxxx>
Acked-by: Torsten Duwe <duwe@xxxxxxx>

---
Documentation/i386/boot.txt | 11 ++++++-----
arch/i386/boot/setup.S | 2 +-
2 files changed, 7 insertions(+), 6 deletions(-)

Index: b/Documentation/i386/boot.txt
===================================================================
--- a/Documentation/i386/boot.txt
+++ b/Documentation/i386/boot.txt
@@ -2,7 +2,7 @@
----------------------------

H. Peter Anvin <hpa@xxxxxxxxx>
- Last update 2007-01-26
+ Last update 2007-02-01

On the i386 platform, the Linux kernel uses a rather complicated boot
convention. This has evolved partially due to historical aspects, as
@@ -243,10 +243,11 @@ relevant to the boot loader itself, see
below.

The kernel command line is a null-terminated string currently up to
-255 characters long, plus the final null. A string that is too long
-will be automatically truncated by the kernel, a boot loader may allow
-a longer command line to be passed to permit future kernels to extend
-this limit.
+2047 characters long, plus the final null. With protocol version
+2.05 and earlier, the maximum length was 255 characters. A string
+that is too long will be automatically truncated by the kernel, a boot
+loader may allow a longer command line to be passed to permit future
+kernels to extend this limit.

If the boot protocol version is 2.02 or later, the address of the
kernel command line is given by the header field cmd_line_ptr (see
Index: b/arch/i386/boot/setup.S
===================================================================
--- a/arch/i386/boot/setup.S
+++ b/arch/i386/boot/setup.S
@@ -81,7 +81,7 @@ start:
# This is the setup header, and it must start at %cs:2 (old 0x9020:2)

.ascii "HdrS" # header signature
- .word 0x0205 # header version number (>= 0x0105)
+ .word 0x0206 # header version number (>= 0x0105)
# or else old loadlin-1.5 will fail)
realmode_swtch: .word 0, 0 # default_switch, SETUPSEG
start_sys_seg: .word SYSSEG
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Proposed update of the i386 boot document
    ... THE LINUX/I386 BOOT PROTOCOL ... the Linux kernel uses a rather complicated boot ... may not even support a command line. ... low memory touched by the boot loader -- as low as possible, ...
    (Linux-Kernel)
  • [PATCH] x86_64, i386: Add command line length to boot protocol
    ... Because the command line is increased to 2048 characters after 2.6.20-rc6-mm1, ... This patch updates the boot protocol to contain a field called "cmdline_size" ... there was no kernel before that has another limit than 256 characters. ...
    (Linux-Kernel)
  • Re: About my problem
    ... >> you can't boot to multiuser mode. ... >> user mode with the root partition you tell the kernel as above. ... The command syntax is a bit intimidating ... > and I made the modifications to the fstab file with a regular editor. ...
    (freebsd-questions)
  • Re: GRUB module query
    ... directly compiled into the kernel since it needs it to boot:) ... Is there a way to load the kernel with modules right from boot? ... Set GRUB's root device to the drive where the OS images are ... stored by the command @command. ...
    (Ubuntu)
  • Re: [PATCH 19-rc1] Fix typos in /Documentation : Misc
    ... +do not have a corresponding kernel virtual address space mapping) and ... This command sets the scale factor for the ABSOLUTE MOUSE POSITIONING mode. ... If you check the source code you will see that what I draw here as a frame ... interrupt-parent: contains the phandle of the interrupt ...
    (Linux-Kernel)