[syslinux] Follow up to adding EFI boot?

Michael D. Setzer II mikes at kuentos.guam.net
Sat Mar 26 07:50:14 PDT 2016


Have been trying some things, but something isn't working at least with using 
Virtual Box with EFI option. With it off, the cd boots as normal, and works, but 
with EFI on, it has an error that flashes on screen, and then it drops to a shell 
prompt. I'm hoping it is just a dumb mistake I am making, and can be 
resolved. Perhaps I've named the directories incorrectly, or there is a file that 
is missing or something simple??

Again, Thanks for the info on the list.

Process currently testing. Works if EFI option in virtualbox is off, but
drops to shell if using EFI?? Originally script used mkisofs, but run 
into issues with it not excepting the efi modification, so switched to 
switched using genisoimage option. Build works, and it runs with EFI off,
but fails when trying it, so something must be wrong?

Tried using EFI/BOOT directory, since that is what the Fedora23 CD seems 
to have, and copied the syslinux.efi file from the efi32 directory. Also,
placed alls the efi32 version of the modules in the directory.
The was no ldlinux.c32, but was a ldlinux.e32??

Here is the testing script to build the boot.iso

#!/bin/sh
#
#
# USAGE:   ./makecd DEVICE [blank]
# example: ./makecd ATAPI:1,0,0 blank
#	   first BLANKS a CD-RW and burns to ATAPI Writer on
#          Secondary master.
#
#
#
#
#
echo "g4l, Frank Stephen 2004"
echo "g4l comes with ABSOLUTELY NO WARRANTY."
echo "This is free software, and you are welcome"
echo "to redistribute it freely."
echo
echo
sleep 3

#16384
#ramdisk_size=32768
ramdisk_size=65536
ramdisk_size=98304
ramdisk_size=131072

device=$1
option=$2
ver=$3
if [ "$ver" = "" ]; then
    alphaver=""
else
    alphaver=alpha$ver
fi
if [ "$device" = "" ]; then
    echo "USAGE: $0 DEVICE OPTION"
    echo  "example: $0 ATAPI:1,0,0 blank"
    echo  "first BLANKS a CD-RW and burns to ATAPI Writer on"
    echo  "Secondary master."
    echo
    echo  "example: $0 create"
    echo  "create ISO image only"
    exit 1
fi

echo "Creating ramdisk"
dd if=/dev/zero of=bootcd/isolinux/ramdisk bs=1k count=$ramdisk_size

echo "Creating loop device"
losetup /dev/loop0 bootcd/isolinux/ramdisk

echo "Creating ext2 filesystem"
mke2fs -m 0 -b 1024 -N 8000 /dev/loop0
#mke2fs -m 0 -b 4096 -N 4000 /dev/loop0
echo "Mounting loop device in /mnt"
mount /dev/loop0 /mnt

echo "Deleting lost+found"
rm -R /mnt/lost+found

echo "Copy rootfs files to ramdisk in /mnt"
# Added -p to keep the file dates
cp -R --preserve=all bootcd/rootfs/* /mnt
# Added .bash_profile to run g4lmenu at start
cp    -p bootcd/rootfs/.bash_profile /mnt

echo "Umounting /mnt"
umount /mnt

echo "Delete loop device"
losetup -d /dev/loop0

echo "Compressing ramdisk"
#gzip bootcd/isolinux/ramdisk
LZMA=`which lzma 2>/dev/null `
if [ $? = "0" ] ; then echo $LZMA
else 
echo "makecd create script requires lzma package "
exit 1
fi
lzma -v bootcd/isolinux/ramdisk

echo "Creating ISO9660/Joliet/RockRidge filesystem"
#Previous command to build iso
#mkisofs -l -L -J -R -o boot.iso -b isolinux.bin -c boot.cat -no-emul-boot 
-boot-load-size 4 -boot-info-table bootcd/isolinux/.

genisoimage \
  -l -V "G4L 0.51$alphaver" \
   -o boot.iso \
   -c isolinux/boot.cat \
   -b isolinux/isolinux.bin \
      -no-emul-boot -boot-load-size 4 -boot-info-table \
   -eltorito-alt-boot \
   -e EFI/BOOT/syslinux.efi \
      -no-emul-boot \
   bootcd/isolinux/.

if [ "$device" != "create" ]; then
    echo "Burning to device $device"
    if [ "$option" = "" ]; then
            cdrecord -v dev=$device boot.iso    
    fi
    if [ "$option" = "blank" ]; then
	    cdrecord -v blank=fast dev=$device boot.iso 
    fi
    echo "Deleting ISO image"
    rm boot.iso
fi
echo "Deleting ramdisk"
#mv bootcd/isolinux/ramdisk.gz /home/msetzerii
mv bootcd/isolinux/ramdisk.lzma /home/msetzerii
echo "DONE..."


Rim tje script with the following option for testing.

./makecdrm create  "" 45efi

The run this to modify?
./isohybrid --uefi boot.iso

Contents of the working bootcd/isolinux directory.

bootcd/isolinux/:
40_custom
bz3x12.57
bz3x12.57.config
bz3x14.65
bz3x14.65.config
bz3x18.29
bz3x18.29.config
bz4x1.20
bz4x1.20.config
bz4x3.6
bz4x3.6.config
bz4x4.6
bz4x4.6.config
bz4x5.0
bz4x5.0.config
cat.c32
COPYING
cpuid.c32
cpuidtest.c32
disclaim
display.c32
dmitest.c32
eltorito.sys
failsafe.cfg
hdt.c32
ldlinux.c32
libcom32.c32
libgpl.c32
libmenu.c32
libutil.c32
linux.c32
ls.c32
meminfo.c32
memtest
menu.c32
menu.lst
modules.pcimap
pci.ids
pcitest.c32
poweroff.c32
preimage
reboot.c32
startup
syslinux.cfg
syslinux.dir
test.png
vesainfo.c32
vesamenu.c32
vpdtest.c32

Added Directory

bootcd/isolinux/EFI:
BOOT

bootcd/isolinux/EFI/BOOT:
cat.c32
cpuid.c32
cpuidtest.c32
display.c32
dmi.c32
efiboot.img
hdt.c32
ldlinux.e32
libcom32.c32
libgpl.c32
libmenu.c32
libutil.c32
linux.c32
ls.c32
meminfo.c32
menu.c32
pcitest.c32
poweroff.c32
reboot.c32
syslinux.cfg
syslinux.efi
vesainfo.c32
vesamenu.c32
vpdtest.c32


bootcd/isolinux/isolinux:
isolinux.bin




More information about the Syslinux mailing list