[syslinux] fixing debian's hd-media image

Carl Karsten carl at personnelware.com
Fri Nov 30 14:01:04 PST 2018


On Fri, Nov 30, 2018 at 9:56 AM Ady Ady via Syslinux <syslinux at zytor.com> wrote:
>
> @Carl,
>
> I have a proposal for you here (in the Syslinux mailing list): let's
> first find out _what_ exactly is required in order to boot in UEFI
> mode, and then you can take the info downstream. Whether "downstream"
> means your own personal customized boot.img, or D-I, or whatever else,
> that's another matter.

yep

>
> Considering that thought, for now let's forget about the above "mcopy"
> instructions and/or _how_ exactly "downstream" would achieve the "what"
> I just mentioned.
>
>
> > 2 problems I have identified:
> > If I don't put the above syslinux.cfg and go with what is on the d-i
> > setup, this seems to hang it:
> >
> > default vesamenu.c32
> >
> > #comment that out, and I get to another problem that I haven't taken
> > the time to track down yet.
> > Does any of this look like a problem?
> >
>
>
> (snip)
>
> Yes, of course you don't have a menu, because you are using c32 files
> from the BIOS platform (those that came with the original boot.img),
> not from EFI64.

Right. we can ignore all that for now.

>
> For this "troubleshooting", please forget about the original d-i setup
> (for now), as it is not relevant for what you want to achieve at this
> initial step.

ok, lets build from an almost blank image.  it will still have the
syslinux boot loader (is that the right term?)
and linux/initrd

>
> For troubleshooting, you do _not_ want to create your "simple
> syslinux.cfg" for booting in UEFI mode in the root directory of the fs
> (of your USB).
>
> Let me rephrase what I wrote in my prior email. You need to see the
> following files, in this exact location within the FAT(32) filesystem
> volume in your USB device (later we could move around some things, but
> for now, KISS):
>
> * From the 'efi64' subdirectory for syslinux files, 'syslinux.efi' to:
> _ /media/sdc/EFI/BOOT/BOOTX64.EFI
>
> * From the 'efi64' subdirectory for syslinux files, 'ldlinux.e64' to:
> _ /media/sdc/EFI/BOOT/LDLINUX.E64
>
> * From boot.img (or from wherever you are taking your kernel+initrd)
> to:
> _ /media/sdc/linux
> _ /media/sdc/initrd.gz
>
> (that's the root of your FAT32 fs in your USB device, not
> "./EFI/BOOT/")
>



> For now, all the rest is not needed, and I might say it is not even
> welcomed.

deleted all the other files

>
> In addition to those files that you will copy from those locations to
> that specific directories / filenames, you need to create one file:
> _ /media/sdc/EFI/BOOT/SYSLINUX.CFG
>
> Please note that the directory is _not_ the root of your fs but
> "./EFI/BOOT/" in the fs of the USB device. This directory is the same
> as where you already have 'BOOTX64.EFI' and 'LDLINUX.E64'.
>
> The content of "/media/sdc/EFI/BOOT/SYSLINUX.CFG" should be:
>
> ###  EFI/BOOT/SYSLINUX.CFG  start ###
> #
> # Note that there are no special symbols
> # and no spaces within the labels.
> # IOW, labels should be one word with English letters when
> troubleshooting.
> # Even better, make that "at most 8 English letters" when
> troubleshooting.
> #
> # Additionally, we will avoid naming labels using
> # the name of any other files.
> # E.g., if our kernel file is named 'linux'
> # then no label should be 'linux'.
>
> DEFAULT mylabel
> PROMPT 1
> TIMEOUT 100
> SAY *** Press enter to boot the default label ***
>
> LABEL mylabel
> # Please note it is not "my label", no spaces within the label.
> # Please note it is not "linux", as the kernel is already named
> 'linux'.
>
> LINUX /linux
> # Please note it is not "KERNEL /linux" nor "LINUX linux".
>
> INITRD /initrd.gz
> # Please note it is not "INITRD initrd.gz",
> # we use absolute paths here too.
>
> ### EFI/BOOT/SYSLINUX.CFG  end ###
>
> Now, for troubleshooting, you do not want anything else in your USB
> device, other than those files I just mentioned. IOW, you want to be
> sure at this point that the only way to boot this device is by UEFI
> mode in the x64 platform, using syslinux.efi, and then it should boot
> your 'linux+initrd.gz' files in such mode. My suggestion would be to
> move anything irrelevant, for this initial troubleshooting, out of the
> USB device.
>
> In particular, please avoid having "/syslinux.cfg" in (the root of)
> your USB device at this time.


+ 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
+ cat
+ tree target
target
├── EFI
│   ├── BOOT
│   │   ├── BOOTX64.EFI
│   │   ├── LDLINUX.E64
│   │   └── SYSLINUX.CFG
│   └── syslinux
├── initrd.gz
└── linux

3 directories, 5 files
+ cat target/EFI/BOOT/SYSLINUX.CFG
###  EFI/BOOT/SYSLINUX.CFG  start ###
#
# Note that there are no special symbols
# and no spaces within the labels.
# IOW, labels should be one word with English letters when troubleshooting.
# Even better, make that "at most 8 English letters" when troubleshooting.
#
# Additionally, we will avoid naming labels using
# the name of any other files.
# E.g., if our kernel file is named 'linux'
# then no label should be 'linux'.

DEFAULT mylabel
PROMPT 1
TIMEOUT 100
SAY *** Press enter to boot the default label ***

LABEL mylabel
# Please note it is not "my label", no spaces within the label.
# Please note it is not "linux", as the kernel is already named 'linux'.

LINUX /linux
# Please note it is not "KERNEL /linux" nor "LINUX linux".

INITRD /initrd.gz
# Please note it is not "INITRD initrd.gz",
# we use absolute paths here too.

### EFI/BOOT/SYSLINUX.CFG  end ###

the version of my code is here for anyone that wants to get a clean copy:
https://salsa.debian.org/debconf-video-team/ansible/blob/e6e02369fad365cbed90f10b8df888fcda87783d/usbinst/uefi/build_uefi.sh


>
> I know, I know... We don't have a boot menu yet. Patience :).
>
> For a boot menu, and only when the above configuration actually boots
> your kernel+initrd in UEFIx64 mode, we will add some additional
> Syslinux files from the 'efi64' subdirectory and we'll edit
> "/media/sdc/EFI/BOOT/SYSLINUX.CFG" accordingly.
>
> Could you please confirm that the above setup actually works? If it
> fails in
> any way, we need to know that too.

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.


>
> If this setup works, we'll add complexity and a boot menu, and
> eventually we
> will also put back the BIOS stuff.

I'd like to get the installer menus (what comes on the boot.img)
working with as little change as possible.
Even if they aren't great, I am more interested in my patch to
upstream being simple and easy to accept.

Patience... yes.. I'll let you continue to drive.


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