lkml.org 
[lkml]   [2006]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH][TAKE 4] THE LINUX/I386 BOOT PROTOCOL - Breaking the 256 limit

    Extending the kernel parameters to a user determined size
    on boot protocol >=2.02 for i386 and x86_64 architectures.

    Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>

    ---

    Hello,

    Current implementation allows the kernel to receive up to
    255 characters from the bootloader.

    In current environment, the command-line is used in order to
    specify many values, including suspend/resume, module
    arguments, splash, initramfs and more.

    255 characters are not enough anymore.

    This is take 4 of this submission.

    Take 4 (current), no reply of what is the problem in LILO.
    Can someone please reply Peter questions? I understand that
    people don't want the new kernel config option... But fixing
    LILO should be more complex.

    Take 3 - Back to menuconfig option, so it won't
    break LILO (Although if it is broken because of this, it
    should be fixed...).

    Here are the comments from H. Peter Anvin:
    > Does anyone know the actual details of the LILO breakage?
    > If the problem is that LILO doesn't null-terminate the string when it's too long,
    > then we can deal with this automatically, without introducing compile-time options
    > (which were already once rejected.)
    >
    > If the problem is with LILO booting *old* kernels, then that's going to have to require
    > some LILO changes, and probably a boot revision bump.

    Take 2 - Removed the menuconfig into a fixed 2048 size. This
    patch was rejected. This is what the 2.6.11-rc2 changelog
    has to say about the matter:

    > Revert "x86_64/i386: increase command line size" patch
    > It's a bootup dependancy, you can't just increase it
    > randomly, and it breaks booting with LILO.
    > Pointed out by Janos Farkas and Adrian Bunk.

    Take 1 - Patch that allows command-line size to be
    determined in menuconfig. People did not want to see a new
    config option.

    ---

    If any of you think that this should be applied for other
    architectures, please reply.

    Current architectures that have 256 limit are:
    alpha, cris, i386, m64k, mips, sh, sh64, sparc, sparc64,
    x86_64, xtensa

    Current architectures that have 512 values are:
    frv(512), h8300(512), ia64(512), m32r(512), m68knommu(512),
    mips(512), powerpc(512), v850(512)

    Current architectures that are OK:
    arm(1024), arm26(1024), parisc(1024)

    Current strange ones:
    s390(896) - I guess IBM has a good reason for this constant...

    Best Regards,
    Alon Bar-Lev

    diff -urNp linux-2.6.16/arch/i386/Kconfig linux-2.6.16.new/arch/i386/Kconfig
    --- linux-2.6.16/arch/i386/Kconfig 2006-03-20 07:53:29.000000000 +0200
    +++ linux-2.6.16.new/arch/i386/Kconfig 2006-04-14 01:35:06.000000000 +0300
    @@ -644,6 +644,14 @@ config EFI
    anything about EFI). However, even with this option, the resultant
    kernel should continue to boot on existing non-EFI platforms.

    +config COMMAND_LINE_SIZE
    + int "Maximum kernel command-line size"
    + range 256 4096
    + default 256
    + ---help---
    + This enables adjusting maximum command-line size. If you are unsure
    + specify 256.
    +
    config IRQBALANCE
    bool "Enable kernel irq balancing"
    depends on SMP && X86_IO_APIC
    diff -urNp linux-2.6.16/arch/x86_64/Kconfig linux-2.6.16.new/arch/x86_64/Kconfig
    --- linux-2.6.16/arch/x86_64/Kconfig 2006-03-20 07:53:29.000000000 +0200
    +++ linux-2.6.16.new/arch/x86_64/Kconfig 2006-04-14 01:35:30.000000000 +0300
    @@ -445,6 +445,14 @@ config PHYSICAL_START

    Don't change this unless you know what you are doing.

    +config COMMAND_LINE_SIZE
    + int "Maximum kernel command-line size"
    + range 256 4096
    + default 256
    + ---help---
    + This enables adjusting maximum command-line size. If you are unsure
    + specify 256.
    +
    config SECCOMP
    bool "Enable seccomp to safely compute untrusted bytecode"
    depends on PROC_FS
    diff -urNp linux-2.6.16/include/asm-i386/param.h linux-2.6.16.new/include/asm-i386/param.h
    --- linux-2.6.16/include/asm-i386/param.h 2006-03-20 07:53:29.000000000 +0200
    +++ linux-2.6.16.new/include/asm-i386/param.h 2006-04-14 02:00:45.000000000 +0300
    @@ -19,6 +19,15 @@
    #endif

    #define MAXHOSTNAMELEN 64 /* max length of hostname */
    +
    +/*
    + * This COMMAND_LINE_SIZE definition was left here
    + * for compatability, its correct location is in setup.h.
    + * Boot loaders that use this parameters will continue
    + * to use 256 maximum command-line size.
    + */
    +#ifndef CONFIG_COMMAND_LINE_SIZE
    #define COMMAND_LINE_SIZE 256
    +#endif

    #endif
    diff -urNp linux-2.6.16/include/asm-i386/setup.h linux-2.6.16.new/include/asm-i386/setup.h
    --- linux-2.6.16/include/asm-i386/setup.h 2006-03-20 07:53:29.000000000 +0200
    +++ linux-2.6.16.new/include/asm-i386/setup.h 2006-04-14 01:32:16.000000000 +0300
    @@ -17,7 +17,7 @@
    #define MAX_NONPAE_PFN (1 << 20)

    #define PARAM_SIZE 4096
    -#define COMMAND_LINE_SIZE 256
    +#define COMMAND_LINE_SIZE CONFIG_COMMAND_LINE_SIZE

    #define OLD_CL_MAGIC_ADDR 0x90020
    #define OLD_CL_MAGIC 0xA33F
    diff -urNp linux-2.6.16/include/asm-x86_64/setup.h linux-2.6.16.new/include/asm-x86_64/setup.h
    --- linux-2.6.16/include/asm-x86_64/setup.h 2006-03-20 07:53:29.000000000 +0200
    +++ linux-2.6.16.new/include/asm-x86_64/setup.h 2006-04-14 01:33:27.000000000 +0300
    @@ -1,6 +1,6 @@
    #ifndef _x8664_SETUP_H
    #define _x8664_SETUP_H

    -#define COMMAND_LINE_SIZE 256
    +#define COMMAND_LINE_SIZE CONFIG_COMMAND_LINE_SIZE

    #endif
    \
     
     \ /
      Last update: 2006-05-05 15:38    [W:0.025 / U:30.776 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site