VT8237A SATA Controller
The Linux kernel uses the sata_via driver to manipulate disks attached
to the VT8237A Sata Controller. The vendor ID and device ID for the controller
are 0x1106 and 0x591, respectively. I've underlined it about halfway
down the list.
[root@hawk ~]# lspci -n
00:00.0 0600: 1106:0351
00:00.1 0600: 1106:1351
00:00.2 0600: 1106:2351
00:00.3 0600: 1106:3351
00:00.4 0600: 1106:4351
00:00.5 0800: 1106:5351
00:00.6 0600: 1106:6238
00:00.7 0600: 1106:7351
00:01.0 0604: 1106:b999
00:02.0 0604: 1106:a238
00:03.0 0604: 1106:c238
00:03.1 0604: 1106:d238
00:03.2 0604: 1106:e238
00:03.3 0604: 1106:f238
00:0f.0 0101: 1106:0591 (rev 80)
00:0f.1 0101: 1106:0571 (rev 07)
00:10.0 0c03: 1106:3038 (rev a0)
00:10.1 0c03: 1106:3038 (rev a0)
00:10.2 0c03: 1106:3038 (rev a0)
00:10.3 0c03: 1106:3038 (rev a0)
00:10.4 0c03: 1106:3104 (rev 86)
00:11.0 0601: 1106:3337
00:11.7 0600: 1106:287e
00:13.0 0604: 1106:337b
00:13.1 0604: 1106:337a
00:18.0 0600: 1022:1100
00:18.1 0600: 1022:1101
00:18.2 0600: 1022:1102
00:18.3 0600: 1022:1103
02:00.0 0300: 10de:0141 (rev a2)
04:00.0 0200: 1969:1048 (rev b0)
06:00.0 0106: 11ab:6121 (rev b0)
08:01.0 0403: 1106:3288 (rev 10)
[root@hawk ~]# lspci | grep 00:0f.0
00:0f.0 IDE interface: VIA Technologies, Inc. VT8237A SATA 2-Port Controller (rev 80)
The correct VT8237A PCI IDs were included in the 2.6.18
kernel, so Linux should boot from this device without problems from 2.6.18
onward. However, if you're trying to install an earlier kernel on a system that
contains a VT8237A, you have two methods available: (a) use a driver disk,
or (b) feed the installer a modified sata_via driver. Either way, you end up
with a sata_via module containing the correct VT8237A PCI IDs loaded into
the kernel.
The procedures below are for installing Fedora Core 5 on a system
that contains a VT8237A SATA controller. Note this is not for RAID devices.
There are two ways to go about it. You can either create a driver disk and
feed it to the installer, or you can manually insert
the drivers into the installer kernel. The driver disk method is probably
easier, but both methods are presented here for reference.
Method 1: Creating and using a Fedora Core 5 driver disk
Prerequisites
- The target system must have a floppy disk drive.
- The target OS must be Fedora Core 5 x86_64.
- The hard disk on the target system must be a non-RAID SATA
drive. This procedure won't work for IDE/PATA drives, nor was it written
for SATA RAID drives. I have a single SATA drive installed in my M2V
system.
- You must be willing to rebuild the sata_via module each time you
update your kernel, so long as you use a pre-2.6.18 kernel. This means you'll
also need to download kernel
source with each kernel update and rebuild/reinstall the module and
rebuild initrd BEFORE you reboot following a kernel update.
Procedure
The remaining steps are executed on the target (Asus M2V) system.
- Insert the FC5.x86_64 install disk. (DVD is easiest.)
- Reboot.
- At the boot prompt, type
linux dd
- Press enter.
- Insert the driver disk.
- Follow the instructions when the installer asks you to choose
a driver. Scroll down until you find "VIA SATA driver" and select it.
- Complete the installation as you normally would.
Method 2: Inserting modified modules into the installer kernel
Prequisites
- The target system must have a floppy disk drive.
- The target OS must be Fedora Core 5 x86_64.
- The hard disk on the target system must be a non-RAID SATA
drive. This procedure won't work for IDE/PATA drives, nor was it written
for SATA RAID drives. I have a single SATA drive installed in my M2V
system.
- You must be willing to rebuild the sata_via module each time you
update your kernel, so long as you use a pre-2.6.18 kernel. This means you'll
also need to download kernel
source with each kernel update and rebuild/reinstall the module and
rebuild initrd BEFORE you reboot following a kernel update.
Procedure
- Get libata.ko and
sata_via.ko.
- Format a floppy disk. This command will work.
mkdosfs /dev/fd0
- Copy libata.ko and sata_via.ko to the formatted floppy disk.
mount /dev/fd0 /mnt
cp libata.ko /mnt
cp sata_via.ko /mnt
umount /dev/fd0
The remaining steps are executed on the target (Asus M2V) system.
- Insert the FC5.x86_64 install disk. (DVD is easiest.)
- Reboot.
- At the boot prompt, press Enter.
- Select the language and such when prompted.
- Eventually, since the installer can't detect your hard drive, you'll
be asked to choose the drivers manually. DON'T PRESS ANYTHING ON THIS
WINDOW! Just let it sit.
- Press ctrl-alt-F2; you'll be presented with a shell terminal.
- Insert your floppy disk containing the drivers.
- Execute the following commands:
mkdir /mnt/fd
mount /dev/fd0 /mnt/fd
modprobe /mnt/fd/libata.ko
modprobe /mnt/fd/sata_via.ko
umount /mnt/fd
- Eject the floppy disk.
- Now press ctrl-alt-F1 to return to the install screen.
- Click "No" in the "choose driver install" window.
- Proceed with normal FC5 installation. After the installation is
complete, the DVD tray will eject and you'll be asked to reboot.
DON'T REMOVE THE DVD, AND DON'T REBOOT!
- Reinsert the DVD. We need to boot from it again and copy our
drivers to the hard drive.
- Reboot.
- At the boot prompt, enter "linux rescue".
- Select the language and such when prompted.
- Eventually, since the installer can't detect your hard drive,
you'll be asked to choose the drivers manually. DON'T PRESS ANYHTING
ON THIS WINDOW! Just let it sit.
- Press ctrl-alt-F2; you'll be presented with a shell window.
- Insert your floppy disk containing the drivers.
- Execute the following commands:
mkdir /mnt/fd
mount /dev/fd0 /mnt/fd
modprobe /mnt/fd/libata.ko
modprobe /mnt/fd/sata_via.ko
umount /mnt/fd
- DON'T EJECT THE FLOPPY DISK.
- Now press ctrl-alt-F1 to return to the install screen.
- Click "No" in the "choose driver install" window.
- When prompted whether you want to chroot /mnt/sysimage, click
"Continue". You'll be presented with a shell prompt.
- Enter "chroot /mnt/sysimage". You can now alter files on your
hard drive.
- Execute these commands:
cd /lib/modules/2.6.15-1.2054_FC5/kernel/drivers/scsi
cp libata.ko libata.ko.orig
cp sata_via.ko sata_via.ko.orig
mount /dev/fd0 /mnt
cp /mnt/libata.ko .
cp /mnt/sata_via.ko .
umount /mnt
cd /etc
vi modprobe.conf
- Add this line to modprobe.conf:
alias scsi_hostadapter sata_via
- Save and exit vi.
- Execute these commands
cd /boot
mv initrd-2.6.15-1.2054_FC5.img initrd-2.6.15-1.2054_FC5.img.orig
mkinitrd --preload=libata initrd-2.6.15-1.2054_FC5.img 2.6.15-1.2054_FC5
- Eject the DVD.
- Eject the floppy disk.
- Enter the following commands:
exit
exit
The system should now reboot to FC5 on your SATA drive.
For any comments or suggestions, please direct them to me:
jcliburn[AT]gmail[DOT]com