Doug's Linux Notebook

Linux and ATA100 ( or DMA100 )

#This article is out dated, all the newer distro's will set this up automatically.#

I built a new computer for myself, the following is an account of the fun I had installing Linux on that new box. First a description of the hardware:

  • 800 MHz AMD Athlon

  • 128 MB sdram (PC 133)

  • 20 GB Maxtor 7200rpm ATA 100 hard drive

  • Voodoo 3 3000 AGP

  • Creative PCI 128 Sound Blaster

  • Diamond Supra Express modem

  • Abit KT7 Raid motherboard

  • Dual boot Windows 98 SE & RedHat Linux 6.2

Windows was installed first getting half of the drive, a 5 gig primary partition and a 5 gig logical drive in the extended partition. This left 10 GB in the extended partition for Linux. After playing with Windows for a little over a week getting things set up the way I like it, I decided it was time to install Linux.

I popped in my RedHat 6.2 CD and rebooted, the install program started and quickly progressed to the drive partitioning portion where I was informed that Linux could not find a drive to install on. The install program was not seeing the hard drive installed on the ATA 100 RAID controller. This motherboard has the usual primary and secondary ide connectors plus two more connectors for primary and secondary on the ATA100 RAID controller. These extra ide ports are what need to be used to take advantage of the high speed of the ATA100 hard drive, (by the way I am not using any RAID functions, only the high speed).

I did an Internet search and found the info on how to tell the install program there are more IDE ports than the standard ide0 and ide1. The first thing to do is find what I/O address the ATA100 IDE controller is using. To do that I rebooted with the installation CD, (RedHat 6.2) and entered the graphical install mode, at the first input screen hit Ctrl-Alt-F3 to get a bash shell prompt.

Then entered, "cat /proc/pci | less", and look for something like,

Bus 0, device 19, function 0:
Unknown mass storage controller: Triones Technologies, Inc. HPT366 IDE UltraDMA/66 (rev 3).
Medium devsel. IRQ 11. Master Capable. Latency=64. Min Gnt=8.Max Lat=8.
I/O at 0xb000 [0xb001].
I/O at 0xb400 [0xb401].
I/O at 0xb800 [0xb801].
I/O at 0xbc00 [0xbc01].
I/O at 0xc000 [0xc001].

The first four I/O lines are what are needed to tell the kernel where to look for the hard drive. The address of the first IDE port is the I/O address, 0Xb000 and the second I/O 0xb400+2 or 0xb402. So the command to pass to the kernel is ide2=0xb000,0xb402. Do the same for ide3 using the third I/O and fourth I/O +2. The numbers for your system may be different than these.

Now reboot with the CD again and at the boot prompt for installation mode enter,

Boot: text ide2=0xb000,0xb402 ide3=0xb800,0xbc02

Note: On my system I didn't bother with the ide3 part of the above command because I don't have a drive connected there.

Now the kernel can find the hard drive and the installation proceeds normally. These addresses will need to be passed to the kernel at each boot up by either entering them at the lilo prompt or adding append="ide2=0xb000,0xb402 ide3=0xb800,0xbc02" to lilo.config, remember to always run /sbin/lilo after editing lilo.config. Another option is to recompile the kernel with support for the ATA100 controller, which is necessary to take advantage of the speed benefits of ATA100.

Much of this information I got from this how to .The author of that page is using an ASUS motherboard with a Promise ATA100 controller, my motherboard is an Abit with a High Point controller but the procedure is the same. That page also covers a workaround for a problem booting the AMD Athlon or Duron CPU, check it out if you are setting up one of these.

Note: These steps probably wont be needed with the newer Linux distro releases because these things will be taken care of automatically.

Back to the Main Page