Wednesday, October 13, 2010

GRUB2 and chroots, dammit!

Worst outcome from an install so far. Upon automatic reboot, when all is reported success:

error: the symbol `grub_xputs` not found
grub rescue:>

Terror struck my heart, and hopelessness, and googling. I found that not only was I not alone, but it is a result from a long-standing bug, which bothered me greatly as I was installing:, specifically: "Grub doesn't identify SATA drives in the same order as the BIOS." Not only was this extremely confusing to me as I was trying to decide what to do during the install, even though I thought I had prepared very well, but also, "I had to boot from the live image and chroot" as the bug commenter did.

On the other hand,that worked well. See the process here: Guess what the post is called? Fix Symbol 'grub_puts' Not Found When Migrating From Ubuntu Karmic To Lucid.Imagine that. BUG IS STILL THERE. And it bit me, and that hurt. A side issue is that my /home isn't found, but I think I know the fix for that, and I'm sure it is partially my ignorance and inexperience at fault.

There were other possible solutions suggested, which I didn't try. For starters, I could only have one computer plugged into the Internet at a time, which meant I was looking for solutions in one screen, and typing them in on the other. The less to type, the fewer chances of typing errors making the problem even worse. But here they are, if you are in terror as I was, and my solution didn't work, or has disappeared: and


Comment I got by email from Holger Herzog:

Hi Valorie,

I read your blog entry - thanks much for that! - and I ran into further troubles caused by something that was not mentioned on _any_ of the web sites regarding this grub problem:

I have boot fs and root fs on different partitions!

Then I had to mount the _root_ fs partition as described in the tutorials and _additionally_, I had to mount the boot fs under "boot" under the mounted root fs:
mount /sdROOT /mnt/temp
mount -B /dev /mnt/temp/dev
mount -B /dev/pts /mnt/temp/dev/pts
mount -B /proc /mnt/temp/proc
mount -B /sys /mnt/temp/sys

AND, additionally:
mount /sdBOOT /mnt/temp/boot

Otherwise I got an empty "grub>" prompt with no kernels found by grub.


Problem presented in #kubuntu tonight with the same problem (and maybe the same bug cause) where grub was installed onto the USB key instead of on the hard drive. And even after Grub2 was installed on the HD,
sudo apt-get install grub2
still was non-booting. The magic command which finally fixed grub
sudo grub-setup /dev/sda