[syslinux] Configuration file not found when using non-standard installation path
Ady
ady-sf at hotmail.com
Sat Aug 22 08:19:19 PDT 2015
> Installing with:
>
> syslinux --directory otherdir -i my_unmounted_device
>
> will install the bootloader in the desired directory ("otherdir") under
> the root directory of the desired unmounted device
> ("my_unmounted_device").
>
> All the corresponding syslinux-related files are located in the same
> installation directory.
>
> When booting this device, SYSLINUX fails to find a configuration file
> located in the installation directory ("/otherdir/syslinux.cfg").
>
> Executing pwd.c32 from CLI, the result is consistent with the
> successful installation of the bootloader, "/otherdir/"
>
> Executing ls.c32 from CLI, the resulting list includes the
> configuration file, syslinux.cfg, listed under "/otherdir/". So,
> SYSLINUX is capable of finding the file in that directory; it just
> doesn't search for it during its boot sequence.
>
> Since the configuration file, syslinux.cfg, has not been found by
> SYSLINUX during the boot, the LABELs are not recognized.
>
> The procedure can be replicated with versions 4.07 and 6.03.
>
> If also one of the standard installation directory paths (e.g.
> "/boot/syslinux/") exists in the booting device, then the situation can
> be considered even worse.
>
> If "/boot/syslinux/" exists (too) in the booting device, but the
> configuration file is not there, then the CWD will still be
> "/otherdir/".
>
> If "/boot/syslinux/syslinux.cfg" exists, then the initial CWD will be
> "/boot/syslinux/", not the installation directory, "/otherdir/", in
> spite of the bootloader file(s) (ldlinux.*) being located / installed
> in "/otherdir/". This is almost expected, except that the presence of
> the configuration file located in the installation directory should had
> set the CWD to that installation directory.
>
> With "/boot/syslinux/syslinux.cfg" being found, the LABELs in it might
> still fail to execute. If the paths in syslinux.cfg are all written in
> absolute notation and if the files are indeed located in the
> corresponding paths, then the LABELs would work. If the syslinux.cfg
> file was copied/moved from "/otherdir/" and the paths in it are written
> in relative notation, the LABELs will fail, unless all the files
> (except the bootloader files, "ldlinux.*") under "/otherdir/" are
> copied/moved to "/boot/syslinux/" too.
>
> So, if the installation directory is one of the standard directories,
> all works as expected. But if the installation directory is other than
> the standard ones, the behavior is slightly inconsistent.
>
> BTW, "core/fs/lib/loadconfig.c" includes:
> * This searches for extlinux.conf and syslinux.cfg in the install
> * directory, followed by a set of fallback directories. If found,
> * set the current working directory to match.
>
> which means that we are failing to do what that paragraph says we are
> supposed to be doing (i.e. searching in the install directory first).
>
> Shouldn't we add the "installation" directory to
> "core/fs/lib/loadconfig.c", and/or to "core/fs/lib/searchconfig.c",
> and/or to some file(s) in "core/fs/lib/", as first searched-for path?
>
> Or perhaps there is some other method so to solve this slight
> inconsistency(?).
>
> TIA,
> Ady.
Oops. I have to apologize for sending an incomplete report.
I detected that I forgot to specify the most important part of the
report.
If the installation command is:
syslinux -d otherdir -i my_device
then the resulting behavior is as I described in my prior email.
If, instead, the installation command is:
syslinux -d /otherdir/ -i my_device
(note the slash characters, "/", in the parameter for "--directory",
"/otherdir/")
then the resulting behavior is as really expected, and as described in
"core/fs/lib/loadconfig.c", searching for the configuration file
name(s) in the installation directory first (and finding it when
present).
So, I have to ask, is there a way to improve this slight inconsistency?
Sure, we could _just_ improve the documentation by adding this little
detail (we should do it anyway), but in addition maybe there is a way
to improve the code so to interpret the following "--directory"
alternative parameters:
_ -d otherdir/subdir
_ -d /otherdir/subdir
_ -d otherdir/subdir/
in the same way as:
_ -d /otherdir/subdir/
so the user can achieve the objective without having to care about the
notation of the parameter?
Note: I have _not_ tested each and every alternative notation I am
mentioning here, just the two I posted in the complete example
commands.
This is obviously not a major issue, but perhaps a patch is
simple-enough and with a low-risk of introducing regressions? – The
latter part of this question / sentence is especially relevant for
those installers that are based on OSes other than Linux; if in doubt,
lets just document the matter and move on to more important things.
TIA,
Ady.
> _______________________________________________
> Syslinux mailing list
> Submissions to Syslinux at zytor.com
> Unsubscribe or set options at:
> http://www.zytor.com/mailman/listinfo/syslinux
>
More information about the Syslinux
mailing list