[syslinux] fixing debian's hd-media image

Carl Karsten carl at personnelware.com
Sun Dec 2 14:14:23 PST 2018


On Sun, Dec 2, 2018 at 12:32 PM Ady Ady via Syslinux <syslinux at zytor.com> wrote:
>
> > > 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)
>
>
> These are _not_ bad news.
>
> The two c32 modules that don't need additional module libraries are
> working correctly (i.e. they execute with no errors, and the result is
> what we expected).
>
> Since vesamenu.c32 requires additional c32 modules to work, there are 2
> methods to solve the problem.
>
> For a customized, personal use, the solution is simple. But since the
> intention is to send a patch for Debian, we cannot take the "simple"
> solution.

yep.

>
>
> Now, in spite of what you already attempted (that you wrote in another
> email) regarding the PATH directive, we are going to edit
> "target/EFI/BOOT/SYSLX64.CFG":
>
> ###  EFI/BOOT/SYSLX64.CFG  start ###
>
> # Note that the path starts with NO slash
> # and ends with a slash
> PATH SYSLINUX/EFI64/
>
> 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 ###
>
>
> Since we are troubleshooting, we want to delete anything that could
> potentially cause some strange behavior (whether expected, or because
> of some (un)known bug). And so, I'll ask you to delete (at least for
> now):
>
> _ target/EFI/BOOT/SYSLINUX.CFG

I don't think that exists?  (see list below)

>
> _ target/EFI/BOOT/SYSLINUX/EFI64/ldlinux.e64

rm $target/EFI/BOOT/SYSLINUX/EFI64/ldlinux.e64
rm -f $target/ldlinux.c32
rm -f $target/ldlinux.sys

I just noticed those 2 files that were added by
syslinux -i boot.img
(right?)

> Before performing the test (the same as I requested in my prior email),
> please double check that all the syslinux-related files are originated
> from the following binary packages:
>
> _ syslinux-common_6.04~git20171011.af7e95c3+dfsg1-5
>
> _ syslinux-efi_6.04~git20171011.af7e95c3+dfsg1-5
>
>
> Since you have been mixing binaries from several different sources /
> builds / versions in your prior attempts / scripts, it is very
> important that you triple check that the binary files you are using now
> (in your "target" device/image) are exactly those I just posted. These
> packages are from current Debian "Testing" repo.
>

I'm pretty sure everything is coming from testing:

juser at dc10b:~/temp$ apt-cache policy syslinux syslinux-efi
syslinux-common |grep 500
 *** 3:6.04~git20171011.af7e95c3+dfsg1-5 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
 *** 3:6.04~git20171011.af7e95c3+dfsg1-5 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
 *** 3:6.04~git20171011.af7e95c3+dfsg1-5 500
        500 http://deb.debian.org/debian buster/main amd64 Packages

Is there any way to check versions of what ends up on the image?

I do see 6.04 here:

+ dd if=/dev/zero of=boot.img bs=100M count=1
1+0 records in
1+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.999141 s, 105 MB/s
+ /sbin/mkfs.msdos boot.img
mkfs.fat 4.1 (2017-01-24)
+ syslinux -i boot.img
+ qemu-system-x86_64 -m 512 -drive file=disk.cow,index=0 -drive
file=boot.img,index=1,format=raw,if=none,id=thumb -device
ide-hd,drive=thumb,bootindex=1

http://imgr.sytes.net/a/qemu5.png


>
> BEWARE:
>  We are about to use the PATH directive. This PATH directive has
> several issues, inconveniences, shortcomings, and bugs. Hence, the next
> test _might_ "fail" to show the boot menu. According to (or depending
> on) your next report, we might need to perform some minor adjustments.
> IOW, if your next test fails, don't worry and report the results as
> accurately as possible.
>

report:
using this code:
https://salsa.debian.org/debconf-video-team/ansible/blob/05480062710486be6b5f5501f560ce3552e87c99/usbinst/uefi/build_uefi.sh

Undef symbol FAIL: memset

everything else is the same as before:
http://imgr.sytes.net/a/qemu4.png

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
│       │       ├── 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

4 directories, 48 files
+ cat target/EFI/BOOT/SYSLX64.CFG
###  EFI/BOOT/SYSLX64.CFG  start ###

# Note that the path starts with NO slash
# and ends with a slash
PATH SYSLINUX/EFI64/

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 ###


> 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



More information about the Syslinux mailing list