[syslinux] fixing debian's hd-media image

Carl Karsten carl at personnelware.com
Sat Dec 1 23:42:40 PST 2018


to make sure I'm not mixing up syslinux versions, I've swapped wget
pre-build img for creating from scratch:

dd if=/dev/zero of=boot.img bs=100M count=1
/sbin/mkfs.msdos boot.img
syslinux -i boot.img

https://salsa.debian.org/debconf-video-team/ansible/blob/cf4bb5d60dced51e8e4fb0c2eb3fc4c3f7ecc6ed/usbinst/uefi/build_uefi.sh#L25-27

also, on a whim I added:

path SYSLINUX/EFI64/

that adds a line:
Undef symbol FAIL: memset

and then the other errors I listed above:
 Failed to load libcom32.c32

On Sat, Dec 1, 2018 at 4:32 PM Carl Karsten <carl at personnelware.com> wrote:
>
> On Sat, Dec 1, 2018 at 2:46 AM Ady Ady via Syslinux <syslinux at zytor.com> wrote:
> >
> > > it works. (boots into the d-i installer, I don't care if the installer
> > > is missing stuff, booting it is all we care about here.
> >
> >
> > OK, so let's add complexity (but not the whole thing, not yet).
> >
> > We already have:
> >
> > target
> > ├── EFI
> > │   ├── BOOT
> > │   │   ├── BOOTX64.EFI
> > │   │   ├── LDLINUX.E64
> > │   │   └── SYSLINUX.CFG
> > │   └── syslinux
> > ├── initrd.gz
> > └── linux
> >
> > The 'EFI/BOOT/syslinux/' directory was a leftover from your prior tests
> > (and not a requirement in my prior email). In the previous (our
> > "effective first") test, it was not used. Since we are going to use it
> > now, and in order to be coherent with other directory and file names
> > related to Syslinux in FAT(32) (and considering we are troubleshooting
> > a "generic" procedure), we are going to rename 'EFI/BOOT/syslinux/' to
> > 'EFI/BOOT/SYSLINUX/' (all uppercase).
> >
> > * Once we don't have 'EFI/BOOT/syslinux/' anymore (because we renamed
> > it to all-uppercase), in your "target" device, we want (at least) one
> > additional directory:
> >  _ "target/EFI/BOOT/SYSLINUX/EFI64/"
> >
> > (all uppercase)
> >
> > * From the 'efi64' subdirectory (tree) for syslinux files in your
> > OS/package/archive, you want to copy all "*.c32" files to:
> >
> >  _ "target/EFI/BOOT/SYSLINUX/EFI64/*.c32"
> >
> > Let me re-emphasize this point: the "*.c32" modules we are copying
> > right now are from the "efi64" subdirectory (and down its tree). If you
> > put in this (newly-created) "target/EFI/BOOT/SYSLINUX/EFI64/" directory
> > any c32 module that is not from the efi64 platform, eventually
> > something will fail and we will have no way to know what's wrong.
> > Please, do _not_ mix in this directory any c32 file from a different
> > platform (not from "efi32", and not from "bios").
> >
> > The reason we are copying _all_ the c32 modules from efi64 at this step
> > is for simplicity when troubleshooting. We probably don't really need
> > all of them, but such potential "clean-up" can be done later-on, when
> > we know that all the basic things are working as expected.
> >
> >
> > Now we want to test whether the basic functionality of vesamenu.c32 in
> > efi64 works with this setup, _without_ focusing on the specific linux
> > kernel you eventually would like to boot nor on the whole Debian menu;
> > in these next steps (and in the next test), we are focusing on
> > vesamenu.c32 and our current directory tree.
> >
> > * You need to create a new file:
> >
> > _ "target/EFI/BOOT/SYSLX64.CFG"
> >
> > Please note: "SYSLX64.CFG" is supported since Syslinux 6.04-pre1. Older
> > versions do not support this configuration file name.
> >
> > Please note: There are several ways to achieve the main goal; this is
> > only one of them. I'm trying to make it as simple as possible for
> > troubleshooting (IMHO).
> >
> >
> > The (initial, for now) content of "target/EFI/BOOT/SYSLX64.CFG":
> >
> > ###  EFI/BOOT/SYSLX64.CFG  start ###
> >
> > UI SYSLINUX/EFI64/vesamenu.c32
> > DEFAULT lslabel
> > PROMPT 1
> > TIMEOUT 100
> > SAY *** Press enter to boot the default label ***
> >
> > LABEL lslabel
> > COM32 SYSLINUX/EFI64/ls.c32
> >
> > LABEL pwdlabel
> > COM32 SYSLINUX/EFI64/pwd.c32
> >
> > LABEL mylabel
> > LINUX /linux
> > INITRD /initrd.gz
> >
> > ###  EFI/BOOT/SYSLX64.CFG  end ###
> >
> > * Save / close any relevant opened files and unmount the image (or the
> > fs of your testing device).
>
> mkdir -p $target/EFI/BOOT $target/EFI/BOOT/SYSLINUX/EFI64
> cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi $target/EFI/BOOT/BOOTX64.EFI
> cp /usr/lib/syslinux/modules/efi64/ldlinux.e64 $target/EFI/BOOT/LDLINUX.E64
> cp /usr/lib/syslinux/modules/efi64/* $target/EFI/BOOT/SYSLINUX/EFI64
>
> + tree target
> target
> ├── EFI
> │   └── BOOT
> │       ├── BOOTX64.EFI
> │       ├── LDLINUX.E64
> │       ├── SYSLINUX
> │       │   └── EFI64
> │       │       ├── cat.c32
> │       │       ├── chain.c32
> │       │       ├── cmd.c32
> │       │       ├── cmenu.c32
> │       │       ├── config.c32
> │       │       ├── cptime.c32
> │       │       ├── cpu.c32
> │       │       ├── cpuid.c32
> │       │       ├── cpuidtest.c32
> │       │       ├── debug.c32
> │       │       ├── dhcp.c32
> │       │       ├── dir.c32
> │       │       ├── dmi.c32
> │       │       ├── dmitest.c32
> │       │       ├── gfxboot.c32
> │       │       ├── hdt.c32
> │       │       ├── hexdump.c32
> │       │       ├── host.c32
> │       │       ├── ifcpu64.c32
> │       │       ├── ifcpu.c32
> │       │       ├── ldlinux.e64
> │       │       ├── lfs.c32
> │       │       ├── libcom32.c32
> │       │       ├── libgpl.c32
> │       │       ├── liblua.c32
> │       │       ├── libmenu.c32
> │       │       ├── libutil.c32
> │       │       ├── linux.c32
> │       │       ├── ls.c32
> │       │       ├── lua.c32
> │       │       ├── mboot.c32
> │       │       ├── meminfo.c32
> │       │       ├── menu.c32
> │       │       ├── pci.c32
> │       │       ├── pwd.c32
> │       │       ├── reboot.c32
> │       │       ├── rosh.c32
> │       │       ├── sysdump.c32
> │       │       ├── syslinux.c32
> │       │       ├── vesa.c32
> │       │       ├── vesamenu.c32
> │       │       ├── vpdtest.c32
> │       │       ├── whichsys.c32
> │       │       └── zzjson.c32
> │       └── SYSLX64.CFG
> ├── initrd.gz
> └── linux
>
> + cat target/EFI/BOOT/SYSLX64.CFG
> ###  EFI/BOOT/SYSLX64.CFG  start ###
>
> UI SYSLINUX/EFI64/vesamenu.c32
> DEFAULT lslabel
> PROMPT 1
> # TIMEOUT 100
> SAY *** Press enter to boot the default label ***
>
> LABEL lslabel
> COM32 SYSLINUX/EFI64/ls.c32
>
> LABEL pwdlabel
> COM32 SYSLINUX/EFI64/pwd.c32
>
> LABEL mylabel
> LINUX /linux
> INITRD /initrd.gz
>
> ###  EFI/BOOT/SYSLX64.CFG  end ###
>
>
> >
> > When booting in UEFI x64 mode in your next test, you should see a boot
> > menu.
>
> Nope:
>
> *** Press enter to boot the default label ***
> Failed to load libcom32.c32
> Failed to load COM32 file SYSLINUX/EFI64/vesamenu.c32
> boot:
>
> > I'd like to ask you to test all the entries in the menu and
> > report the results for each. If, instead, the boot menu does not show
> > up, we need to know the details / results too.
> >
> > A minor detail (that might be relevant for your report): we are
> > defining a TIMEOUT of 10.0 seconds. When you select "lslabel", the
> > result should show up on screen during those 10.0 seconds (unless you
> > press 'enter', or some other key, before that time), and then the boot
> > menu should show up again. The same goes for "pwdlabel". So, if you
> > want to take note of the results of each entry and you hadn't have
> > enough time, then, while in the boot prompt, simply press the "left
> > arrow" (or "cursor") key once and then the "right arrow" key once, or
> > change the TIMEOUT value, or select the same menu entry again from the
> > boot menu. IOW, the TIMEOUT value is relevant not only when the boot
> > menu is displayed on screen but also when the boot prompt is awaiting
> > some initial input.
>
> I #disabled the timeout so that it wouldn't keep cluttering the screen
> when I was trying to take notes.
>
> at the boot: prompt, hit tab, enter the 3 ...
>
> boot:
> lslabel pwdlabel mylabel
> boot: lslabel
> [dir]           [dir] SYSLINUX        LDLINUX.E64
> [dir]  .             BOOTX64.EFI      SYSLX64.CFG
> boot: pwdlabel
> /EFI/BOOT/
> boot: mylabel
> (linux boots)
>
>
> > Regards,
> > Ady.
> >
> > _______________________________________________
> > Syslinux mailing list
> > Submissions to Syslinux at zytor.com
> > Unsubscribe or set options at:
> > http://www.zytor.com/mailman/listinfo/syslinux
>
>
>
> --
> Carl K



-- 
Carl K



More information about the Syslinux mailing list