How to Make a Grub Bootable CD-ROM

GRUB supports the no emulation mode in the El Torito specification5. This means that you can use the whole CD-ROM from GRUB and you don’t have to make a floppy or hard disk image file, which can cause compatibility problems.

For booting from a CD-ROM, GRUB uses a special Stage 2 called stage2_eltorito. The only GRUB files you need to have in your bootable CD-ROM are this stage2_eltorito and optionally a config file menu.lst. You don’t need to use stage1 or stage2, because El Torito is quite different from the standard boot process.

Here is an example of procedures to make a bootable CD-ROM image. First, make a top directory for the bootable image, say, `iso’:

$ mkdir iso

Make a directory for GRUB:

$ mkdir -p iso/boot/grub

Copy the file stage2_eltorito:

$ cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub

If desired, make the config file menu.lst under iso/boot/grub (see Configuration), and copy any files and directories for the disc to the directory iso/.

Finally, make a ISO9660 image file like this:

$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o grub.iso iso

This produces a file named grub.iso, which then can be burned into a CD (or a DVD). mkisofs has already set up the disc to boot from the boot/grub/stage2_eltorito file, so there is no need to setup GRUB on the disc. (Note that the -boot-load-size 4 bit is required for compatibility with the BIOS on many older machines.)

You can use the device `(cd)’ to access a CD-ROM in your config file. This is not required; GRUB automatically sets the root device to `(cd)’ when booted from a CD-ROM. It is only necessary to refer to `(cd)’ if you want to access other drives as well.

Share
This entry was posted in Important for LPI 117-101. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>