QBRADQ
Unregistered
|
|
Posted: Oct. 14 2005,14:29 |
|
Wow, wish I would have seen this post yesterday :P
I just got my frugal HD install working today, and my main hang up was GRUB. Here's the problem I faced:
The GRUB device map was getting all out of wack. On my system, my ATA 133 card gets assigned hda - hdd, and my on-board IDEs get hde - hdh. However, in BIOS (and in GRUB), the on-board IDEs are (hd0) - (hd3) and the ATA 133 card is (hd4) - (hd7).
When the frugal install script called GRUB to build the device map, this is what it came up with (NOTE: the comments are mine, not GRUB's, and do not appear in the actual device.map):
Code Sample | (hd0) /dev/hda # This is my large disk on ATA0-M (NTFS) (hd1) /dev/hdb # Does not exist! (hd2) /dev/hdc # Does not exist! (hd3) /dev/hdd # Does not exits! (hd4) /dev/hde # Linux System Disk (ext2, ext3, and 0x82) (hd5) /dev/hdf # Windows Application Disk (NTFS)
|
When installed like this, booting GRUB results in:
Code Sample | GRUB Hard Disk Error
|
Oddly enough, a manual GRUB install from a GRUB boot CD (those 500k wounders :P) using the same device.map results in "GRUB " being printed out to the BIOS console about a billion times.
The Fix:
New /boot/grub/device.map (root mounted at /mnt/hde1):
Code Sample | (hd0) /dev/hde (hd1) /dev/hdf (hd2) /dev/hdg (hd5) /dev/hda
|
Note that only (hd0) is really needed to boot, but I have many other operatting systems installed and use GRUB to boot them either directly or indirectly.
Now, after re-writting /boot/grub/device.map, I had to re-install GRUB. I tried using the command "grub-install '(hd0)'" (NOTE that grub-install requires single quotes around device names, which isn't documented in the --help command). However, when using that command, I get an error saying something like "/dev/cloop has no BIOS device name!".
So, in order to re-install GRUB I had to use the GRUB shell, with a few tweaks. Here's a falsy console dump of the process (I.E., I'm writting it by hand from memory, milage may vary):
Code Sample | // This tells GRUB to use this particular device.map instead of making a new one > sudo grub --device-map=/mnt/hde1/boot/grub/device.map // And this tells GRUB to use /dev/hde1 as the root // This is because (hd0) in our device map points at /dev/hde > GRUB> root (hd0,0) // And again, this installs GRUB to the MBR of /dev/hde > GRUB> setup (hd0) // This is just a place holder for all the info GRUB spits out after setup > GRUB> BUNCH OF GRUB STUFF // Quit GRUB > GRUB> quit // Reboot and pray :P
|
So, now we've got GRUB set up right! We can boot now, right? Well, if you're DSL Frugal experiance has been anything like mine, then no. The file /boot/grub/menu.lst that the frugal install script installs is missing a very important line from it's entries, the root command!
I'm at the office right now, so I don't have access to my menu.lst, so I'll be using one of the entries submitted further up as the example.
Code Sample | // menu.lst entry generated by DSL Frugal Install Script // Note the absence of the root command // This causes a kernel panic (for me at least) title DSL-frugal-base-norestore (hdb1) kernel /boot/isolinux/linux24 root=/dev/hdb1 base norestore initrd /boot/isolinux/minirt24.gz
// Corrected menu.lst entry // This boots fine title DSL-frugal-base-norestore (hdb1) root (hd1,0) // ADDED kernel /boot/isolinux/linux24 root=/dev/hdb1 base norestore initrd /boot/isolinux/minirt24.gz
|
Well, I hope all this helps someone out there. It's been a frustrating couple days having to use a GRUB boot CD to load Windows from a secondary disk through the GRUB shell. But hey, that's what it's there for, eh? map() roxor
What about the Twinky? QBRADQ
|