# Suggestions for PCI-Express SATA card?

## Thisp

The mobo's sata ports are used up. I only have one PCI card slot left on the motherboard. I'd rather use it for an extra NIC down the line, and it's pretty hard to get into unless I change the heatsink on the graphics card in it. 

I have 2 PCI Express x1 slots on the motherboard. I'd prefer at least two SATA ports per card. 

What card would cause the least issues with the 2.6.15 kernel? Most don't list linux as a supported OS. I'm looking to spend no more than $40 for a single card with two sata ports.

Thanks in advance for any information.

----------

## Keruskerfuerst

E.g. Dawicontrol DC 300e.

Works with an SIL3132 controller chip and this chips is supported by the linux kernel.Last edited by Keruskerfuerst on Sun Nov 19, 2006 3:50 pm; edited 1 time in total

----------

## Thisp

Thanks. Should I just search based by chip and not by the card itself? I can't find that in many american shops, are there any others? I'm just about to buy, I'm looking at this model.  :Smile: 

----------

## Keruskerfuerst

The controller chip is relevant, not the card itself. The above mentioned card should work.

----------

## Thisp

So it's the same as wi-fi cards then? Great, thanks for all of your help - this forum is great!

----------

## Thisp

lspci finds me this. 

```
04:00.0 RAID bus controller: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller (rev 01)

```

But I can't find any new corresponding /dev entries. I tried recompiling the kernel too. 

Is there something I am missing?

----------

## Keruskerfuerst

What says dmesg?

----------

## Thisp

http://thasp.net:4000/dmesg.log

Is with old kernel.

When I try to compile any new kernel that works with this card(this chipset enabled in low level scsi drivers), I get kernel panics about not seeing root or this root not being valid, even though it is valid with my old kernel. I also see lots of IRQ conflict stuff.

----------

## Keruskerfuerst

Obviously, the driver for the SIL chip is not included into the kernel.

----------

## Thisp

 *Keruskerfuerst wrote:*   

> Obviously, the driver for the SIL chip is not included into the kernel.

 

Yes. However, when I compile a new kernel and include it, I get IRQ conflicts, the kernel telling me it can't find /dev/sda3 which is root because it doesn't exist, and a kernel panic.

It's lose lose.  :Sad: 

----------

## esperto

this is a strange behavior, have you tried to boot the new kernel without this new board attached? maybe the board is getting the assignment first, and the root partition is sdb3 or sdc3, etc... if this don't work, post here yours grub/lilo config file  :Wink: 

----------

## Keruskerfuerst

This problem can be solved by using a different PCI(X) slot (with a different IRQ).

----------

## Thisp

I tried a different slot, no dice.

It did work without this controller plugged in with the new kernel, though.

Here's what happens with the card plugged in with the kernel that can see it. 

http://thasp.net:4000/pictures/trouble.JPG

Here's grub.conf

http://thasp.net:4000/grub.log

```
# Which listing to boot as default. 0 is the first, 1 the second etc.

default 0

# How many seconds to wait before the default listing is booted.

timeout 10

# Nice, fat splash-image to spice things up :)

# Comment out if you don't have a graphics card installed

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

title=Gentoo Linux 2.6.15

# Partition where the kernel image (or operating system) is located

root (hd0,0)

kernel /boot/linux-2.6.15-gentoo-r5 root=/dev/sda3

title=Gentoo Linux 2.6.18

root(hd0,0)

kernel /boot/linux-2.6.18-gentoo-r3 root=/dev/sda3

```

----------

## Keruskerfuerst

Maybe the additional controller card changes the boot sequence.

Just have a look at the mainboard bios.

----------

## Thisp

I have, another hobby of mine is overclocking so I have the options memorized by now. 

Nothing in the mainboard BIOS seems to pertain to this.  :Sad: 

There is HD boot order, but it doesn't see the HD I added to this controller as a drive in the BIOS.

Is there a way to tell what /dev/whatever entry is the old /dev/sda3(which is the root partition) with the new kernel, before it goes into panic?

----------

## esperto

are you using genkernel or doing "by hand"?

With genkrnel the recommended boot script for grub looks like this:

# For booting GNU/Linux

title  Gentoo

root (hd0,1)

kernel /boot/kernel-genkernel-x86-2.6.19-rc6 root=/dev/ram0 udev init=/linuxrc ramdisk=8192 vga=0x31b real_root=/dev/sdc2

initrd /boot/initramfs-genkernel-x86-2.6.19-rc6

a tip, when you're at the grub menu before choosing the system to boot, you can get into a grub console and check if it recognize all your disks and partitions, was using this that I discovered that my disks swapped after changing the kernel versions. 

But seeing the error it looks like your kernel don't have the onboard controller module compiled in...

----------

## Thisp

By hand. 

the onboard is simple nvidia sata controller that I am 99% sure I compiled in... maybe I should doublecheck. 

Someone else suggested I boot a livecd and check what dmesg has to say about what drives it sees, and use that in my grub config.

----------

## Thisp

More testing gives me this.

With the card in, it works. With the card in and a drive connected, it recognizes the card as before but panics because it cannot see root.

My theory is that adding drives with this card moves /dev/sda over to being /dev/sdb, or /dev/sdc or something.. but how can I tell what drive is /dev/sda when I move it over? I have /dev/sda, /dev/sdb/, /dev/sdc, /dev/sdd, /dev/hdc, /dev/hdb, /dev/hdd(I don't mount the DVD drive, I only use it for installs), and /dev/md5 is a raid 0 array of /dev/sdb and /dev/sdc.

----------

## Jjeje007

Hi,

 *Quote:*   

> a tip, when you're at the grub menu before choosing the system to boot, you can get into a grub console and check if it recognize all your disks and partitions, was using this that I discovered that my disks swapped after changing the kernel versions. 

 

How do you do this ??

Sorry for the off-topic   :Laughing: 

EDIT : I have just to change the "ide configuration" in my bios (asus P5W DH Deluxe) to get an kernel panic like Thisp so this tip could help me to find out where is my problem   :Razz: 

----------

## Thisp

I had four sata drives.

I changed root to /dev/sdb instead of sda. I changed my other drive to sde from sdd. But, /dev/sdb and /dev/sdc were being used in a raid0 /dev/md5 array before.. shouldn't they have been messed up since they were now /dev/sdc and /dev/sdd?

I decided to make an LVM of most of my partitions. Is this going to mess up now each time I add a drive to a PCI express sata controller, or is it "smart" enough to handle me adding drives without bumping everything up and destroying the LVM volume I have?

----------

## pratyeka

You can check out my findings in this area (in rural China, so perhaps hardware availability differs) over here: http://www.pratyeka.org/sata-raid/

Busy-linux-user's summary: 

 Silicon Image SI3112 Cards - BROKEN

 USB2.0 SATA Enclosures - BROKEN

 Silicon Image SI3132 Card - PERFECT, BUY THIS

 :Cool: 

----------

## s0be

if the pci-e controller uses a different controller than your onboard sata, you could use a modular driver which would solve the problem.  Another option is to figure out what the new device assignment is.  What is happening is this:

OLD:

```

On-Board SATA Controller:

Device -> sda

Device -> sdb

```

NEW

```

PCI-E Controller:

Device -> sda

Device -> sdb

On-Board SATA Controller:

Device -> sdc

Device -> sdd

```

Another option include moving the onboard discs to the pci-e controller so that the drives are detected in the correct order, but I find that just using modules for drives that aren't boot dependent is much more predictable across kernel upgrades or small changes in config (like the recent move to libata for all pata/sata stuff).

----------

