Making a GRUB boot floppy

GRUB (GRand Unified Bootloader) is the boot manager installed by default in recent versions of Ubuntu Linux. It is an effort by the GNU project to provide a boot-loader that supports the greatest number of operating systems. This document explains how to make a boot floppy that can either boot an installed operating system or present you with a Grub command shell so that you can enter commands directly. It assumes that you are making the diskette on an Ubuntu Linux box.

1. Obtain root privileges.

 sudo -s  

2. Format the floppy with the ext2 file-system:

 mke2fs /dev/fd0 

3. Mount the floppy and copy the files that Grub Legacy needs to make it bootable:

 mount /dev/fd0 /media/floppy
 mkdir /media/floppy/boot
 mkdir /media/floppy/boot/grub
 cd /boot/grub
 cp stage1 stage2 /media/floppy/boot/grub  

If you want to boot the operating system already installed on the machine you are making the floppy from, also copy /boot/grub/menu.lst and /boot/grub/device.map to the corresponding directories on the floppy.

4. Unmount the floppy umount /dev/fd0, then start Grub in interactive mode by typing grub. You will see the Grub command prompt grub >. Enter these commands:

 device (fd0) /dev/fd0
 root (fd0)
 setup (fd0)
 quit   

5. At this point, you have a bootable floppy. If you added the extra files mentioned above, you should get a standard Grub screen when you boot from it, just as if you had booted from the hard drive.

6. If you want to be extra cautious, you can save a copy of the current machine's master boot record to a file on the floppy. The following example assumes you booted from the floppy, mounted the floppy and the master boot record is on device sda; the file containing the boot record is named boot.mbr.

 dd if=/dev/sda of=/media/floppy/boot.mbr bs=512 count=1  

To restore it, you would just reverse the parameters of the dd command:

 dd if=/media/floppy/boot.mbr of=/dev/hda bs=512 count=1 

Boot a floppy image without a floppy drive

Some computers don't have a floppy drive and can't boot from a Cd. One way of getting the Cd to boot is from a boot-loader floppy image. You'll need the memdisk file from the syslinux package. To get it run

 sudo apt-get install syslinux 

Copy the memdisk file to the grub folder

 sudo cp /usr/lib/syslinux/memdisk /boot/grub/ 

There is a floppy image on the *ubuntu CD that can be used if you don't feel like making one. Mount the Cd and copy it to the grub folder as well.

 sudo cp /<cd_mountpoint>/install/sbm.bin /boot/grub/ 

Next you have to make some changes to /boot/grub/menu.lst. Open it as root and add

 title       Floppy Image
 kernel      /boot/grub/memdisk
 initrd      /boot/grub/sbm.bin 

above "title Ubuntu x.xx, memtest86+". Save the changes. Now you should be able to boot the floppy image without a floppy drive and boot from the Cd.

GrubHowto/BootFloppy (last edited 2011-05-09 16:35:24 by tomdavies04)