On Thu, Dec 17, 2009 at 01:48:10PM +0000, Thorsten Glaser wrote: > The standard (I have Ecma 119 (= ISO 9660), SUSP, RRIP and El Torito here > as PDFs, they’re “freeware”) however specifies that the first 32 KiB of > an ISO 9660 filesystem image are empty and available for, for example, > bootloaders.
I found this a very interesting observation. In fact I just implemented support in GRUB to build USB-capable CD images, using this approach. You just need to dd them: $ dd if=mini.iso of=/dev/sdb You will need 1.98~20091221-1 (which I just uploaded to sid), plus attached patch. This takes advantage of the new infrastructure for bootable image generation (grub-mkrescue), which abstracts the architecture-specific GRUB setup so that you only need to worry about your grub.cfg and not about image building. -- Robert Millan
Index: boot/kfreebsd/grub-kfreebsd-i386.cfg =================================================================== --- boot/kfreebsd/grub-kfreebsd-i386.cfg (revision 61792) +++ boot/kfreebsd/grub-kfreebsd-i386.cfg (working copy) @@ -3,9 +3,12 @@ if loadfont /boot/grub/font.pf2 ; then set gfxmode=640x480 + insmod vbe + insmod gfxterm terminal_output gfxterm fi +insmod png if background_image /boot/grub/splash.png ; then set color_normal=white/black set color_highlight=black/white Index: boot/kfreebsd/grub-kfreebsd-amd64.cfg =================================================================== --- boot/kfreebsd/grub-kfreebsd-amd64.cfg (revision 61792) +++ boot/kfreebsd/grub-kfreebsd-amd64.cfg (working copy) @@ -3,9 +3,12 @@ if loadfont /boot/grub/font.pf2 ; then set gfxmode=640x480 + insmod vbe + insmod gfxterm terminal_output gfxterm fi +insmod png if background_image /boot/grub/splash.png ; then set color_normal=white/black set color_highlight=black/white Index: config/kfreebsd.cfg =================================================================== --- config/kfreebsd.cfg (revision 61792) +++ config/kfreebsd.cfg (working copy) @@ -7,10 +7,6 @@ # The font to load in GRUB GRUB_FONT=/usr/share/grub/ascii.pf2 -# GRUB modules -GRUB_MODDIR=/usr/lib/grub/i386-pc -GRUB_MODULES=biosdisk bsd chain echo gfxterm handler iso9660 minicmd normal png sh vbe - # Unsupported targets arch_boot_screens: arch_tree: @@ -32,15 +28,8 @@ cp $(SPLASH_PNG) $(TEMP_CD_TREE)/boot/grub/splash.png; \ fi - grub-mkimage -o $(TEMP_CD_TREE)/boot/grub/core.img $(GRUB_MODULES) - cat $(GRUB_MODDIR)/cdboot.img $(TEMP_CD_TREE)/boot/grub/core.img \ - > $(TEMP_CD_TREE)/boot/grub/grub_eltorito - rm $(TEMP_CD_TREE)/boot/grub/core.img + grub-mkrescue --output=$(TEMP_MINIISO) $(TEMP_CD_TREE) - genisoimage -r -J -b boot/grub/grub_eltorito -c boot.cat -no-emul-boot \ - -boot-load-size 4 -boot-info-table \ - -o $(TEMP_MINIISO) $(TEMP_CD_TREE) - # Netboot files .PHONY: arch_netboot_dir arch_netboot_dir: