[syslinux] config.c32 fails in 5.00pre12

Ady ady-sf at hotmail.com
Thu Nov 29 06:32:40 PST 2012


> On Wed, 2012-11-28 at 23:25 +0200, Ady wrote:
> > The config.c32 module (and the CONFIG directive) is not behaving as 
> > expected when using syslinux.exe 5.00pre11 as installer. To 
> > replicate:
> > 
> > 
> > 1_ The content of the device:
> > 
> > /dira
> > /cat.c32
> > /config.c32
> > /ldlinux.c32
> > /ldlinux.sys
> > /libcom32.c32
> > /pwd.c32
> > /syslinux.cfg
> > 
> > /dira/dira.cfg
> >  
> > 2_ Content of /syslinux.cfg:
> > 
> > 
> > DEFAULT pwd1
> > PROMPT 0
> > LABEL config1
> > COM32 config.c32 /dira/dira.cfg
> > APPEND /dira/
> > LABEL pwd1
> > COM32 pwd.c32
> > LABEL config11
> > CONFIG /dira/dira.cfg
> > APPEND /dira/
> > 
> > 3_ Content of /dira/dira.cfg
> > 
> > DEFAULT pwd2
> > LABEL pwd2
> > COM32 /pwd.c32
> > LABEL config2
> > COM32 /config.c32 /syslinux.cfg
> > APPEND /
> > LABEL config21
> > CONFIG /syslinux.cfg
> > APPEND /
> > 
> > 
> > 3_ Boot and Run "config1" label.
> > 
> > 4_ Run config2 label
> > 
> > 5_ Press TAB.
> > 
> > Since "config2" should have loaded syslinux.cfg, pressing [TAB] 
> > should bring the labels in syslinux.cfg, but it doesn't. Instead, it 
> > brings again the labels from dira.cfg.
> > 
> > 6_ Run /pwd.c32
> > Undef symbol FAIL: getcwd
> > 
> > 5_ pwd.c32
> > (without the "/") does nothing and returns to the prompt.
> > 
> > 6_ config2
> > Undef symbol FAIL: fprintf
> > 
> > 
> > The above is just one of several ways I see config.c32 (and the 
> > CONFIG directive) failing, specially when using the second argument 
> > (to change the soon-to-be-current working directory), whether in 
> > absolute or relative notations.
> 
> I just pushed out syslinux-5.00-pre12. Please test that. Note that it
> won't fix step 6 above, though it does fail much more gracefully. You
> can work around it by adding,
> 
> 	PATH /
> 
> to your dira.cfg file. However, we do need to fix that properly, so that
> when you type the absolute path to a module, we search in that directory
> for its dependencies. I'm working on a fix for that.

Should I use a different PATH if the new cfg file is located in a 
different location (not in "/")?

Also, I thought that "/" was already in PATH by default.

I hope there is a better solution in any case (which should also 
cover relative paths used in config.c32 and in the CONFIG directive).


> 
> > In addition, if I also use a DISPLAY file in syslinux.cfg, the screen 
> > is cleaned up when running step #3 above, and step #5 doesn't show 
> > any available labels. I personally don't see this clean up as 
> > necessary (and it even be inconvenient in certain situations). I 
> > don't know why using DISPLAY would affect the above procedure, but it 
> > does.
> 
> I'll look at this for the next prerelease.
> 
> -- 
> Matt Fleming, Intel Open Source Technology Center
> 
> 

Additional problem, generated with the same example but with 
5.00pre12.

1_ Boot

2_ Run config1

3_ Press [TAB]. Note that "config11" is NOT listed, since it is not 
part of dira.cfg.

4_ Run "config11" (which is NOT a listed label in dira.cfg).
Loading config11... failed: No such file or directory.

5_ Press [TAB], as in step #3. This time no label is listed!!! Why? 
The failure in step #4 shouldn't affect the available labels.


6_ I can "recover" by:
/config.c32 /syslinux.cfg /
and repeat the whole procedure again.

There shouldn't be any reason for this type of failure ("file or 
directory not found") to affect the next steps. Is as if the last cfg 
file is not valid (not loaded) anymore after the failure (so no 
labels are available).

TIA,
Ady.




More information about the Syslinux mailing list