wiki/ Hurd/ BuildingHurdLiveCD

Recipes for bootable GNU Mach/Hurd Live CD

Greg's recipe

In my attempts to get a bootable CD for the Hurd here's the recipe I followed, your's will be similar. I needed a grub-0.92, with a patch from http://alpha.polynum.org/misc/, and version 1.16 of mkbimage (I don't exactly remember where I got that from).

You can grab a copy of it at http://sleepingsquirrel.org/hurd/hurdcd.iso.gz, which is a gzipped bootable *.iso with the copy of the patched grub and the version of mkbimage I used. Here's the recipe I followed (under linux).

   # mkdir ./2.88floppy
   # mkdir ./isodir
   # cp grub/* 2.88floppy/boot/grub/
   # cp grub/* isodir/boot/grub/
   # cd 2.88floppy
   # tar -cf ../floppyimg.tar *
   # cd ..
   # mkbimage -f floppyimg.tar -t 2.88
   # cp 2.88.image isodir/
   # mkisofs -r -b 2.88.image -c boot.catalog -o hurdcd.iso isodir/
   # cdrecord -v speed=4 dev=0,0,0 -data hurdcd.iso

That was the recipe for using a floppy image. If you use the -t hd switch of mkbimage, you'll get an ext2fs El-Torito HD emulation image that can be any size (I've got one here 300+ MB). You can then use root (hd0,0) in Grub to boot something. Also, invoking mkbimage with no parameters will give you some additional help messages.

-- GregBuchholz - 05 Nov 2003

Another recipe for a bootable GNU CD

screenshot

What you'll need

HowTo

   # mkdir iso
   ..(at this point untar or setup base system)
   # mkdir -p iso/boot/grub
   # cp iso9660fs.static iso/hurd
   # cp stage2_eltorito iso/boot/grub
   ..(edit iso/boot/grub/grub.conf)
   # mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
             -boot-load-size 4 -boot-info-table -o livecd.iso iso/

Note: The following files must _NOT_ be symlinks!

Contents of grub.conf

   timeout 60
   default 0

   title  GNU/Hurd CD
   #uppermem 523648 #this may need to be set
   #root   (cd)
   kernel /boot/gnumach root=device:hd2  #set device to your cdrom device
   module /hurd/iso9660fs.static --multiboot-command-line=${kernel-command-line} \
          --host-priv-port=${host-port} --device-master-port=${device-port}      \
          --exec-server-task=${exec-task} -T typed ${root} $(task-create)        \
          $(task-resume)
   module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)

Note: The root (cd) line may prevent some computers from booting the livecd.

-- AndrewResch - 22 Feb 2005