[syslinux] Boot fails in a VMware player VM - syslinux 6.03

Didier Spaier didier at slint.fr
Sun Nov 9 16:41:53 PST 2014


Hi there,

I failed to boot an installer in a VMware player (Version6.0.3 
build-1895310)
using syslinux 6.03, be it off an hybrid ISO image and an USB stick.

Booting succeeds if the VM is set to use a BIOS firmware with both media,
but fails using an efi firmware.

Trying to boot off the ISO image I get an error message "The firmware
    encountered an unexpected exception"

Trying to boot off the USB stick I get a black screen.

In both cases I see in vmplayer*.log:
    VMHSGetDataFileKey: Could not get the dataFileKey from VMDB

I have no idea what that means.

Alas I don't have a real machine with an UEFI firmware to try and see
if the problem occurs only in a VM (and would be very grateful if
a kind soul could do that for me).

I used only official binaries taken directly from the source tarball, as
shown in attached file. This file and the ISO image are also available
in http://slint.fr/misc/testing

In that file you can see:
. the end of the script used to make the ISO image,
. the tree of the ISO file,
. the beginning of /EFI/BOOT/syslinux.cfg,
. the output of "dumpet -h -i <filename>.iso"

As you can see, I've put all needed file in /EFI/BOOT, also copied in the
Fat 12 partition included in /isolinux/efiboot.img

I can add entries in the boot menu as the boot manager finds the
file \EFI\BOOT\bootx64.efi, but get the same behavior using these menu
entries.

I've seen the same error message in the ML but in a different context.

I'm a complete newbie and never used syslinux 6.03 before, so I assume
that's PEBCAK case, any clue appreciated anyway.

Thanks in advance and best regards,
Didier
-------------- next part --------------
#!/bin/bash
# This is the end of a script that creates a polyglot installer for
# Slackware64-14.1
# $SLINT is a directory that hosts the tree to put in the ISO file
# $SLINT/isolinux is already populated with what's needed for BIOS booting
#
# Fifth step: provide stuff needed for UEFI booting
# =================================================
#
mkdir -p $SLINT/EFI/BOOT
cp -a $SLINT/isolinux/{f2.txt,initrd.img,isolinux.cfg,message.txt,ter-i16v.psf} $SLINT/EFI/BOOT
SYSLINUX_SRC="/32-14.1/home/didier/logiciels/syslinux-6.03"
( cd $SLINT/EFI/BOOT
  cp $SYSLINUX_SRC/efi64/efi/syslinux.efi bootx64.efi
  cp $SYSLINUX_SRC/efi64/com32/elflink/ldlinux/ldlinux.e64 .
  cp $SLINT/kernels/huge.s/bzImage .
  mv isolinux.cfg syslinux.cfg
  sed -i 's:/kernels/huge.s/::g' syslinux.cfg
)
# Compute the needed size of our FAT partition
Size=`du -sk $SLINT/EFI | awk '{print $1}'`
Size=$(($Size + ($Size / 10)))
# Make the image, put a filsystem in it
dd if=/dev/zero of=$SLINT/isolinux/efiboot.img bs=1K count=$Size
mkfs.fat -s 2 -S 512 -v $SLINT/isolinux/efiboot.img
# Create a temporary mount point:
MOUNTPOINT=$(mktemp -d)
# Mount the image there
mount $SLINT/isolinux/efiboot.img $MOUNTPOINT
# Put in the image what's needed
mkdir -p $MOUNTPOINT/EFI/BOOT
cp -a $SLINT/EFI/BOOT/* $MOUNTPOINT/EFI/BOOT
umount $MOUNTPOINT
rmdir $MOUNTPOINT
# Sixth step: build the ISO file
# ==============================
#
Version=14.1
SFX=64
Suffix="_syslinux.6.03"
( cd $SLINT
mkisofs -o /tmp/slint${SFX}-${VERSION}${Suffix}.iso \
-rational-rock -J -A 'Slint hybrid installer ISO' \
-hide-rr-moved \
-v -d -N \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-b isolinux/isolinux.bin \
-c isolinux/isolinux.boot \
-eltorito-alt-boot -no-emul-boot -eltorito-platform 0xEF \
-eltorito-boot isolinux/efiboot.img \
-V 'Slint installer' . \
  2>>$TMP/log.txt )
( cd /tmp
  md5sum slint${SFX}-${VERSION}${Suffix}.iso > slint${SFX}-${VERSION}${Suffix}.iso.md5
)
chown `stat -c %U:%G ${ROOT}` /tmp/slint${SFX}-${VERSION}${Suffix}.iso{,.md5}
echo "/tmp/slint${SFX}-${VERSION}${Suffix}.iso is ready"
# The ISO image is then post-processed with "isohybrid -u filename.iso"

# The tree of the generated ISO follows

/mnt
|-- EFI
|   `-- BOOT
|       |-- bootx64.efi
|       |-- bzImage
|       |-- f2.txt
|       |-- initrd.img
|       |-- ldlinux.e64
|       |-- message.txt
|       |-- syslinux.cfg
|       `-- ter-i16v.psf
|-- README_SLINT.TXT
|-- SLINT_DATE
|-- isolinux
|   |-- efiboot.img
|   |-- f2.txt
|   |-- initrd.img
|   |-- isolinux.bin
|   |-- isolinux.boot
|   |-- isolinux.cfg
|   |-- ldlinux.c32
|   |-- message.txt
|   |-- setpkg
|   `-- ter-i16v.psf
`-- kernels
    |-- VERSIONS.TXT
    |-- huge.s
    |   |-- System.map.gz
    |   |-- bzImage
    |   `-- config
    |-- memtest
    |   |-- README
    |   `-- memtest
    `-- speakup.s
        `-- README.TXT

7 directories, 27 files

Here is the beginning of /EFI/BOOT/syslinux.cfg:
-------------------------
default 05
prompt 1
timeout 1200
display message.txt
FONT ter_i16v.psf 
F1 message.txt
F2 f2.txt
F3 f3.txt
label speakup.s
  kernel bzImage
  append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 nomodeset SLACK_KERNEL=huge.s LANG=en_US.utf8
label memtest
  kernel /kernels/memtest/memtest
label 04
  kernel bzImage
  append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s LANG=nl_NL.utf8
label 04n
  kernel bzImage
  append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s nomodeset LANG=nl_NL.utf8
label 05
  kernel bzImage
  append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s LANG=en_US.utf8
label 05n
  kernel bzImage
  append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s nomodeset LANG=en_US.utf8
label 06
  kernel bzImage
  append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s LANG=fr_FR.utf8
label 06n
  kernel bzImage
  append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s nomodeset LANG=fr_FR.utf8
------------------

Here is the output of "dumpet -h -i <filename>.iso":

------------------
Validation Entry:
00000000  01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 aa 55 55 aa  |.............UU.|
	Header Indicator: 0x01 (Validation Entry)
	PlatformId: 0x00 (80x86)
	ID: ""
	Checksum: 0x55aa
	Key bytes: 0x55aa
Boot Catalog Default Entry:
00000000  88 00 00 00 00 00 04 00 75 58 00 00 00 00 00 00  |........uX......|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
	Entry is bootable
	Boot Media emulation type: no emulation
	Media load segment: 0x0 (0000:7c00)
	System type: 0 (0x00)
	Load Sectors: 4 (0x0004)
	Load LBA: 22645 (0x00005875)
Section Header Entry:
00000000  91 ef 01 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
	Header Indicator: 0x91 (Final Section Header Entry)
	PlatformId: 0xef (EFI)
	Section Entries: 1
	ID: ""
Boot Catalog Section Entry:
00000000  88 00 00 00 00 00 18 61 2f 00 00 00 00 00 00 00  |.......a........|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
	Entry is bootable
	Boot Media emulation type: no emulation
	Media load address: 0 (0x0000)
	System type: 0 (0x00)
	Load Sectors: 24856 (0x6118)
	Load LBA: 47 (0x0000002f)
-----------------


More information about the Syslinux mailing list