[syslinux] [PATCH] Correct chain.c32 v. 6.04-pre1 for Reactos

Ady Ady ady-sf at hotmail.com
Thu Feb 23 11:22:35 PST 2017

> On Mon, Feb 20, 2017 at 2:17 PM, Ady Ady via Syslinux
> <syslinux at zytor.com> wrote:
> > Correct the "seg=" value(s) corresponding to the "reactos=" option
> > for chain.c32.
> >
> > The correct segment parameter should be "seg=0x0F80",
> > instead of the incorrect / failing ones "seg=0:0x8000:0x8100".
> >
> > References:
> >  https://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/notes.txt?revision=73859&view=markup&pathrev=73859#l24
> >
> >  https://git.reactos.org/?p=reactos.git;a=blob;f=reactos/boot/freeldr/notes.txt;hb=HEAD
> >
> >  https://git.reactos.org/?p=reactos.git&a=search&h=HEAD&st=grep&s=FREELDR_BASE
> >
> >  https://git.reactos.org/?p=reactos.git;a=blob;f=reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h;h=c747d145cb3b35f68caab5291dc65dcdca21f17d;hb=HEAD#l17
> >
> >  https://git.reactos.org/?p=reactos.git;a=blob;f=reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h;hb=HEAD
> >
> > At the time of writing this patch, the up-to-date bootsectors referring to
> > the above 'define' ("FREELDR_BASE") have a filename extension ending with ".S".
> >
> > There is also "multiboot.S", FWIW.
> >
> > Regards,
> > Ady.
> It's a bit more complex.  At the time of writing, the data was perfect.
> https://git.reactos.org/?p=reactos.git;a=blob;f=reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h;hb=28e58e6d01892c1f2f0e1d323745e6463cb9e6c9
> dated 2011-06-14
> https://git.reactos.org/?p=reactos.git;a=blob;f=reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h;hb=1dabbdfa6bbe244cd74bc912b94e514b85d63bbe
> https://git.reactos.org/?p=reactos.git;a=blob;f=reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h;hb=0eb6daaf66127de803d36d45a4eea29d30a7ca36
> dated 2011-06-18 finalized the shuffle.
Regarding the patch for chain.c32 (which is what it matters here now), 
I don't see complexity, nor the need to "extra" emphasize the change in 
the Syslinux changelog (see the end of this email).

Regarding prior versions of chain.c32, the "reactos=file" option never 
worked, as the assumed values for the corresponding "seg=" option were 
never _effectively_ correct (independently of what Reactos' source code 
seemingly said circa 2010-2011). In part, this can be seen in the 
(prior) source code itself (see "options.c" for the "chain" module), 
which mentions a conflicting information regarding adequate "seg=" 

The effect is that, for prior Syslinux versions, the "reactos=file" 
option for chain.c32 should be considered invalid (or non-existent). It 
is only unfortunate that the "reactos=file" option was publicly 
announced years ago without having a more clear and stable information 
from the part of Reactos (and relevant testing), but that's history 

The incorrect behavior of the "reactos=file" option (generated by 
inadequate segment values) has been reported in the past, several times 
by diverse channels. This patch corrects the "seg=" values for Reactos.

The correct "seg=" values for the "reactos=file" option have been 
confirmed by developers of Reactos and also successfully tested using 
VMs. In the same way(s), the prior (incorrect) "seg=" values have been 
also confirmed to fail.

Please keep in mind that this patch corrects the usage of the 
"reactos=file" option for SYSLINUX, but it is not enough for PXELINUX, 
as Reactos needs "keeppxe" (also reported to The Syslinux Project 
several times by diverse channels), and the latter is not working since 
Syslinux 5.00 till today. Perhaps the patch for "keeppxe" sent by Adam 
Goldman during 2016June ( 
http://www.syslinux.org/archives/2016-June/025216.html "Fix recognition 
of keeppxe option") might solve that matter (I wouldn't know).


> This should have been put in place years ago by the looks but it's
> going to need a big glaring warning in the release notes.
> -- 
> -Gene

Of course, if my patch is applied to chain.c32, then it should  (and 
will) be part of the next Syslinux changelog, and I already have the 
item added in my local copy, for a future "NEWS" patch. As soon as I 
have confirmation of the Syslinux commit, I will also correct the 
Syslinux wiki for chain.c32 and the changelog wiki page.

If the "keeppxe" problem gets to be solved too (to be proven by tests 
from different users) in the Syslinux official code, I'll also add it 
to the relevant places.

Thank you and Best Regards,

More information about the Syslinux mailing list