[syslinux] Hurd boot difficulties.

Dean Graff graff97 at gmail.com
Sun Feb 9 14:26:23 PST 2014


I am working with multiboot module "mboot.c32". I have had luck using it to
boot NetBSD and the Hurd kernel. The problem with booting the Hurd kernel
is apparently connected to the extended syntax passed along to it by grub.
Grub passes Hurd kernel approximately 4 files, some of which are modules,
and another ten (or so) boot arguments, which correspond to those modules
and kernel. The four files needed to boot the hurd kernel into an intramfs
are apparently: 1) ld.so.1  2) initrd.gz  3) gnumach.gz  and 4)
ext2fs.static
They are available at
http://ftp.debian-ports.org/debian-cd/hurd-i386/current/
and the arguments to grub are as follows:
multiboot /boot/kernel/gnumach.gz $options desktop=xfce

module /boot/kernel/ext2fs.static ext2fs \
             --multiboot-command-line='${kernel-command-line}' \
             --host-priv-port='${host-port}' \
             --device-master-port='${device-port}' \
             --exec-server-task='${exec-task}' -T typed gunzip:device:rd0 \
                 '$(task-create)' '$(task-resume)'
module /boot/kernel/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'

And apparently at least most of these arguments are necessary to get Hurd
to boot. I don't have any idea if it is possible to pass that syntax into
syslinux. The following formula is as close as i have gotten:

rsync -a /usr/lib/syslinux ISO_root

wget http://ftp.debian-ports.org/debian-cd/hurd-i386/current/ext2fs.static
-O ISO_root/ext2fs.static<http://ftp.debian-ports.org/debian-cd/hurd-i386/current/ext2fs.static>

wget http://ftp.debian-ports.org/debian-cd/hurd-i386/current/ld.so.1 -O
ISO_root/ld.so.1<http://ftp.debian-ports.org/debian-cd/hurd-i386/current/ld.so.1>

wget http://ftp.debian-ports.org/debian-cd/hurd-i386/current/initrd.gz -O
ISO_root/initrd.gz<http://ftp.debian-ports.org/debian-cd/hurd-i386/current/initrd.gz>

wget http://ftp.debian-ports.org/debian-cd/hurd-i386/current/gnumach.gz -O
ISO_root/gnumach.gz<http://ftp.debian-ports.org/debian-cd/hurd-i386/current/gnumach.gz>

cd ISO_root/
gunzip *
cd ..

cat > ISO_root/syslinux/isolinux.cfg << EOF
UI menu.c32
label isolinuxtests
KERNEL mboot.c32
APPEND /gnumach --- /initrd
EOF

genisoimage \
-o output.iso     \
-no-emul-boot     \
-boot-info-table  \
-boot-load-size 4 \
-c syslinux/boot.cat     \
-b syslinux/isolinux.bin \
ISO_root

# test it (optional)
 kvm -m 1000 -cdrom output.iso

If I try enough random combinations, I can get at least one of the needed
modules to be loaded, as reported by the Hurd kernel.

Using something like this, I am pretty sure at least this one module
"ext2fs.static" gets loaded.

cat > ISO_root/syslinux/isolinux.cfg << EOF
UI menu.c32
label isolinuxtests
KERNEL mboot.c32
APPEND /gnumach --- /initrd /ext2fs.static
EOF

But i have no idea how to pass that entire line along to hurd kernel, and
get all of the modules, kernel, and initrd loaded at once. And the Hurd
kernel developers are apparently mostly attached to doing this with grub (
which is larger than my entire operating systems usually).
Sincerely thanks for you time. -dean


More information about the Syslinux mailing list