[syslinux] Module Versioning

BALATON Zoltan balaton at eik.bme.hu
Mon Mar 7 19:10:23 PST 2016


On Mon, 7 Mar 2016, Pete Batard via Syslinux wrote:
> I could also say something about the ISOHybrid _HACK_, which clearly is not 
> something that was ever intended by the people who designed ISO-9660, and 
> that could "either work if you're lucky or fail if you're not". Looking at 
> the recent history of this mailing list, it does seem to me like ISOHybrid 
> can be a bit of a headache...

Yes I agree it's not a perfect solution. The difference is that the 
headache in this case is for those tech savvy people creating the hybrid 
iso who should be able to figure it out so the non-tech savvy end users 
should not have a problem with it as long as used as intended. If the end 
users start to modify an iso without knowing what they are doing they 
could easily end up with problems. If Rufus can do it automatically for 
them then they are lucky, if not then they just broke something they were 
not supposed to change. I mean, trying to do something that was not 
intended by those that designed it can be a valid problem but not easy to 
solve cleanly.

If you're already rebuilding the boot loader on the iso you could also 
replace all of syslinux with a known working version that you have all the 
matching modules for and only keep the config. (This is what Ferenc has 
suggested.) This might save you having to keep all possible versions of 
syslinux ever appeared in the wild and avoid the need to detect the 
version of syslinux on the iso. But can break with patched syslinux 
versions or if they have custom modules. (But then trying to use a 
substitute part from a release for this customised version would likely 
break too.) I'm not sure if the config file is more portable between 
syslinux versions than modules but I guess it would be so for this keeping 
fewer versions could be enough.

I was also thinking about storing hashes of files that you have modules 
for and try to idenfify the version by comparing the hashes instead of 
trying to extract a version number from the binary, but this may be 
problematic as well because building with different compilers will result 
in different hashes and you don't know what was used by those created the 
iso.

I don't see a way to solve this problem in a way that is fool-proof and 
cannot break as this is inherently fragile because you can't know what's 
on the iso. It can be anything, even containing custom modules or patched, 
unreleased versions.

Also I'm surprised that isos converted this way still work and the 
software on them is not confused by having its files on a different 
filesystem loosing case sensitivity, access rights, links, etc. For simple 
live CDs running entirely from an initrd this could work but for anything 
more complex than that I wonder how it does not break.

Regards,
BALATON Zoltan


More information about the Syslinux mailing list