[syslinux] Is it possible to chainload isolinux.bin file from syslinux

Gene Cumm gene.cumm at gmail.com
Mon Jun 2 03:40:45 PDT 2014


On Mon, Jun 2, 2014 at 2:49 AM, Ady <ady-sf at hotmail.com> wrote:
> On Sun, Jun 1, 2014 at 8:52 PM, Z C <zcnnbb at gmail.com> wrote:
>> I have a USB disk with syslinux files installed in /boot/syslinux, and the
>> bootloader is installed into MBR or VBR
>>
>> I then extracted a *.iso file which uses syslinux as the bootloader, into
>> root dir of the disk. The iso file contains a rescue OS or an OS installer.
>> Now I got the directory /isolinux with files isolinux.bin and isolinux.cfg
>> in this folder
>>
>> I can now boot into syslinux, but *what to do to boot/chainload the
>> isolinux.bin file to launch the OS*?
>>
>> Note that just load the isolinux config file /isolinux/ioslinux.cfg (using
>> "config" module) instead of chainloading entire isolinux is not what I
>> want. Because the version of my syslinux (official compiled binary) and the
>> isolinux (from another verdor) may be different and the isolinux may
>> contain some 3rd party patches. So just load the config file will sometimes
>> result in failure.
>>
>> My final purpose is to make a universal USB boot disk: It can boot any
>> extracted iso as long as the iso file is made using isolinux.
>>
>> So perhaps the most elegant solution to this is chainload isolinux from
>> syslinux.
>>
>
> When you say "_may_ contain some 3rd party patches", do you actually
> know there are 3rd party patches there?

Along these lines, I know for a fact that VMware's ESXi installer ISOs
ship with a patched mboot.c32 however I've loaded them from the
matching SYSLINUX version with no issues.t

> You need to match the version of the c32 modules with the version of
> the bootloader. If the particular ISO image includes a Syslinux
> installer and all the relevant c32 modules for the same version, you
> could use those for your USB drive.
>
> Unless there are specific reasons (such as a special c32 module that
> is not publicly available, for instance), using upstream official
> binaries would be (generally speaking) recommended for merging the
> content of multiple ISO images into one "multiboot" USB drive.
>
> There are other options, such as loading the ISO image with MEMDISK
> or using a different bootloader. Each alternative has its own pros
> and cons.

Short answer: no, this is impossible.  There will be no one clear
answer for your goals.

1) ISOLINUX only comprehends ISO9660 file systems.  SYSLINUX does not
comprehend ISO9660 file systems.

2) After the initial boot payload is launched (ie a Linux kernel and 0
or more initrds ), many OSs won't hunt for their media on a USB
stick/MEMDISK since they expect they were booted from an ISO.  Note,
there are select exceptions and some can be retrained.

Long answer:

Getting around point #1 can be done by having every single version of
SYSLINUX installed to unique directories (saving the VBR before
installing the next) and using some logic, likely a COM32 module you
write, to determine which version to chainload to.

Point #2 will exist for MEMDISK and ISO extraction.  The main issues
with arbitrary MEMDISK usage are related to
http://www.syslinux.org/wiki/index.php/MEMDISK#INT_13h_access:_Not_all_images_will_complete_the_boot_process.21
 With ISO extraction, the data is often reachable but there isn't
always logic to fine/attempt to use it.

-- 
-Gene


More information about the Syslinux mailing list