[syslinux] 5.00 c32 dependencies paths

Ady ady-sf at hotmail.com
Sun Dec 9 08:39:51 PST 2012


> On Sat, Dec 8, 2012 at 2:15 PM, Ady <ady-sf at hotmail.com> wrote:
> >
> > So, for example, if you installed ldlinux.sys in a UFD, the installer
> > already copies ldlinux.sys and ldlinux.c32. If you want to use
> > menu.c32 too, then the UFD should contain (for this example):
> >
> >  ./boot/syslinux/ldlinux.sys
> >  ./boot/syslinux/ldlinux.c32
> >  ./boot/syslinux/menu.c32
> >  ./boot/syslinux/libutil_com.c32
> >  ./boot/syslinux/syslinux.cfg
> >
> >
> Not working. Statically linked elf modules like cat.c32 work just fine from
> "boot:" prompt, but modules dynamically linked to lib&.c32 files do not
> work. They give "Failed to load" message. I think this is due to hardcoded
> lib*.c32 paths in other elf modules. I alo tried Syslinux 6.00-pre efi64
> 
>     /EFI/syslinux/syslinux.efi
>     /EFI/syslinux/syslinux.cfg
>     /EFI/syslinux/*.c32 (including lib*.c32)
> 

I am giving an example for 5.00 with BIOS system, not for the 6.00 
(U)EFI branch. So, it is indeed working as I wrote it, with the 
_exact_ CWD I wrote, using the official binaries included in 5.00.

I would suggest starting with the official binaries, using expected 
paths, and including all *.c32 files in the same initial installation 
directory "/boot/syslinux/" from 5.00. Once you get that first step 
working, then you may want to start playing with other paths, CONFIG 
directive, PATH directive, relative paths,...

Now, if you want to test 6.00 pre-releases, that's great, but I would 
tend to think that it would be easier to first understand what to 
expect, before getting to "not working".

I have some cases not working as I expected in 5.00, but the basic 
case I described above indeed works correctly for me.


> Syslinux reads syslinux.cfg so I guess the issue is not in detecting the
> CWD (since otherwise it wouldn't load ldlinux.c32 and syslinux.cfg . For
> some reason in the "boot:" prompt typing any LABEL defined in syslinux.cfg
> boots linux kernel just fine (even though linux.c32 depends on libcom32.c32"
> 

Are you using linux.c32 from the command prompt? If it is failing 
from the simple menu but working correctly from cli, then maybe 
that's a bug related to [vesa]menu.c32, their dependencies and PATH, 
where the cli is not affected, thus responding correctly.

> 
> Both menu.c32 and vesamenu.c32 fail to load because of lib*.c32 error. I
> even added
> 
>     PATH /EFI/syslinux:/boot/syslinux:/syslinux
> 
> as very first line of /EFI/syslinux/syslinux.cfg . Since this issue is
> originally from elflink branch, it should be fixed there and merged into
> firmware branch.
> 

Again, i would suggest starting with "traditional" expected 
well-known paths (not "/EFI/..."). The "/EFI/..." initial path might 
be added to the 6.00 branch (or not, I wouldn't know), but AFAIK it 
is not a "traditional" expected path for 5.00.

In theory, you could use CONFIG to change directories, but that is 
not part of the well-known initial installation directories. FWIW, 
one of my reports about 5.00 failing already involves the CONFIG 
directive.

Regards,
Ady.



More information about the Syslinux mailing list