[syslinux] regression: relocatable kernels on a chromebook

Scot Doyle
Fri, 06 Feb 2015 03:18:27 -0000

A Toshiba CB35 Chromebook running Google's stock SeaBIOS reboots after
selecting a relocatable kernel from extlinux 6.03.

This is a regression caused by commit 8f470e7b
    movebits: Add syslinux_memmap_find()

which factors syslinux_memmap_find() out of bios_boot_linux(). Prior to
the refactoring, prot_mode_size was passed as the length in the first call
to syslinux_memmap_type(). After the refactoring, hdr.init_size was
passed. Now, with commit ef81a3ad, one or the other is passed according to
whether the kernel is relocatable.

bios_boot_linux() reaches syslinux_shuffle_boot_rm(), rebooting if the
kernel is relocatable and successfully starting the kernel if not.

If I modify syslinux_memmap_find() to pass prot_mode_size as the length to
syslinux_memmap_type(), extlinux 6.03 is able to start both types of
kernel.

Possibly related to
https://bugzilla.redhat.com/show_bug.cgi?id=1135793
https://bugs.archlinux.org/task/40637

I'd be happy to submit a patch or test one. Thoughts?