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
Code: Select all
extlinux --install /live/boot-dev/boot/syslinux
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
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.