[syslinux] Maximum line length of APPEND option in PXELINUX

Geert Stappers stappers at stappers.nl
Thu Feb 24 02:29:00 PST 2005


On Thu, Feb 24, 2005 at 10:18:32AM +0100, Gebhardt Thomas wrote:
> On Wednesday 23 February 2005 19:52, you wrote:
> 
> Hi,
> 
> > > Is this intentional? What is the maximum length of the APPEND option
> > > line?
> >
> > 255 characters.
> 
> Thank you very much for the quick answer!
> 
> I can live with that. Just got surprised by the fact that my old pxelinux.0
> (vers 2.11?) worked while the new one (vers. 3.0.7) just hangs without
> an error message.
> 
> The long kernel command line originate from the Knoppix Linux Live CD
> (or derived distributions) that (mis?)uses the kernel command line for
> system configuration options ("cheat codes"). There is even a Knoppix
> 2.4 kernel patch that expands the maximum length of the kernel command
> line.
> 
> Since Knoppix is rather widespread, the problem with the overly large APPEND
> line might show up frequently when syslinux 3.x is adopted (Knoppix now uses
> syslinux 2.x).

I see the warning that you are telling,
but I'm almost clueless about the impact of the Request For Change.

> 
> Cheers, Thomas

Cheers
Geert Stappers
-- 
stappers at bahrain:/usr/src/syslinux-3.07
$ grep 255 *
bcopy32.inc:            mov byte [cs:A20Tries],255 ; Times to try to make this work
config.inc:max_cmd_len  equ 255                 ; Must be odd; 255 is the kernel limit
extlinux.doc:   limited to 255 characters.
isolinux.doc:- The maximum length of any pathname is 255 characters.
lss16toppm:    $r = int((shift @colorset) * 255 / 63 + 0.5);
lss16toppm:    $g = int((shift @colorset) * 255 / 63 + 0.5);
lss16toppm:    $b = int((shift @colorset) * 255 / 63 + 0.5);
lss16toppm:print "255\n";
NEWS:     pathname is 255 characters.  As a result, only 64 "label"
ppmtolss16:         return (255,255,255) if ( $ch eq '0' ); # White
ppmtolss16:    $maxcol = 255;           # Internal convention
ppmtolss16:             $erun = 255;
pxelinux.asm:           cmp al,255      ; END option
rllpack.inc:; 129-255   = (x-126) times subsequent byte
rllpack.inc:            cmp bl,255-126
stappers at bahrain:/usr/src/syslinux-3.07
$ grep max_cmd_len *
config.inc:max_cmd_len  equ 255                 ; Must be odd; 255 is the kernel limit
extlinux.asm:vk_append: resb max_cmd_len+1      ; Command line
isolinux.asm:vk_append: resb max_cmd_len+1      ; Command line
ldlinux.asm:vk_append:  resb max_cmd_len+1      ; Command line
parsecmd.inc:AppendBuf       resb max_cmd_len+1 ; append=
parsecmd.inc:Ontimeout  resb max_cmd_len+1      ; ontimeout
parsecmd.inc:Onerror            resb max_cmd_len+1      ; onerror
parseconfig.inc:                mov cx,max_cmd_len+1
parseconfig.inc:command_line    resb max_cmd_len+2      ; Command line buffer
parseconfig.inc:default_cmd     resb max_cmd_len+1      ; "default"
command linepxelinux.asm:vk_append: resb max_cmd_len+1      ; Command line
ui.inc:.not_ctrl_f:     cmp di,max_cmd_len+command_line ; Check there's space
ui.inc:         mov cx,(max_cmd_len+4) >> 2
ui.inc:         lea cx,[max_cmd_len+bx]
ui.inc:         ; CX == max_cmd_len-[OnerrorLen]
ui.inc:         mov di,command_line+max_cmd_len-1
stappers at bahrain:/usr/src/syslinux-3.07
$





More information about the Syslinux mailing list