It sounds like you have either a mixed IDE/SATA/SCSI system or you use
extra IDE controllers of some sort.
The root problem is that (at boot) grub uses the BIOS device order.
Linux has its own idea of the order of devices (depending mainly on what
gets detected first) and this order is used to guess the BIOS order at
install time. Even worse, many BIOSes allow you to change the BIOS order
by specifying whether to boot from IDE/SATA/SCSI first.
So, grub needs some way to tell (while running under linux) which linux
devices correspond to which boot-time device numbers. There is a file
grub/device.map created especially for this purpose. It has the format:
eg. on one my systems:
Now, this ordering can change if you add/remove devices or change BIOS
settings. (Beware! ;))
So basically, before running grub-install you need to make sure this
file reflects reality. (And that your menu.lst uses the same numbers.)
On Sat, 2007-04-07 at 07:44 -0400, Mark Oden wrote:
> If there is still a good method to determining the root disk without
> playing the guessing game please let me know :)
If you know what to expect on your various disks then (in the boot grub
shell, not running from inside Linux):
cat (hdx,y)/<TAB><TAB> etc.
is a reasonable method to figure out the mapping of BIOS ordering to
Linux devices. Pen and paper may be useful here ;)
If you're just looking for your boot partition, then it is probably
sufficient to run:
or if you have /boot on your root partition:
It's important to note that the find command requires an absolute path
so you still need to know the layout of files on the partition you're
Edward Allcutt <[log in to unmask]>