[syslinux] 5.01 whichsys.c32 / ifcpu64.c32 does not execute labels

Ady ady-sf at hotmail.com
Fri Feb 1 19:46:43 PST 2013


> On 02/01/2013 08:52 PM, Ady wrote:
> > 
> >> Hello
> >>
> >> I am working as developer of archiso (Arch Linux ISO creator). I am
> >> triying to get working with syslinux 5.01 (previously using 4.06).
> >>
> >> whichsys.c32 does not execute labels and does not throws any error, just
> >> a help message (the same thing happens with ifcpu64.c32 and ifcpu.c32)
> >>
> >> Example:
> >>
> >>
> >> boot: <<TAB>>
> >>  select pxe sys
> >>
> >> boot: whichsys -iso- sys -pxe- pxe -sys- sys
> >> Usage:    whichsys.c32 [-iso- command] [-pxe- command] [-sys- command]
> >> Examples: whichsys.c32 -iso- chain.c32 hd0 -sys- chain.c32 hd1 swap
> >>           whichsys.c32 -iso- config iso.cfg -pxe- config pxe.cfg
> >> boot:
> >>
> >> The same things happens if anything command is passed as arguments, ie:
> >>
> >> boot: whichsys -sys- coco -iso- pepe
> >> Usage:    whichsys.c32 [-iso- command] [-pxe- command] [-sys- command]
> >> Examples: whichsys.c32 -iso- chain.c32 hd0 -sys- chain.c32 hd1 swap
> >>           whichsys.c32 -iso- config iso.cfg -pxe- config pxe.cfg
> >> boot:
> >>
> >> also if I try to execute a c32 file without extension, ie:
> >>
> >> boot: whichsys -iso- ls -sys- pwd
> >> Usage:    whichsys.c32 [-iso- command] [-pxe- command] [-sys- command]
> >> Examples: whichsys.c32 -iso- chain.c32 hd0 -sys- chain.c32 hd1 swap
> >>           whichsys.c32 -iso- config iso.cfg -pxe- config pxe.cfg
> >> boot:
> >>
> >> But if I pass with .c32, it works, but shows the helper message at end:
> >>
> >> boot: whichsys -iso- ls.c32 -sys- pwd.c32
> >> [dir] .                    [dir] i686                       pkglist_i686.txt
> >> [dir] ..                         aitab
> >> [dir] boot                       checksum_i686.md5
> >> Usage:    whichsys.c32 [-iso- command] [-pxe- command] [-sys- command]
> >> Examples: whichsys.c32 -iso- chain.c32 hd0 -sys- chain.c32 hd1 swap
> >>           whichsys.c32 -iso- config iso.cfg -pxe- config pxe.cfg
> >> boot:
> >>
> >>
> >> I detected this, because it does not work from config file:
> >>
> >> ---
> >> DEFAULT select
> >>
> >> LABEL select
> >> COM32 boot/syslinux/whichsys.c32
> >> APPEND -pxe- pxe -sys- sys -iso- sys
> >>
> >> LABEL pxe
> >> CONFIG boot/syslinux/archiso_pxe_choose.cfg
> >>
> >> LABEL sys
> >> CONFIG boot/syslinux/archiso_sys_choose.cfg
> >> ---
> >>
> >> If more info/tests is needed please let me know.
> >>
> >  
> > When you tried to use whichsys.c32, could you please provide:
> 
> > A_ the path for your Current Working Directory?
> 
> boot: pwd
> /arch/
> 
> 
> > B_ the path for the cfg file where you have the relevant whichsys.c32 
> > boot entry?
> 
> /arch/boot/syslinux/archiso.cfg
> /arch/boot/syslinux/whichsys.c32
> 
> > C_ the path of the boot loader, and which one you used in your tests 
> > (ldlinux.sys, isolinux.bin)?
> 
> both modes: syslinux and isolinux
> 
> * /arch/boot/syslinux/ldlinux.sys ( when installed on VFAT [extlinux -i
> /<MNT>/arch/boot/syslinux] )
> 
> /arch/boot/syslinux/syslinux.cfg looks like this:
> 
> ---
> DEFAULT loadconfig
> 
> LABEL loadconfig
>   CONFIG archiso.cfg
>   APPEND ../../
> ---
> 
> * /isolinux/isolinux.bin
> 
> When booting in this mode directly using "El Torito" or via
> "hybrid-mbr-iso": there is a /isolinux/isolinux.cfg with contents:
> 
> ---
> PATH /arch/boot/syslinux/
> DEFAULT loadconfig
> 
> LABEL loadconfig
>   CONFIG /arch/boot/syslinux/archiso.cfg
>   APPEND /arch/
> ---
> 
> 
> > D_ the path where you have ldlinux.c32?
> 
> /arch/boot/syslinux/ldlinux.c32
> 
> > E_ the path where you have libcom32.c32?
> 
> /arch/boot/syslinux/libcom32.c32
> 
> > 
> > Maybe with that additional info the issue can be replicated.
> 
> You may want to ask, "why all these chains?" because in this way, with
> only one and the same directory structure and configuration files, we
> made posible without any change to boot via all three mode
> isolinux/syslinux/pxelinux and selecting if CPU supports 64-bit :)
> 
> 
> I made a cutted (just syslinux relevant files) hard disk img (qcow2) for
> qemu if you want (1.4MB) at:
> http://dl.dropbox.com/u/88891866/arch_.img.gz
> 

I can replicate the initial report. To neutralize other possible 
effects, I made a simple test for whichsys.c32, selecting labels, 
with a "standard" structure booting ISOLINUX 4.06 and 5.01.

 *** syslinux.cfg start ***

UI menu.c32

LABEL pwd1
COM32 pwd.c32

LABEL select
COM32 whichsys.c32
APPEND -pxe- pxe -sys- sys -iso- sys

LABEL ls1
COM32 ls.c32

LABEL pxe
COM32 hello.c32

LABEL sys
COM32 hello.c32

 *** syslinux.cfg end ***

All the files are located in "/boot/syslinux/". Note that the PATH 
directive was not used, but in this "standard" and simple structure, 
I think it is not needed.

Testing with ISOLINUX 4.06, it indeed works as expected. Version 5.01 
shows instead the help for whichsys.c32 as already described. Testing 
whichsys.c32 v.5.01 with commands instead of labels works as 
expected.

@Matt, Hpa and Gert,
Hmm, could this behavior be related to the way Syslinux 5.xx deals 
with "default" file extensions?

PS (off-topic):
@Gerardo Exequiel Pozzi, BTW, you might want to reconsider using 
"/arch/boot/syslinux/". By using "/boot/syslinux/" (without the 
initial "/arch/") you might still be able to achieve your goal (same 
cfg files for all variants), and you probably wouldn't need the 
"/boot/isolinux/" path at all (and you might even not need the new 
PATH directive, but that depends on other characteristics too). This 
is independent of the report above. To be clear, I am not 
recommending anything in particular; just mentioning a possible 
alternative (and this is off-topic in this email thread).

Regards,
Ady.


More information about the Syslinux mailing list