Posts: 1,308
BitJam
Joined: 31 Aug 2009
#1
The problem only shows up when you try to created a LiveUSB from within antiX-14-alpha-3.

We use gfxboot to create the fancy popup menus and other effects in our live bootloader. Gfxboot works with syslinux (which we are using) and also with legacy grub (which we are not).

The ABI (binary) interface in syslinux has changed in the version that comes with antiX-14-alpha-3. This change causes a lot of breakage and perhaps the most expedient thing to do would be to use an earlier version of syslinux in antiX-14.

If you look in the /live/boot-dev/boot/syslinux directory on a running LiveUSB (or just /boot/syslinux on the LiveUSB itself), you will see a bunch of files including:

Code: Select all

ldlinux.sys
gfxboot.c32
syslinux.bin
init
IIUC, the ldlinux.sys file is installed when the following command is run:

Code: Select all

extlinux --install /live/boot-dev/boot/syslinux
The other files carry over from our iso image. When the extlinux program is updated to version 6 (use"extlinux --version" to see the version) then the ldlinux.sys file is different and will not work with the existing .c32 files.

The quick and obvious solution does not quite work. The
========= SCRAPER REMOVED AN EMBEDDED LINK HERE ===========
url was:"http://www.syslinux.org/wiki/index.php/Library_modules"
linktext was:"Arch syslinux documentation"
====================================
explains the binary change. In theory, all we need to do is copy the following files from /usr/lib/syslinux/modules/bios/ into the syslinux directory:

Code: Select all

gfxboot.c32
ldlinux.c32
libcom32.c32
This should make everything happy and binary compatible.

Unfortunately it does not quite work. Our customized menus and so forth are in the binary"init" file above. For some reason I don't understand, our"init" file is not compatible with the new gfxboot.c32 module. I can get it to boot. I can use the up and down arrow keys to make a selection from the main menu BUT the screen is almost entirely blank (except for a thin horizontal rectangle) and typed-in boot parameters don't work. I tried copying in all the files from /usr/lib/syslinux/modules/bios/ but that had no effect.

I think the fact that it boots at all might mean that our"init" code is working to some extent but certain features (such as drawing to the screen) are broken. Usually when our"init" code crashes, you cannot boot. AFAIK, we are using the latest version of gfxboot from:
========= SCRAPER REMOVED AN EMBEDDED LINK HERE ===========
url was:"https://gitorious.org/gfxboot"
linktext was:"https://gitorious.org/gfxboot"
====================================
.

One clue *might* be the existence of gfxboot.c32 in efi32/ and efi64/ subdirectories next to the /usr/lib/syslinux/modues/bios subdirectory. AFAIK, gfxboot relies heavily on BIOS calls for things such as drawing to the screen. I doubt the syslinux devs replicated the BIOS interface using UEFI so I doubt our"init" code would work with gfxboot.c32 from one of the efi directories. If we could get it to work, I would be joyful because that would allow us to have our standard Live bootloader UI when booting via UEFI.

I don't know if the problem is that we have gone astray with our"init" code or if gfxboot is broken in general with the newer syslinux. I know gfxboot does not work with grub-2 at all (again, the problem seems to be porting all the BIOS calls to UEFI).

The first incompatibility bug I ran into (not booting at all due to binary incompatibility) has been
========= SCRAPER REMOVED AN EMBEDDED LINK HERE ===========
url was:"https://bugs.launchpad.net/ubuntu/+source/usb-creator/+bug/1325801"
linktext was:"reported on Ubuntu"
====================================
. I don't know if it leads to reports of the blank screen bug or not.

Bottom line: I think all ways of creating an antiX LiveUSB (with our standard bootloader UI) on antiX-14-alpha3 are broken. The only solution I know of ATM is to downgrade the syslinux package, which should fix everything. If anyone is able to create an antiX liveUSB (with our standard bootloader) using antiX-14-alpha-3, PLMK. I don't know yet if other people have solved this problem or not. I think the most productive thing would be to find out how others have handled this. ATM ISTM that downgrading syslinux in antiX-14 would be the easiest solution.
Posts: 1,308
BitJam
Joined: 31 Aug 2009
#2
Okay, here is the syslinux bug report:
========= SCRAPER REMOVED AN EMBEDDED LINK HERE ===========
url was:"http://www.syslinux.org/archives/2013-July/020379.html"
linktext was:"[syslinux] Problems with gfxboot.c32"
====================================
and here is the
========= SCRAPER REMOVED AN EMBEDDED LINK HERE ===========
url was:"http://www.syslinux.org/archives/2013-July/020385.html"
linktext was:"definitive answer"
====================================
:
Right, unfortunately gfxboot.c32 is making use of the COMBOOT API which
was deleted in 5.00 (it's done directly from 16-bit assembly so I didn't
catch it when doing the removal). Which means that it's missing large
parts of functionality, like being able to open and read/write files.

I'll take a look at fixing this.
So syslinux + gfxboot was broken upstream and we will have to wait for them to fix it. I am going back to using syslinux version 4.0x which is what was used in the earlier antiX-14 alpha releases. This works and it works with what people already have.
Posts: 325
male
Joined: 04 Nov 2011
#3
From the *downgrade* is also spoken here:

========= SCRAPER REMOVED AN EMBEDDED LINK HERE ===========
url was:"http://www.thomas-krenn.com/en/wiki/Installation_VMware_ESXi_5.0_from_a_USB-Stick"
linktext was:"http://www.thomas-krenn.com/en/wiki/Ins ... _USB-Stick"
====================================


I myself have the *on reserve*.
========= SCRAPER REMOVED AN EMBEDDED LINK HERE ===========
url was:"http://blog.jak.me/259"
linktext was:"http://blog.jak.me/259"
====================================

So far I had no time to test the ...

Edit: Ops, too slow ... __{{emoticon}}__