How to install grub on USB flash drive?

I wanna install grub on my flash drive for rescue usage.
My computer installs winxp, and I have fedora12 installed in vmware. I did like this:

step1: format the flash drive as FAT in winXP.
step2: in fedora12, mount the flash drive on /media/flash
step3: excute the command: grub-install --root-directory=/media/flash --no-floppy /dev/sdb.

in step3, It says: the file /media/flash/boot/grub/stage1 not read correctly. why?

In fact the command has created the flowing files on my flash drive:
.
`-- boot
`-- grub
|-- device.map
|-- e2fs_stage1_5
|-- fat_stage1_5
|-- ffs_stage1_5
|-- iso9660_stage1_5
|-- jfs_stage1_5
|-- minix_stage1_5
|-- reiserfs_stage1_5
|-- stage1
|-- stage2
|-- ufs2_stage1_5
|-- vstafs_stage1_5
`-- xfs_stage1_5

content in device.map is:
(hd0) /dev/sda
(hd1) /dev/sdb

I find this error message nowhere else on the entire internet but here. What does it actually say?

It says: "/media/flash/boot/grub/stage1 not read correctly."
the same as what I post above.

You can't find it on internet, because my flash drive mounts on /media/flash/, the path is exclusively in my own computer. You can google "stage1 not read correctly" for some information. And they say it is may be the problem of /etc/fstab of /ect/mtab. But I can't find something unordinary in the two files.

Try --recheck. Not having a real BIOS may cause it to act strangely when detecting the BIOS boot order.

You could also try the GRUB prompt itself.

grub> root (hd1,1)
grub> setup (hd1)

...being very sure hd1 is the drive you want before you do so.

I tried this, it says "Error 1: Cannot mount selected partition"

I think may be there are some hiden partition on my flash drive. In addition, the file system on my flash drive is FAT32. And I also tried formatting it as FAT, but it make no difference.

grub> root (hd1,0)
root (hd1,0)

Error 18: Selected cylinder exceeds maximum supported by BIOS
grub> root (hd1,1)
root (hd1,1)

Error 18: Selected cylinder exceeds maximum supported by BIOS
grub> root (hd1,2)
root (hd1,2)

Error 18: Selected cylinder exceeds maximum supported by BIOS
grub> root (hd1,3)
root (hd1,3)

Error 18: Selected cylinder exceeds maximum supported by BIOS

grub> geometry (hd1)
geometry (hd1)
drive 0x81: C/H/S = 1019/60/62, The number of sectors = 3792896, /dev/sdb
   Partition num: 0, 
Error 18: Selected cylinder exceeds maximum supported by BIOS
   Partition num: 1, 
Error 18: Selected cylinder exceeds maximum supported by BIOS
   Partition num: 2, 
Error 18: Selected cylinder exceeds maximum supported by BIOS
   Partition num: 3, 
Error 18: Selected cylinder exceeds maximum supported by BIOS
[root@fedora/home/alien]:)fdisk -l /dev/sdb

Disk /dev/sdb: 1941 MB, 1941962752 bytes
60 heads, 62 sectors/track, 1019 cylinders
Units = cylinders of 3720 * 512 = 1904640 bytes
Disk identifier: 0x6f20736b

This doesn't look like a partition table
Probably you selected the wrong device.

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   ?      209177      516034   570754815+  72  Unknown
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(357, 116, 40) logical=(209176, 19, 11)
Partition 1 has different physical/logical endings:
     phys=(357, 32, 45) logical=(516033, 44, 51)
Partition 1 does not end on cylinder boundary.
/dev/sdb2   ?       45347      565785   968014120   65  Novell Netware 386
Partition 2 has different physical/logical beginnings (non-Linux?):
     phys=(288, 115, 43) logical=(45346, 38, 47)
Partition 2 has different physical/logical endings:
     phys=(367, 114, 50) logical=(565784, 20, 42)
Partition 2 does not end on cylinder boundary.
/dev/sdb3   ?      502657     1023094   968014096   79  Unknown
Partition 3 has different physical/logical beginnings (non-Linux?):
     phys=(366, 32, 33) logical=(502656, 18, 30)
Partition 3 has different physical/logical endings:
     phys=(357, 32, 43) logical=(1023093, 59, 39)
Partition 3 does not end on cylinder boundary.
/dev/sdb4   ?      775721      775736       27749+   d  Unknown
Partition 4 has different physical/logical beginnings (non-Linux?):
     phys=(372, 97, 50) logical=(775720, 44, 25)
Partition 4 has different physical/logical endings:
     phys=(0, 10, 0) logical=(775735, 39, 33)
Partition 4 does not end on cylinder boundary.

Partition table entries are not in disk order

I don't think it is a matter of real BIOS or not,because I had successfully installed grub on a kingston flash drive before. But it lost.
I just used the command: grub-install.

You may have to put it in your fstab, at least temporarily.

I also add to my fstab the fllowing line:

/dev/sdb /media/flash vfat defaults 0 0

but it make no difference. : (

How exactly did you format the flash drive?

If you just used the Windows XP format utility that may be your problem. On many flash drives you need to use something like the HP USB Disk Storage Format Tool.

Can you not delete the partitions on the USB key? I've never had these problems with many installs of Fedora to USB keys. Have you tried unetbootin? Another way to do it would be to use a livecd and the install to disk button.

@fpmurphy

yes, you got it. thx!

I must need new glasses, I can't see the link.:slight_smile: