[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: F9 doesn't find swap or /root system on new motherboard



Craig White wrote:
On Sat, 2009-01-17 at 17:57 -0600, Roger Heflin wrote:
M. Fioretti wrote:
Greetings,

My motherboard, on which I was running F9 x86_64 off one SATA drive, died.
I bought a new motherboard with a new cpu of the same type (AMD) and
connected the hard disk with F9 to it. Now Grub does start with these
options:

kernel/vmlinuz/-2.6.27-etc ro root=/dev/sda3 rhgb mem=2048M enforcing 0

but the process stops at a certain point, saying:

Trying to resume from /dev/sda2
Unable to access resume device (/dev/sda2)
Creating root device
Mounting root filesystem
Mount: error mounting /dev/root on /sysroot as ext3: no such file or
directory


IIRC I had these partitions:

/boot /dev/sda1
swap /dev/sda2
/    /dev/sda3
/home /sda5


So (also from some research I made before posting) this means that on the
new board the kernel cannot find the swap anymore, but why? I mean, if it
boots, as it does, it means that it has found the device corresponding to
the hard drive, isn't it?
It means that *grub* has found the device using *bios* calls. Linux does not use *bios* calls. And Linux is not find *any* partitions at all, even the boot one. Grub through bios calls loads vmlinuz and initrd into memory and then starts it up, which will find through Linux drivers everything needed to actually boot.

The base problem is the new MB likely has a *different* sata device controlling the drives, and the driver for that is not in the initrd used to boot Linux, so Linux cannot find any disk devices.

The typical fix is to boot a rescue, figure out from the rescue what driver is needed and update modprobe.conf and rebuilt the initial ram disk with that driver, and try again.
----
My only question to that is that it actually loaded the kernel
from /boot before things went awry.

*Grub* loaded the kernel/initrd from /boot using *bios* calls, it only knows enough to find the kernel/initrd files, it knows very little beyond that and it turns over everything to Linux.

Linux does not use *bios* calls because they have speed and a number of other limitations (16 bit only is a big issue), Linux uses it's own drivers, and if you have the wrong one this is what happens.


Yes, I would agree that booting something like a live cd or rescue disk,
checking the loaded modules and rebuilding initrd makes sense but I'm
not convinced that it would work based upon the fact that it does
read /boot (/dev/sda1).

Grub is not Linux. Grub can fail to read devices that Linux can read, and Linux can fail to read devices that grub supports through bios calls.

I typically rebuilt the initrd before changing MB's but that is not an option if the MB is dead. And sometimes I get the wrong driver and have it do exactly as he is seeing and have to re-do it again with the proper driver.


Craig



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]