Serial ATA (SATA) chipsets — Linux support status


Problem: Serial ATA (also known as S-ATA or SATA) chipsets are rapidly replacing legacy "parallel ATA" (PATA, i.e., regular ATA/133) chipsets — but many Linux installers' kernels don't yet support many Serial ATA chipsets. If yours isn't supported, you have an installation obstacle. SuSE's, Fedora Core 2's, Gentoo's, Knoppix's, Debian-sarge release candidates, and Mandrakelinux's installation kernels have a good selection of the required drivers. Scott Kveton's Debian netinst image does, likewise — see Links/Resources.

Note: There is no such thing as a distribution or its installer (generically) "having SATA support" (or not). Please send anyone speaking in such terms to this page. (Some SATA chipsets have been supported since practically forever, as their programming interfaces are unchanged from PATA predecessors. Others are brand-new and require new drivers from scratch.)



There are three workaround options:

1. Switch the motherboard BIOS back to "legacy ATA mode" (parallel ATA = PATA). Complete a Linux installation. Fetch or build a kernel with support for your chipset. Switch the BIOS setting back. (Potential catch: It's claimed that Dell Optiplex GX270 and Dell Precision Workstation 360 desktop units, using Intel ICH5 SATA chipsets, don't support switching to legacy ATA mode. This might be true of some others.)

2. Rebuild your installer using kernel 2.4.27 or later, which includes libata, desirable since it adds many new chipsets and gives a (potential, subject to physical read limits, etc.) ~10M/s speed boost to some others compared to the quite slow 2.4.x drivers/ide set.

3. Temporarily add a regular PATA drive to your system. Install Linux onto that. Fetch or build a kernel with support for your chipset. Migrate your system to the SATA drives.


Driver Overview: Linux kernels have two ATA ("IDE") driver sets:

Hardware RAID cards have drivers outside these two collections (e.g., 3w-xxxx, 3w-9xxx, aacraid, cciss, dac960, dpt_i2o, gdth, ips, megaraid, megaraid2, mpt*).


Driver Support for Each Known SATA Chipset:

(Caveats: Don't assume this page's data are perfect. Also, if a card's price makes it seem too good to be true, it probably is.)

The first and more-important of two issues raised by these chipsets is what's required to make Linux see block devices on them at all.


RAID issues (a separate wrinkle): (link)

Most ATA RAID host adapters (except 3Ware Escalade, Adaptec 24x0, Areca, HP/Compaq, IBM ServeRAID, Intel SRC*/ICP Vortex, LSI Logic MegaRAID 150-4/150-6, and Tekram) turn out, upon examination, to not be real hardware RAID, but rather software/BIOS-dependent fakeraid. (I.e., missing hardware functionality is traditionally emulated inside idiosyncratic, undocumented, and proprietary software drivers, to hit low price points). Fakeraid is difficult to support in Linux — absent either reverse-engineering, special proprietary drivers, or (rare) manufacturer cooperation. (HighPoint, LSI Logic, Nvidia, Promise, and VIA provide proprietary drivers to support their respective fakeraids. I personally would steer clear.)

Linux often cannot read existing fakeraid volumes on such host adapters, unless you're willing to use proprietary fakeraid drivers (where available). But unless you're dual-booting MS-Windows, you shouldn't care, because Linux's software RAID (kernel "md" driver) is much faster and more reliable. You're advised to blow away fakeraid volumes, use SATA drives as straight block devices, and enable Linux software RAID instead, during Linux installation.

Kernel coders are slowly figuring out some fakeraid variants, and coding ataraid/dmraid modules.

Warning about media errors and RAID

Be aware that if any one drive of your SATA-based RAID array goes offline for any reason, including a significant string of media errors, depending on the SATA host adapter, the array may hang and need to be rebooted. This is because many SATA host adapters, like ATA generally absent special hardware provisions, simply don't support hotplug functionality.

This is known to be true, in particular, of Intel's ICH5/ICH5R series, and Garzik has pointed out that that chip series, plus Intel ICH6 (in non-AHCI mode), Pacific Digital Talon, and Promise SATA SX4 — at minimum — will never support hotplug.


Troubleshooting:

If your installer finds no block devices or has other problems, please realise that all Linux SATA support is still (2004-01) hit or miss. (Users of 3Ware cards should have no problems, though. Those with Intel ICH5 chipset may be OK with the 2.4.22 or later drivers/ide piix driver, as that chipset is very nearly identical to prior Intel chips in the PIIX series.) Your best option is to find or build an installer with a recent version of libata, either by virtue of its inclusion in stock 2.6.x kernels, its merger into 2.4.27 and later, or by your applying it as a patch to a (pre-2.4.27) 2.4 installation kernel.


Links/Resources:

Serial ATA (SATA) for Linux link farm (Garzik's). All of author's future SATA status reports and other support pages will be linked there.

Linux SATA RAID FAQ (Garzik's). Mostly, "Why — no, sir — here's why that SATA thing you bought actually isn't real hardware RAID." Very droll.

Linux-IDE: — information resource for open-source Linux ATA support but not necessarily the Serial ATA variant, operated by a "Linux ATA Development Storage Consulting Group":
http://www.linux-ide.org/

Background article on Serial ATA and Linux:
http://www.linux-tutorial.info/modules.php?name=Tutorial&pageid=328

Design limits of ATA, especially in RAID settings:
http://www.findarticles.com/cf_dls/m0BRZ/6_23/105884199/p1/article.jhtml Why SCSI will still remain generally faster and more reliable.

Serial ATA Info by Brady Matthew Shea.

SATA/RAID-Capable Hard Drives and Motherboards by Brady Matthew Shea.

libata status reports:

libata source code and docs checkout: Take care to read all documentation. Among other things, you'll need to disable all kernel ATA support, since libata uses the kernel's SCSI layers: http://gkernel.bkbits.net/ or (somewhat easier to deal with) Garzik's periodic patchkits at ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/.

I gather that libata is the only way to support SATA drives larger than 133GB. (libata supports the necessary "lba48" ATA addressing extension starting with kernel revision 2.6.5-rc2.) Also, Garzik has hotplug, random taskfile submission (thus enabling SMART support, previously unavailable under libata), and ATAPI under development for libata as of 2004-04-24. Last, Garzik has drivers for SATA-2 controllers under development as of 2004-03-30.

SATA can theoretically do tagged command queuing (TCQ), but support for that feature is just now (2004-07) under construction in libata — and exists in none of the other Linux driver sets.

Kernel Traffic's ongoing coverage: http://www.kerneltraffic.org/kernel-traffic/topics/Serial_ATA.html

Debian installation using Scott Kveton's unofficial Debian 3.0 woody 5 MB netinst image: This image uses a 2.4.23 kernel, meaning it's useful for owners of Intel ICH5 chipsets (standard ATA driver), Adaptec AAR 24x0 chipsets (aacraid driver), LSI Logic MegaRAID 150-4/150-6 SATA chipsets (megaraid2 driver), and the SiS 964 South Bridge. (Please let me know. My thanks to Martin McClure for confirming SiS 964 support.) And of course 3Ware card owners can use almost any 2.4.x-based installer. Kveton's image does not include Garzik's libata set, and so doesn't cover other SATA chipsets. However, Kveton's instructions page also details how you can create your own custom netinst, e.g., one with 2.4.27 (and later) or a 2.6 kernel (either of which includes libata):
http://oregonstate.edu/~kveton/debian/ or http://public.www.planetmirror.com/pub/debian-netinst/kveton/

Installing Debian with SATA-based RAID. Article by Karl Schmidt, in which he uses the Debian-sarge beta4 installer's 2.6 kernel's libata drivers to complete installation onto his Intel ICH5 SATA (Intel D865PERL motherboard), then create a Linux software RAID array, and move Debian over:
http://xtronics.com/reference/SATA-RAID-Debian.htm

Debian chroot installation onto Intel ICH5R SATA. Involves initial Debian installation to a separate PATA drive. Basic technique shown can be adapted to any SATA chipset using 2.4.27 (or later) or a 2.6 kernel (either of which includes libata):
http://www.e-aiyama.com/~toshi/Computer/Linux/SATA.html

Debian chroot installation onto Intel ICH5 SATA and LVM. Involves initial Debian installation to a separate PATA drive:
http://www.lathi.net/twiki-bin/view/Main/DebianSataLvm

Debian 2.6-kernel-based installers. At least two installers for Debian provide installers with "2.6 boot flavour" options (and thus libata): all Knoppix releases starting with v. 3.4 and Official Debian Debian-Installer releases (for Debian 3.1 sarge and later) starting with beta 4.

Red Hat custom CD construction — creating your own custom RH-based installer starting from stock RH8, e.g., to substitute a custom kernel with libata patches:
http://www.cpqlinux.com/rh80customcd.html

Red Hat on an Intel D865PERL motherboard and SATA drives — brief article on how to install RH9 to hard drives on that motherboard's Intel ICH5 chipset, by setting the BIOS to "legacy mode" for installation, and then using Linux software RAID ("md" driver):
http://www.transtronics.com/reference/D865PERL_SATA.htm

Fedora custom CD construction — creating your own custom Fedora-based installer starting from a stock Fedora image, e.g., to substitute a custom kernel with libata patches:
https://www.redhat.com/archives/anaconda-devel-list/2003-March/msg00033.html. (Note that Fedora Core2 provides a 2.6 kernel, making this rebuild step no longer necessary for most SATA chipsets.)


Disclaimer:

I've created this document from public sources in order to learn about the subject, but cannot claim any expertise. Accordingly, it may contain significant errors — and corrections are greatly appreciated. Please send all such to rick@linuxmafia.com.

See also:

Thanks to the Darma NAS OS Hardware Compatibility List (http://nas.darma.com/support/hcl.html) for crediting this page (for extensive borrowings from it).

The Skolelinux Project has a potentially useful page of information about hardware RAID chipsets: http://developer.skolelinux.no/info/prosjektet/delprosjekt/hw-raid-info.html