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

Roger Heflin rogerheflin at gmail.com
Sun Jan 18 00:41:45 UTC 2009


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
> 




More information about the fedora-list mailing list