[syslinux] When is PATH directive used?

Alexander Perlis aperlis at math.lsu.edu
Fri Jun 10 12:44:20 PDT 2016

Ady asked:
> Have you read the "See also" section(s) of the wiki page(s)?


> By reading the relevant wiki pages, a user should (_hopefully_) get to
> the conclusion that the PATH directive is relevant for c32 modules, and
> not a replacement for the CONFIG / INCLUDE directives nor for relative
> paths based on the "Working Directory".

There's nothing in Directives/path that says it applies only to c32. 
Rephrasing the first sentence on that page:

   When attempting to open a file name, the CWD is searched first, 
before PATH.

Perhaps that should be:

   PATH is a space-separated list of path prefixes to be tried when 
searching for a C32 module. Note that the CWD is always searched first.

Wouldn't hurt to also say:

   Note also that PATH is not used when opening INCLUDE files, or the 
various types of KERNEL binary files.

> So, no, the case you are presenting here is not a bug.

It seems PATH would be more useful if it applied to *all* loads of 
binary files, and perhaps also to INCLUDE or perhaps a separate CFGPATH 
directive could give places to look for configuration files.

Which brings me back to my original question: any suggestion on how to 
make "common directory distinct config" work?

Ady suggested:
> In other words, put the c32 modules in the adequate (sub)directory, use
> the PATH directive accordingly, and use relative paths notation in the
> configuration file for directives other than PATH and for files other
> than c32 modules.

This won't work, since c32 aren't the only binaries that might be 
architecture specific. For example there was talk on this list at one 
point of making version of memdisk for EFI. I want a single config entry 
to load the correct memdisk depending on current running architecture. 
If I specify the relative path to the binary, then my config is specific 
to an architecture. If there were some kind of support to set a custom 
variable, then I could at least do this:

   SET MYARCH=bios
   INCLUDE rest.cfg

   LINUX syslinux/$MYARCH/memdisk

At any rate, my impression at this point is that "common directory 
distinct config" is not workable, when it seemed initially like an 
attractive way to have most of the config (all but an initial stub to 
set the PATH) be identical for both architectures. Bummer.


More information about the Syslinux mailing list