# Kernel problems / not syncing:VFS:Unable to mount root fs..

## Zenx

Hello everyone! I'm having problems with compiling my kernel from the genkernel to 2.6.20-r6. Here is the complete error

Kernel panic - not syncing:VFS:Unable to mount root fs on unknown-block (1,0)

No filesystem could mount root, tried:reiserfs ext3 ext2 msdos fuseblk jfs vfat iso9660 ntfs. Kernel panic - not syncing:VFS:Unable to mount root fs on unknown-block (1,0)

And here is my /boot/grub/menu.lst:

default 0

timeout 30

splashimage=(hd0,2)/boot/grub/splash.xpm.gz

title=Gentoo Linux r6

root (hd0,2)

kernel /boot/vmlinuz-2.6.20-gentoo-r6 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 doscsi

title=Gentoo Linux r7

root (hd0,2)

kernel /boot/kernel-genkernel-x86-2.6.17-gentoo-r7 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3  doscsi

initrd /boot/initramfs-genkernel-x86-2.6.17-gentoo-r7

title=Win XP

rootnoverify (hd0,0)

makeactive

chainloader +1

As you can see, the drive is partitioned like this: hd(0,0)=Win Xp, hd(0,1)=swap, hd(0,2)=root, hd(0,3)=/home

My computer:

Asus P5N-E SLI

Intel C2D E6600

nVidia 7900GT

2048MB DDR2 RAM

1x 320GB SATA-2 HDD

----------

## magic919

Instant reaction would be check you have the correct drivers for the SATA built into your kernel.

----------

## Zenx

I have tried enabling every possible one, and it doesn't still work  :Sad: 

----------

## magic919

Run this to get your hardware

lspci | egrep 'IDE|SATA'

then search for same in .config.  I still think it's the more likely problem.

Post some results.

----------

## Zenx

Well there is atleast one JMicron in the .config in /usr/src/linux, and it is in IDE Chipset Support and there is another one in the Serial ATA (prod) and parallel ATA (experimental) drivers, and it is CONFIG_PATA_JMICRON=y

IDE Chipset Support:CONFIG_BLK_DEV_JMICRON=y

Serial ATA..=CONFIG_PATA_JMICRON=y

----------

## wynn

If

```
title=Gentoo Linux r6

root (hd0,2)

kernel /boot/vmlinuz-2.6.20-gentoo-r6 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 doscsi 
```

is the whole entry to boot 2.6.20-gentoo-r6 and not a typo, you are missing the initrd line.

Could you post all your lspci, please? There are SATA/IDE controllers which do not have SATA or IDE in their lspci output.

I think genkernel 3.4.6 uses a kernel config created for 2.6.17-gentoo-r7: you could check by looking at the first few lines of /usr/share/genkernel/x86/kernel-config-2.6 (if you are running in 32-bit) or /usr/share/genkernel/x86_64/kernel-config-2.6 (64-bit). If it is a 2.6.17 config, all the SATA options will have been lost when you try and use it with 2.6.20 and you will have to add them in by hand.

----------

## Zenx

Here it is: 

```
localhost zenx # lspci

00:00.0 Host bridge: nVidia Corporation C55 Host Bridge (rev a2)

00:00.1 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:00.2 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:00.3 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:00.4 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:00.5 RAM memory: nVidia Corporation C55 Memory Controller (rev a2)

00:00.6 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:00.7 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:01.0 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:01.1 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:01.2 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:01.3 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:01.4 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:01.5 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:01.6 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:02.0 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:02.1 RAM memory: nVidia Corporation Unknown device 03bc (rev a1)

00:02.2 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)

00:03.0 PCI bridge: nVidia Corporation C55 PCI Express bridge (rev a1)

00:05.0 PCI bridge: nVidia Corporation C55 PCI Express bridge (rev a1)

00:06.0 PCI bridge: nVidia Corporation C55 PCI Express bridge (rev a1)

00:07.0 PCI bridge: nVidia Corporation C55 PCI Express bridge (rev a1)

00:09.0 RAM memory: nVidia Corporation MCP51 Host Bridge (rev a2)

00:0a.0 ISA bridge: nVidia Corporation MCP51 LPC Bridge (rev a3)

00:0a.1 SMBus: nVidia Corporation MCP51 SMBus (rev a3)

00:0a.2 RAM memory: nVidia Corporation MCP51 Memory Controller 0 (rev a3)

00:0b.0 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)

00:0b.1 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)

00:0d.0 IDE interface: nVidia Corporation MCP51 IDE (rev a1)

00:0e.0 IDE interface: nVidia Corporation MCP51 Serial ATA Controller (rev a1)

00:0f.0 IDE interface: nVidia Corporation MCP51 Serial ATA Controller (rev a1)

00:10.0 PCI bridge: nVidia Corporation MCP51 PCI Bridge (rev a2)

00:10.1 Audio device: nVidia Corporation MCP51 High Definition Audio (rev a2)

00:14.0 Bridge: nVidia Corporation MCP51 Ethernet Controller (rev a3)

01:00.0 VGA compatible controller: nVidia Corporation GeForce 7900 GT (rev a1)

04:00.0 SATA controller: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 02)

05:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev c0)

```

I too am wondering that where is the initrd, as there are no more initrd-named files in my /boot than the normal genkernel one.

----------

## wynn

 *Zenx wrote:*   

> 
> 
> ```
> 00:0d.0 IDE interface: nVidia Corporation MCP51 IDE (rev a1)
> 
> ...

 The MCP51 old IDE driver is amd74xx under "ATA/ATAPI/MFM/RLL support"/"AMD and nVidia IDE support" or pata_amd under "Serial ATA (prod) and Parallel ATA (experimental) drivers"/"AMD/NVidia PATA support (Experimental)": try the new PATA one first (pata_amd) and then , if it doesn't work, fall back on the old PATA one, amd74xx.

The driver for the Nvidia SATA controllers is sata_nv under "Serial ATA (prod) and Parallel ATA (experimental) drivers"/"NVIDIA SATA support".

The JMicron driver for its PATA ports is jmicron under "ATA/ATAPI/MFM/RLL support"/"JMicron JMB36x support" or pata_jmicron under "Serial ATA (prod) and Parallel ATA (experimental) drivers"/"JMicron PATA support". If your motherboard has SATA sockets for the JMicron controller (seems unusual) the driver is ahci.

The driver for the nVidia Ethernet Controller is forcedeth under

```
-> Device Drivers

   -> Network device support

      -> Ethernet (10 or 100Mbit)

< > nForce Ethernet support
```

You also have a FireWire controller and you want to make sure that "Ethernet over 1394" is disabled

```
-> Device Drivers

   -> IEEE 1394 (FireWire) support

      -> IEEE 1394 (FireWire) support

< > Ethernet over 1394
```

otherwise you get a driver eth1394 which takes eth0 and leaves you confused as to why the network card isn't working.

 *Zenx wrote:*   

> I too am wondering that where is the initrd, as there are no more initrd-named files in my /boot than the normal genkernel one.

 If you compiled that kernel using something like

```
genkernel <args> all
```

then it should have created initramfs-genkernel-x86-2.6.20-gentoo-r6 and installed it in /boot.

If you compiled it without using genkernel and installed it, then there is no initramfs and you should change the kernel command line to

```
kernel /boot/vmlinuz-2.6.20-gentoo-r6 root=/dev/sda3
```

----------

## Zenx

I have compiled the kernel using the command make && make modules_install && make modules && make install, and I'm now compiling it again, hoping it'll work. Thanks for the helping so far, and btw wynn: your sig says jorma is a duck, but in Finland "jorma" is a name, like Dick in USA. It also has all the controversial meanings like Dick  :Very Happy: 

E: I compiled the kernel and tried booting into the new kernel. It just threw another kernel panic, saying Can't mount root fs on unknown-block and cannot open /dev/sda3, enter a correct "root=" boot option.

----------

## wynn

 *Zenx wrote:*   

> and btw wynn: your sig says jorma is a duck, but in Finland "jorma" is a name, like Dick in USA. It also has all the controversial meanings like Dick 

 Thank you but I think I'll have to stick with it as that is the title of the Blender file in the collection of production files.

The film "Elephants Dream" was produced by the Blender Organization in the Netherands with a group of experts. The credits show two lead artists from Australia and one, Bastian Salmela, from Finland. Hmmm.

The ducks are called elmeri, harmi, jorma, kirjuri, kirppu, kurppa and urkki.

Now you mention it, the names do look Finnish.

----------

## magic919

And make sure you copy the new kernel over once you've built it.  I've missed that step before...

----------

## Zenx

Copy it over? What do you mean?  :Very Happy:  Maybe that's the problem. 

And wynn: All of those ducknames are original, old Finnish names  :Smile: 

----------

## magic919

I mean after it is build copying over the kernel to the boot partition and making sure it is named to match the grub config.

In my case I do something like

```

cp arch/i386/boot/bzImage /boot/kernel

```

I just call my kernels kernel to aid my simple mind.

----------

## wynn

 *Zenx wrote:*   

> Copy it over? What do you mean?  Maybe that's the problem. 

 In the kernel source, after "make && make modules_install" you need to

```
cp -pv arch/x86_64/boot/bzImage /boot/vmlinuz-2.6.20-gentoo-r6
```

Here it is assumed you are running in 64-bit, x86_64, mode. You don't appear to need to mount /boot as it is on your root partition (root (hd0,2) => root=/dev/sda3).

You might also like to save your config

```
cp -pv .config /boot/config-2.6.20-gentoo-r6
```

 *Zenx wrote:*   

> And wynn: All of those ducknames are original, old Finnish names 

 There, I've learnt something new today. Now all I need is the pronunciation, Googling now ...

----------

## obrut<-

you do not need to copy the kernel image over to /boot manually. you can use "make install". it does that for you.

it's enough to do

```
make && make modules_install install
```

 the first "make" compiles the kernel and modules and the second one installs the modules (copies them over to /lib/modules/<kernel-name> and places kernel image (named vmlinuz), config and system.map in /boot. the old ones get ".old" appended to their name.

```
# ls -l /boot/

insgesamt 65006

lrwxrwxrwx 1 root root       1 16. Nov 18:57 boot -> .

-rw-r--r-- 1 root root     512  6. Aug 2006  boot.0800

-rw-r--r-- 1 root root     512 11. Sep 2006  boot.0810

lrwxrwxrwx 1 root root      21 24. Apr 13:24 config -> config-2.6.20-beyond2

-rw-r--r-- 1 root root   47307  4. Mar 14:30 config-2.6.19-beyond4

-rw-r--r-- 1 root root   47225 19. Feb 13:18 config-2.6.19-beyond4.old

-rw-r--r-- 1 root root   44989 24. Apr 13:24 config-2.6.20-beyond2

-rw-r--r-- 1 root root   44989  2. Apr 15:28 config-2.6.20-beyond2.old

lrwxrwxrwx 1 root root      25 24. Apr 13:24 config.old -> config-2.6.20-beyond2.old

-rw-r--r-- 1 root root 1198988  6. Aug 2006  fbsplash-emergence-1280x1024

-rw-r--r-- 1 root root  590991 19. Sep 2006  fbsplash-gentoo-2006.1-1280x1024

drwxr-xr-x 2 root root    1024  6. Aug 2006  grub

drwx------ 2 root root    1024 24. Apr 15:19 lost+found

-rw------- 1 root root  136704 24. Apr 13:29 map

lrwxrwxrwx 1 root root      25 24. Apr 13:24 System.map -> System.map-2.6.20-beyond2

-rw-r--r-- 1 root root 1345665  4. Mar 14:30 System.map-2.6.19-beyond4

-rw-r--r-- 1 root root 1288761 19. Feb 13:18 System.map-2.6.19-beyond4.old

-rw-r--r-- 1 root root 1351241 24. Apr 13:24 System.map-2.6.20-beyond2

-rw-r--r-- 1 root root 1334284  2. Apr 15:28 System.map-2.6.20-beyond2.old

lrwxrwxrwx 1 root root      29 24. Apr 13:24 System.map.old -> System.map-2.6.20-beyond2.old

lrwxrwxrwx 1 root root      22 24. Apr 13:24 vmlinuz -> vmlinuz-2.6.20-beyond2

-rw-r--r-- 1 root root 2644338 19. Feb 13:18 vmlinuz-2.6.19-beyond4.old

-rw-r--r-- 1 root root 2794211 24. Apr 13:24 vmlinuz-2.6.20-beyond2

-rw-r--r-- 1 root root 2742412  2. Apr 15:28 vmlinuz-2.6.20-beyond2.old

lrwxrwxrwx 1 root root      26 24. Apr 13:24 vmlinuz.old -> vmlinuz-2.6.20-beyond2.old
```

but i don't know how the initrd is handled as i never use one (except my fbsplash one).

did you fix the initrd's filename in your menu.lst?

----------

## Spoilage

I just upgraded form kernel 2.6.18-r6 to kernel 2.6.20-r7 and encountered what appears to be the same error you encountered.

I fixed the problem when I noticed a new entry in the kernel config menu under "Device Drivers" called "Serial ATA (prod) and Parallel ATA (experimental) drivers - - - >" 

I selected the Intel drivers I needed and bye bye the boot problem went away   :Very Happy: 

----------

## obrut<-

2.6.19 had a major change related to the ide and sata drivers. so when upgrading from .16 or earlier to .19 or later you have to reselect your ide or sata driver. when you use an ide driver based on libata your ide drive will no longer be hdx, but sdx! so you might need to correct yout fstab.

----------

## coolsnowmen

is there better documentation of this anywhere?

EDIT: I also don't understand which (P)ATA drivers I should be using:

  The old "ATA/ATAPI/MFM/RLL support"

or the new "Serial ATA (prod) and Parallel ATA (experimental) drivers"

I use an SiS chipset, and have both Pata and Sata drives

----------

## wynn

 *coolsnowmen wrote:*   

> is there better documentation of this anywhere?

 Not seen anything.

 *coolsnowmen wrote:*   

> EDIT: I also don't understand which (P)ATA drivers I should be using:
> 
>   The old "ATA/ATAPI/MFM/RLL support"
> 
> or the new "Serial ATA (prod) and Parallel ATA (experimental) drivers"
> ...

 If you have the patience, it seems worth trying the new ones first and then, if they don't work, going back to the old ones. Keep your current .config and use it as a base to modify, that way you can always go back to a working config again.

----------

## coolsnowmen

 *obrut<- wrote:*   

> 2.6.19 had a major change related to the ide and sata drivers. so when upgrading from .16 or earlier to .19 or later you have to reselect your ide or sata driver. when you use an ide driver based on libata your ide drive will no longer be hdx, but sdx! so you might need to correct yout fstab.

 

Ok last question then I promise I'll try and figure it out myself.  Which comes first IDE or Sata?

as in.

lets pretend I have an Ide and a sata drive.  Which ones is /dev/sda?

----------

## wynn

 *coolsnowmen wrote:*   

>  *obrut<- wrote:*   2.6.19 had a major change related to the ide and sata drivers. so when upgrading from .16 or earlier to .19 or later you have to reselect your ide or sata driver. when you use an ide driver based on libata your ide drive will no longer be hdx, but sdx! so you might need to correct yout fstab. Ok last question then I promise I'll try and figure it out myself.

 Figuring it out yourself is fine, but don't hesitate to ask when you get blocked   :Smile: 

 *coolsnowmen wrote:*   

> Which comes first IDE or Sata?as in.
> 
> lets pretend I have an Ide and a sata drive.  Which ones is /dev/sda?

 The SATA drive will be /dev/sda and the IDE driver will usually be /dev/hda. SATA is Serial ATA and IDE is now called PATA (Parallel ATA).

However, the kernels from 2.6.19 on have new, experimental, drivers for PATA and hard disks using these drivers will also be called /dev/sdX though optical drives (CD-ROM, CD-RW, DVD-ROM, DVD-RW) using these drivers will be called /dev/sr0, /dev/sr1 and so on.

The machines I am familiar with (motherboards a year or two old now) have a dual IDE port with one being ide0 and the other ide1. Each port can have two IDE devices hung on to it, they have to be jumpered as Master/Slave. Master on ide0 will be /dev/hda, Slave on ide0 will be /hdb, Master on ide1 will be /dev/hdc and Slave on ide1 will be /dev/hdd. [but, of course, if they use the new PATA drivers they will all be /dev/sdX]

There are also plug in cards or RAID controllers (either SATA or IDE) which can use higher letters for either /dev/sdX or /dev/hdX.

----------

## coolsnowmen

I very much appreciate the help. Please understand I have a working 2.6.18 kernel I built.  I tried to do what I've been doing for the last 6 kernel versions for this and it didn't boot.  

I'm still not clear on the answer to my question.

if I have an ide drive and a sata drive under the new 2.6.19 organization. 

Which one is /dev/sda? 

said another way:

 by what order does the kenel (2.6.19) detect drives in? IDE then sata? alphabetical by driver? roll of the dice?

If I can't predict which device is root for grub's "root=/dev/sdX" then it just adds another variable to trouble-shooting my current 2,6,19 problem which I was hoping to solve by understand versus experimentation.

----------

## wynn

 *coolsnowmen wrote:*   

> I very much appreciate the help. Please understand I have a working 2.6.18 kernel I built.  I tried to do what I've been doing for the last 6 kernel versions for this and it didn't boot.

 Yes, that's due to the reorganization of the SATA configuration options in 2.6.19. Using a .config fro 2.6.18 will result in no SATA support â you have to add it yourself.

 *coolsnowmen wrote:*   

> I'm still not clear on the answer to my question.
> 
> if I have an ide drive and a sata drive under the new 2.6.19 organization. 
> 
> Which one is /dev/sda? 

 That depends on whether you use the new PATA driver for your IDE drive(s). If you do, then it is difficult to predict which drive will become /dev/sda.

If you use the old PATA driver then /dev/sda will be the "first" SATA drive (see next bit for "first").

 *coolsnowmen wrote:*   

> said another way:
> 
>  by what order does the kenel (2.6.19) detect drives in? IDE then sata? alphabetical by driver? roll of the dice?

 I believe that it is in order of PCI address, for instance, in this excerpt from an lspci listing

```
0000:00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev 01)

...

0000:00:05.0 IDE interface: Silicon Integrated Systems [SiS] RAID bus controller 180 SATA/PATA [SiS] (rev 01)
```

the kernel will find the IDE interface at 0000:00:02.5 first then the RAID bus controller at 0000:00:05.0.

If the kernel driver sis5513 is in the kernel (module or compiled in) then I would expect an IDE (optical or hard) drive to be /dev/hda,b,c or d for the old PATA sis5513 and an optical drive to be /dev/sr0,1 and/or a hard drive to be /dev/sda,b.

A SATA drive connected to the RAID controller (would probably/might) be /dev/sda in the first case (/dev/hda,b,c or d) and /dev/sdc in the second.

 *coolsnowmen wrote:*   

> If I can't predict which device is root for grub's "root=/dev/sdX" then it just adds another variable to trouble-shooting my current 2,6,19 problem which I was hoping to solve by understand versus experimentation.

 Yes, it appears that the BIOS is pretty much free to allocate drives in whatever order it feels like.

In Linux/Gentoo, IMHO, understanding comes from experimentation and asking questions in the Forum   :Smile: 

Fortunately, GRUB can help here: if you boot and press a key so it doesn't automatically try and load a kernel, you can press "c" to get a command line.

You can then search for the kernel you want to boot using

```
find /boot/kernel-2.6.20-gentoo-r7
```

Two assumptions here: your kernel image is called "kernel-2.6.20-gentoo-r7" and you don't have a boot partition. If you do have a /boot partition, then it is

```
find /kernel-2.6.20-gentoo-r7
```

This will give you the "(hdN,M)" that you need for grub.conf.

----------

## coolsnowmen

 *wynn wrote:*   

> 
> 
> Fortunately, GRUB can help here: if you boot and press a key so it doesn't automatically try and load a kernel, you can press "c" to get a command line.
> 
> You can then search for the kernel you want to boot using
> ...

 

that is a very good idea, thanks.  I've never actually used grub's more 'shell like' commands.

i'm going to assume it is a very bad idea to have both new and old [pata] drivers in the kernel at concurrently...infact, that might be my problem.[/quote]

----------

## wynn

 *coolsnowmen wrote:*   

> i'm going to assume it is a very bad idea to have both new and old [pata] drivers in the kernel at concurrently...infact, that might be my problem.

 Probably best avoided, if only because it is difficult to predict what might happen.

----------

## Fatsug

Hello,

I have red this thread and I believe I have a similar problem.

I have AMD 64, Motherboard: Gigabyte K8NF-9 all (almost) nvidia drivers,  Harddisk: Seagate: ST3200822AS Sata

I upgraded the kernel from 2.6.17-r8 to 2.6.20-r8 and now the kernel can't find the harddisk.

During the boot process the kernel prints the following message:

SCSI0: sata_nv

ata1: SATA link uo Gbps (Sstatus 113 Scontrol 300)

ata1.00: ATA-7, max UDMA/133, 390721968 sector: LBA48 NCP (depth 31/32)

ata1.00 ata1 dev 0 multi count 16

ata1.00 qc time out

repeat this several of times, but fails.

I've compiled sata_nv, sata_ahci and pata_nv into the kernel in different combinations, but nothing works.

Please help

----------

