# Intel Corporation ICH9M/M-E SATA AHCI [SOLVED]

## baldeante

Hello,

I'm haven't use Gentoo i'm about two years so i'm a bit rusty, when my old P3 died (yes it work until two years ago it was a very good machine) o got a new laptop but working during day and having school at night without computer i just set it up with Ubunto sometimes something new is good, i miss Gentoo "wide options" and i just start a fresh install and on the last few days i have been fighting with the sata AHCI or grub at this point i just don't know i have read so much topics over here and tried so many tweaks on the grub.conf and .config that i just can't say for sure ...

I'm having the error :

```

...

kernel panic - not syncing: VFS: Unable to mount root fs on unknow-block(0,0)

Pid: 1, comm: swapper Not tainted 2.6.39-gentoo-r3 #5

Call Trace:

...

```

at some point i did try to use some init ram fs but i believe i removed ... will appreciate any help ...

Here is the relevant information so that some fresh couple of eyes can take a new look ... and maybe pass some light to me ...

fstab :

```

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.

/dev/sda7      /      ext3      noatime      0 1

/dev/sda6      /boot      ext3      noauto,noatime   1 2

#/dev/sda3      none      swap      sw      0 0

/dev/cdrom      /mnt/cdrom   auto      noauto,ro   0 0

#/dev/fd0      /mnt/floppy   auto      noauto      0 0

```

fdisk -l with comments

```

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      102400    7  HPFS/NTFS # Seven

Partition 1 does not end on cylinder boundary.

/dev/sda2              13        6375    51097600    7  HPFS/NTFS # Seven

/dev/sda3            6375        6873     4000185   82  Linux swap / Solaris

/dev/sda4            6874       25562   150119392+   5  Extended

/dev/sda5            6874       13097    49994248+  83  Linux # Ubunto

/dev/sda6           13098       13113      128488+  83  Linux # Gentoo Boot

/dev/sda7           13114       25562    99996561   83  Linux # Gentoo /

```

grub.conf

```

default 0

timeout 30

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

title Gentoo Linux

root (hd0,6)

kernel /boot/kernel-2.6.39-gentoo-r3 root=/dev/sda7

readonly

```

lspci

```

00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)

00:01.0 PCI bridge: Intel Corporation Mobile 4 Series Chipset PCI Express Graphics Port (rev 07)

00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)

00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)

00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)

00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)

00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)

00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)

00:1c.3 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 (rev 03)

00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 (rev 03)

00:1c.5 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 6 (rev 03)

00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)

00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)

00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)

00:1d.3 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)

00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)

00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)

00:1f.0 ISA bridge: Intel Corporation ICH9M LPC Interface Controller (rev 03)

00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03)

00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)

00:1f.6 Signal processing controller: Intel Corporation 82801I (ICH9 Family) Thermal Subsystem (rev 03)

01:00.0 VGA compatible controller: nVidia Corporation G98 [GeForce 9200M GS] (rev a1)

02:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)

06:00.0 FireWire (IEEE 1394): JMicron Technology Corp. IEEE 1394 Host Controller

06:00.1 System peripheral: JMicron Technology Corp. SD/MMC Host Controller

06:00.2 SD Host controller: JMicron Technology Corp. Standard SD Host Controller

06:00.3 System peripheral: JMicron Technology Corp. MS Host Controller

06:00.4 System peripheral: JMicron Technology Corp. xD Host Controlle

```

----------

## baldeante

.config

http://dl.dropbox.com/u/2949828/Linux/config.kernel.1

I have build all SATA drivers and ext2/3/4 file-systems i believe i just need ext3 but to be sure they are all in ... driving me crazy   :Evil or Very Mad:   :Evil or Very Mad: 

----------

## taho

first of all you should ensure that you rightly detected your disk.

Try root=/dev/sdb then /dev/sdc, /dev/sdd ... in grub.

hope this help you

----------

## baldeante

There is only one hard drive so it can only be sda ....

Also near the error i have the partitions listed it just won't boot .... so i'm guessing grub is ok and something on the kernel isn't ...

I just can't can't figure exactly what ...

----------

## NeddySeagoon

baldeante,

```
unknown-block(0,0) 
```

 Tells that one or more of the hardware options you need for the kernel to reach your hard drive is missing, or made as <M>

<M> won't work as the kernel cannot read the hard drive to load the module it needs to read the drive ... if you see what I mean.

```
00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03) 
```

You need SCSI Disk support, the SATA AHCI driver and you may need  ATA ACPI Support  all as <*>

If the numbers in the ]unknown-block(0,0) message change, thats useful debug information.

----------

## taho

Hi NeddySeagoon

According to his kernel config file he has all mentioned build in parameters except ATA_ACPI Support. The last is not required and can be supplementary IMHO.

baldeante, do you use AHCI mode in BIOS?

----------

## NeddySeagoon

taho,

Thats why I said may.  I have one system that is quite happy to work that option off and another that will not boot if its off.

Even weirder, they both have the same AMD chipset.

baldeante,

Lets check some file timestamps ...

From oldest to newest.  Pathnames are in your chroot. Use the ls -l command

/usr/src/linux/.config  should be the oldest file of this sequence - its used to generate the next file

/usr/src/linux/arch/x86/boot/bzImage is the kernel made from the .config above, so it should be newer.

/boot/<kernel_file> is a copy of the file above and should have the same (*identical*) timestamp.

If you have several kernel files in /boot then look in /boot/grub/grub.conf does grub.conf reference the newest kernel file ?

Its quite possible you have fixed your kernel but don't know it because you keep loading the broken one.

----------

## DaggyStyle

try this:

```
kernel hd(0,5)/boot/kernel-2.6.39-gentoo-r3 root=/dev/sda7 
```

----------

## Elekrep

I had a booting system after quite alot of work. Yesterday when I got home, i noticed there had been a power outage at some point and my server now has this same problem. Don't know what happened, since I haven't done any updates to the kernel/system. All filesystems/drivers are compiled into the kernel.

I know that I had similar problems while installing this new server a while back, but I thought i had conquered them. At the moment I don't know if I can be bothered with gentoo problems anymore  :Smile: . It's just one after the another. Especially annoying is that you never know if your system will boot up if it has been running for a while.

----------

## baldeante

@NeddySeagoon & @taho

About BIOS & AHCI support, my this laptop has a SATA  HD there is no option to switch between AHCI and compatible IDE mode so i'm guessing is using full AHCI just like the most recent laptops ...

On the Ubunto disk utility i can read :

Model : ATA TOSHIBA MK5055GSX

Firmware version : FG002C

Location : Port 1 of Sata Host Adapter

Toshiba site http://sdd.toshiba.com/main.aspx?Path=StorageSolutions/PCNotebook/MKxx55GSXSeries/

The description says ATA but the HD is SATA maybe inside has a SATA to ATA conversion can't really say ... but that has no effect on the driver i need to detect the motherboard drives as far as i know ...

@NeddySeagoon

Yes all paths are inside the chroot made from Ubunto

i always use the /usr/srv/linux/.config (i fully ignore the .config.old unless i need to revert) the link from /usr/src/linux to the gentoo-sources kernel are ok as you can see here :

```

BUbunto linux # pwd

/usr/src/linux

BUbunto linux # ls .. -l

total 4

lrwxrwxrwx  1 root root   22 Aug 25 22:00 linux -> linux-2.6.39-gentoo-r3

drwxr-xr-x 24 root root 4096 Aug 26 12:49 linux-2.6.39-gentoo-r3

BUbunto linux # 

```

I'm using arch/x86_64/boot/bzImage since this is a 64 bit system this is ok right ???

There is only one kernel at /boot as can be seen over here :

```

BUbunto linux # ls /boot/ -la

total 5461

drwxr-xr-x  4 root root    1024 Aug 10 15:52 .

drwxr-xr-x 19 root root    4096 Aug 25 21:44 ..

-rw-r--r--  1 root root   65184 Aug 26 11:39 .config

-rw-r--r--  1 root root       0 Nov 26  2009 .keep

lrwxrwxrwx  1 root root      33 Aug 10 13:31 System.map -> /boot/System.map-2.6.39-gentoo-r3

-rw-r--r--  1 root root 1997567 Aug 26 11:38 System.map-2.6.39-gentoo-r3

lrwxrwxrwx  1 root root       1 Dec  3  2009 boot -> .

drwxr-xr-x  2 root root    1024 Aug 24 14:07 grub

-rw-r--r--  1 root root 3484496 Aug 26 11:38 kernel-2.6.39-gentoo-r3

drwx------  2 root root   12288 Dec  3  2009 lost+found

BUbunto linux # 

```

@Elekrep

No pain no gain ... i like the challenge ...

----------

## baldeante

 *DaggyStyle wrote:*   

> try this:
> 
> ```
> kernel hd(0,5)/boot/kernel-2.6.39-gentoo-r3 root=/dev/sda7 
> ```
> ...

 

I have the exacts same error   :Mad: 

what is the difference between :

```

title Gentoo Linux teste

root (hd0,6)

kernel /boot/kernel-2.6.39-gentoo-r3 root=/dev/sda7

readonly

```

and 

```

title Gentoo Linux teste

kernel hd(0,5)/boot/kernel-2.6.39-gentoo-r3 root=/dev/sda7

readonly

```

This was the change you were suggesting right ???

 *taho wrote:*   

> Hi NeddySeagoon
> 
> According to his kernel config file he has all mentioned build in parameters except ATA_ACPI Support. The last is not required and can be supplementary IMHO.
> 
> baldeante, do you use AHCI mode in BIOS?

 

I'm now looking for that option on the kernel ... will report after ...

----------

## NeddySeagoon

baldeante,

```
root (hd0,6) 
```

in grub.conf tells grub to load the files following the statement from that partition.

hd0,6 is the seventh partition on the first hard drive discovered by the BIOS.  It may or may not be sda7, as the kernel may not find your drives in the same order as the BIOS, unless you only have one drive.

In an earlier post you said 

```
default 0

timeout 30

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

title Gentoo Linux

root (hd0,6)

kernel /boot/kernel-2.6.39-gentoo-r3 root=/dev/sda7

readonly 
```

and 

```
/dev/sda6           13098       13113      128488+  83  Linux # Gentoo Boot

/dev/sda7           13114       25562    99996561   83  Linux # Gentoo / 
```

Your /boot should be (hd0,5) in grubspeak, which you have in 

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

but not in 

```
root (hd0,6)   <----

kernel /boot/kernel-2.6.39-gentoo-r3 root=/dev/sda7
```

While thats interesting, I guess its a typo in your post, as a kernel is loaded, but ...

There are two places in your system called /boot.  One is a directory on sda7, where you normally mount your real boot (sda6) partition.

If you accidently do not mount your sda6 boot partition to /boot, then copy a kernel over, it will go into /boot on sda7.

Your grub.conf as posted will load that kernel and always ignore any kernel in the real boot partition.  This can be hard to spot.

Please look in your /boot both with and without /dev/sda6 mounted.  When sda6 is not mounted your /boot should be empty. If its not, move all the files out, say to your /home/<user> as you might want them again.

If you had to move files when sda6 was not mounted, reboot.  You will get a different error. Tell us what it is.

----------

## baldeante

I just added ATA_ACPI plus some other debug options on SCSI and ACPI to see if got other error ... as far as a see is the same no extra information ...

New .config here => http://dl.dropbox.com/u/2949828/Linux/config.kernel.2

I made this script to chroot from Ubunto to Gentoo and make sure i wasn't forgetting partitions ...

```

## Mounting and chrooting

echo "Mounting / ... "

mount /dev/sda7 /mnt/gentoo

echo "Mounting /boot ... "

mount /dev/sda6 /mnt/gentoo/boot

echo "Mounting /dev ... "

mount /dev/ -o bind /mnt/gentoo/dev

echo "Mounting /proc ... "

mount /proc -o bind /mnt/gentoo/proc

echo "Chroonting ..."

cd /mnt/gentoo/

chroot /mnt/gentoo /bin/bash

# Un-Mounting all 

echo "Un-Mounting /proc ... "

umount /mnt/gentoo/proc

echo "Un-Mounting /dev ... "

umount /mnt/gentoo/dev

echo "Un-Mounting /boot ... "

umount /mnt/gentoo/boot

cd /

echo "Un-Mounting / ... "

umount /mnt/gentoo/

echo "Done"

```

I manually mount / and before mounting /boot there is no file on /boot directory present in /sda7 ... 

```

title Gentoo Linux teste

root (hd0,6)

kernel /boot/kernel-2.6.39-gentoo-r3 root=/dev/sda7

readonly 

```

This was my current grub, here is what i was thinking i'm mounting / followed /boot in /etc/fstab so root  (hda0,6) would be the same as (hda0,5) since /boot would be mounted ... but after reading you post some light open on me head grub.conf will read /boot kernel and boot so i correct my grub to :

```

title Gentoo Linux teste

root (hd0,5)

kernel /boot/kernel-2.6.39-gentoo-r3 root=/dev/sda7

readonly 

```

I just can't find any kernel log in /var/log maybe  this is just because kernel never successfully boot ...

Now i just got some other light on my brain when ever i change any text in any grub2 config files on ubunto i  have to run update-grub2 do i have to run something like this on grub ...

i haven't use grub since i stop using Gentoo two years ago maybe the last changes i made on the grub.conf aren't being read ... can that be possible ???

As far as i remember i just had to change the file /boot/grub/grub.conf after grub got installed it would automatically read it on boot this is this right ??

----------

## NeddySeagoon

baldeante,

Changing the grub.conf file is all that is needed for grub to pick up on the changes.

When grub runs, the kernel filesystem tree is not assembled, the kernel isn't loaded yet, so it can't be.

Its just grub and BIOS.  Indeed grub uses the BIOS to load things.

When the filesystem tree is not asembled every partition is separate, you need to tell grub where things are.

With your root (hd0,6) grub would not have found your kernel, as it would have looked in /boot on sda7, which you said was empty.

So how was any kernel getting loaded at all?

Please explain how Gentoos grub gets control to load Gentoo.

You have mentioned Ubuntu and grub2 ... how does it all fit together ?

----------

## baldeante

I have grub2 installed on mbr by ubunto with detects other partitions with active boot system (Seven and Gentoo)

I install Gentoo grub in /dev/sda6 with is /boot on Gentoo and after i run update-grub2 on Ubunto and i just got Gentoo on Ubunto grub2 menu.

This way i boot Ubuntu and quickly chroot to make Gentoo changes and reboot to test it ..

I'm guessing Ubunto grub2 points to my Gentoo boot partition and calls Gentoo Grub ... if this is incorrect i just see one single option install Gentoo grub on MBR and set it to boot Ubunto and Seven i was avoiding this until o got Gentoo booting to avoid booting from a LiveCD + Manual chroot witch is slower than Ubunto + MyScript chroot ...

Until i got Gentoo working i need Ubunto booting for my regular computer use ... and since i have no other computer is a pain to boot/chroot Gentoo reboot to Ubunto to seach Gentoo forums and return to boot/chroot Gentoo ...

Now you got me thinking if Ubunto call my Gentoo grub i would see some Gentoo grub menu before boot right ??? Because i see no menu is just start loading the kernel ... i'm starting to believe Ubunto grub2 sucks calling other Linux Distros ...i'm going to sleep on this one ...

----------

## NeddySeagoon

baldeante,

If grub2 loads Gentoos Grub, when you select Gentoo from grub2, you would get another boot loader screen.  It would have a purple splash screen with all of your Gentoo boot options listed.

In your case, just 

```
Gentoo Linux teste 
```

If you do nothing after 

```
timeout 30 
```

30 seconds, your Gentoo would load.

If you do not see the splash screen, the menu and the 30 second wait before the Gentoo kernel loads, grub2 is loading the Gentoo kernel directly.

Next question ... is Gentoos Grub being used or not?

----------

## baldeante

There is no second grub menu so i'm guessing Ubunto grub2 loads Gentoo kernel directly as you describe ... this is not very nice ...

Now about Gentoo grub being used i think so since Ubunto grub2 only show Gentoo boot option after i installed grub on /dev/sda6 my boot partition ... before that there was only Ubunto and Seven does this answer your question ??

There is any way for me to create a new menu option in Gentoo grub pointing to my Ubunto partition boot sector ??? 

Someting like this :

```

title Microsoft Windows Seven

root (hd0,1)

savedefault

makeactive

chainloader +1

title Ubunto

root (hd0,4)

savedefault

makeactive

chainloader +1

```

If there is i can just install Ubunto grub2 in Ubunto itself partition and call it from Gentoo grub installed on the HD MBR ... 

This could solve my Ubunto boot problem and maybe give me some new light on the problem assuming Ubunto isn't calling Gentoo kernel as it should ... i really don't care about windows i use it about once or twice every month ... 

Can you imagine any other alternative ?? I'm geting out of options or imagination, assuming the kernel and grub are both ok ...

----------

## NeddySeagoon

baldeante,

It does not matter for the moment how your Gentoo kernel gets loaded as long as it does - so thats ok.

We do need to know that Grub2 loads the right Gentoo kernel and not some 'ghost' as lilo will when you forget to run /sbin/lilo before the reboot.

You can install Gentoos Grub to your MBR but if you don't get grub.conf right, you won't be able to boot anything without a bootable CD, then fixing grub.conf.

Is that a risk you want to take?

It would be safer to work with grub2 for now and understand how it locates your Gentoo kernel. The is the beginning of a Grub2 document for Gentoo here but it does not explain if you need to tell Grub2 about new kernels or not.

To use grub2 to chainload Gentoos grub your grub2 needs something like this Winodws example

```
menuentry "Windows" {

   insmod chain

   insmod ntfs

   set root=(hd0,1)

   chainloader +1

}
```

A good start might be

```
menuentry "Gentoo - Chainloaded" {

   insmod chain

   insmod ext2

   set root=(hd0,6)

   chainloader +1

} 
```

The set root=(hd0,6) points to your Gentoo Boot, where you have Gentoo grub installed in the partition. Note that *http://www.gnu.org/software/grub/manual/grub.html#Changes-from-GRUB-Legacy wrote:*   

>  Partition numbers in GRUB device names now start at 1, not 0

 

You need insmod chain, so Grub2 can chainload.

The insmod ext2 may not e required and may not even exist.

The object of all this is to get Ubuntus Grub2 to chanload GEntoos Grub1

----------

## baldeante

Your last post made sense and i start doing some silly test like removing kernel form /boot to see is boot (it didn't) ... rebuilding grub.conf ... reemerging gentoo-sources compiling with with make clean .... and some other stuff i don't even remember now ...

All fail and i start Goggling for Grub & Grub2 after a while lots of grub & grub2 reading i read somewhere something like this ...

"... when ever you update any Linux grub.conf you have to run update-grub2 to update grub2 boot menu options since it will not detect other distros changes by it self ..."

At first i didn't really pay attention and continue the reading since the kernel and System.map under Gentoo always had the same name then after some more reading something hit me i had switch in Gentoo grub.conf root (hd0,6) by root (hd0,5) ....

I run update-grub2 on Ubunto reboot and Gentoo boot right away .... i feel so stupid right now ...

i can only thank everyone and specially to NeddySeagoon for the time lost on this quest ... and apologize for my distraction ... will close this topic now with SOLVED ....thanks again all

----------

