Jeff Vian wrote:
If your /boot partition is on raid it cannot access the kernel to boot because the raid drivers are not loaded until after the kernel loads.
Kind of the chicken & egg scenario.
in general /boot must be on a plain partition, and then the rest can be on raid.
Not true. /boot can be RAID1 partition. I'm using similar setups since Red Hat 7.3 days.
To correctly setup grub on RAID1, he needs to install it correctly on both disks.
First, check grub.conf file. Note if there is any "root" option inthere, and comment it. You can't use "root" option with RAID1, but must let grub try to guess it correctly for you. By default, it will use whatever partition it loaded stage1/2 from (usually, this is correct guess). The reason is that root will specify an actual partition from where to load kernel. You can specify only one partition there (on either first or second disk). If you have both disks in the machine, all is fine. But let say one disk goes south (or you simply disconnect it), and root option specified partition on that drive. You wouldn't be able to boot. If you leave it to grub to automatically detect it during runtime, in normal configurations it will do correct guess and always use the partition from the disk machine booted from.
Now, type "grub". This will get you to the grub prompt. You need to type rather long install line once for each disk. I've split each of them into two lines here for readability (used "\" as line continuation caracter):
install --stage2=/boot/grub/stage2 (hd0,0)/grub/stage1 (hd0) \ (hd0,0)/grub/stage2 p (hd0,0)/grub/grub.conf
install --stage2=/boot/grub/stage2 (hd1,0)/grub/stage1 (hd1) \ (hd1,0)/grub/stage2 p (hd1,0)/grub/grub.conf
The lines are long because you want copy of grub that goes to the first disk to reference only partitions from the first disk, and likewise for the copy that goes to the second disk.
The parameters are highly installation dependant, so I'll go through each of them.
You can leave --stage2 as is. Actually, you must.
(hd0,0) and (hd1,0) are references to boot partitions that contain grub configuration files and kernel. Likewise (hd0) and (hd1) are references to disks. If you have only two disks, they will be hd0 and hd1. Most likely your boot partition will be (hd0,0) and (hd1,0) if you have only Linux installed. The second number in (hd0,0) is partition number. If your boot partition isn't on the first disk partition, simply change them to match what you have. For example, if your boot partition is third partition, you'd change them to (hd0,2) and (hd1,2). Usually, this would be the case if you have multiboot configuration (for example, Windows on first partition, and than Linux someplace else).
Now, a bit more complicated part. Is your boot partition / or /boot? If you have separate partiton for /boot, than your boot partition is /boot. If you don't have separate /boot partition (/boot directory is part of / partition), than obviously your boot partition is /.
If your boot partition is /boot (in other words, /boot lives on partition of its own), skip this paragraph. If your boot partition is /, than you'd need to change paths following each (hd0,0) and (hd1,0). This is because that path is relative to the file system on the partition referenced. If that is the case, just prepend /boot to those paths. For example, in this case (hd0,0)/grub/stage1 would become (hd0,0)/boot/grub/stage1. Change all other references likewise. Do not touch path for --stage2 option, unlike other options, that one is relative to actual root file system and must begin with /boot!
Type exit, and you are done.
Sounds too complicated? Well, you can always switch back to LILO. LILO handles RAID1 automatically, out-of-the-box, no special setup needed. And frankly, I can't remember that I ever needed all those additional bells and whistles of Grub (that made it so darn complicated to use).
-- Aleksandar Milivojevic <amilivojevic@xxxxxx> Pollard Banknote Limited Systems Administrator 1499 Buffalo Place Tel: (204) 474-2323 ext 276 Winnipeg, MB R3T 1L7