[syslinux] fixing debian's hd-media image
Carl Karsten
carl at personnelware.com
Sat Dec 1 14:32:42 PST 2018
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
More information about the Syslinux
mailing list