HPT linux booting hints

Although I learned that the hpt udma66 IDE controller was "supported" under linux now.... I've had a great deal of difficulty actually BOOTING from it. I have an ABit BP6 Dual Celeron motherboard, which has an intel BX chipset, with two geenooine intel IDE controllers. But they're limited to UDMA33, so Abit generously decided to throw on an EXTRA SET of UDMA66 capable IDE buses, courtesy of a separate hpt366 controller chip.

Great! 4 independant IDE chains!

Trouble is, LILO only wants to boot off your primary IDE chain. And most of the existing pre-built kernels dont recognize the hpt IDE controller either.

I found a Helpful HPT366 mini-HOWTO page, which gave me hints to get the linux kernel to at least USE the extra IDE chain. It claimed you could boot from it, but no matter what I tried with LILO (lilo-21-6), it got stuck at the "LI" part.

So finally I resorted to the following steps:

  1. Unplug all my other IDE drives (you can leave the cdrom in)
  2. Run fdisk /mbr to restore the boot record for the disk.
    Unfortunately, fdisk does not take an argument on WHICH DISK to do this for. This is why I had to unplug my other drives!
  3. Run fdisk and give myself a small FAT16 Primary DOS partition on the drive on the hpt bus (as hde1)
  4. Run msdos format on it (Why isn't there an easy way to do this in linux?)
  5. Run fdisk to set the new msdos partition as active
  6. Copy /vmlinuz to the hde1 as file "linux", and copy "loadline.exe" there also.
  7. Set up autoexec.bat to do
    loadlin linux ide2=0xd000,0xd402 root=/dev/hde3
and FINALLY... I could set my BIOS to boot from that disk directly!

WARNING: the "0xd000,0xd402" is specific to **my** machine. You'll have to look through /proc/pci for

  Vendor id=1103, Device id=4
  I/O at 0xXXXX [0xXXXX+1]
  I/O at 0xYYYY [0xYYY+1]
Then XXXX becomes the first value, and YYYY+2 becomes the second value.


[email protected]
Bolthole Top