[syslinux] fixing debian's hd-media image

Carl Karsten
Sun, 02 Dec 2018 22:14:23 -0000

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