[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