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 users
mailing list