This is a PCI card that has two UDMA channels on it, supporting up to four drives. You can look up specs & pricing & such at http://www.promise.com.
This card shipped in early model Gateway 2000 Pentium II systems, and may or may not be in more recent models.
The more recent development kernels (current is 2.1.88) have generic PCI IDE controller support, which ought to automatically detect the Promise Ultra33. However, the stable kernels (current is 2.0.33) require a patch, and it can be a little difficult to get Linux installed because of this.
Although there is a patch for the Promise controller, it's not very easy to apply a patch and recompile your kernel if you haven't installed Linux yet! So, here's a workaround which may or may not work for you. Thanks to Gadi Oxman for the following information on getting the interface settings:
If we can access the console with the installation disk, we can also
use "cat /proc/pci" to display the Promise interface settings:
RAID bus controller: Promise Technology Unknown device (rev 1).
Vendor id=105a. Device id=4d33.
Medium devsel. IRQ 12. Master Capable. Latency=32.
I/O at 0xe000. (a)
I/O at 0xd804. (b)
I/O at 0xd400. (c)
I/O at 0xd004. (d)
I/O at 0xc800. (e)
and pass "ide2=a,b+2 ide3=c,d+2" as a command line parameter to the kernel.
Note that the numbers probably aren't the same as what you'll have.
Just as an example, the parameters to use for the above set of numbers
would be ``ide2=0xe000,0xd806 ide3=0xd400,0xd006
''. You may or may not also
need to include the IRQ, which would make it
``ide2=0xe000,0xd806,12 ide3=0xd400,0xd006,12
''.
If you're only using the first channel on the Promise controller (for instance,
if you only have one drive, or two if they're master and slave on the same
channel, on the Promise), then you won't need to specify ide3
.
Note that you can definately get to a command prompt and do
``cat/proc/pci
''
using Red Hat 5.0 or Slackware 3.4; it's almost certainly possible with
other distributions but I haven't worked with them and don't know how.
Under Red Hat 5.0, use the installation boot floppy, and at the
boot prompt type ``rescue
''. It'll load some stuff, prompt you for the supplemental
disk, ask you about your monitor and keyboard, and finally put you into
a command prompt. Then, do ``cat /proc/pci
'', write down the numbers as above,
and reboot from the boot disk. This time, type ``linux ide2=
(this is where
you put the numbers like shown above) ide3=
(more numbers)''. It should now
be able to install onto your hard disk without difficulty.
Under Slackware 3.4, the process is very similar. Boot with the
boot disk of your choice, and at the boot prompt, just hit Enter for now.
It'll load the kernel and prompt for the root disk. Insert the root disk,
wait for it to load, and log in as root. Do the ``cat /proc/pci
'' thing and
write down those numbers somewhere safe! Reboot with the boot floppy and
at the boot prompt type ``ramdisk ide2=
(this is where you put the
numbers)
ide3=
(some more numbers)''. You should then be able to install onto your
hard disk as normal.
IMPORTANT: Without the patch (discussed in the
next section), the kernel needs these boot parameters in order to
access your hard disk! Therefore it is very important that when you configure
LILO, either on the hard disk or on a boot floppy, that you give it the
exact same parameters that you gave when installing. Otherwise your
system won't boot! It should be possible to give them to LILO when you
boot (ie, press Shift, type in ``linux ide2=
.....'' each time you boot),
but only if you kept the numbers! It is recommended that you patch your
kernel as soon as possible so you won't have to worry about that anymore;
once you're booting off a patched kernel, you can get rid of the boot parameters.
Also, as far as I know there is no way to pass boot parameters to a plain
kernel boot floppy (as made with ``make zdisk
''), you must use LILO
or another loader that lets you pass boot parameters.
However, unpatched kernels often have a difficult time actually using ide2 and ide3, even if the drives are detected properly. So if you can't get Linux to install using the above technique, try specifying ide0 or ide1 instead of ide2 or ide3 (thanks to Martin Gaitan for this technique). This essentially replaces the on-board controller (if any) with the Promise Ultra33 as far as the kernel is concerned, and you can follow the directions in the next section as if you had physically moved it. Note that if you're using an IDE CD-ROM drive connected to your on-board controller to install from, you'll want to make sure that you don't take over the controller that the CD is on or you won't be able to install! If the CD is hda or hdb, use ide1 for your hard drive, and if it's hdc or hdd, then use ide0.
If you can't get the software workaround to work, you'll have to try a more brute force approach. Here's an alternative method mthat is virtually guaranteed to work, but will require you to open up your computer and mess about in it. NOTE: If you are not familiar with the process of connecting and disconnecting IDE drives, read the manuals that came with your computer, your hard drive, and/or the Promise Ultra33 before attempting this! If you screw something up and don't know how to put it back, you could end up being sorry!
That being said, it's all really quite simple. Most motherboards these days have built-in EIDE controllers. Disconnect your hard drive from the Ultra33 and connect it to the onboard controller. If you have other IDE devices, such as a CD-ROM, tape, or ZIP drive, on your oboard controller, it's easiest if you either add the hard drive on an unused channel (the secondary instead of the primary) or temporarily displace a device that you don't need immediately (such as ZIP or tape). Install Linux. Download and apply the Promise UDMA patch (see next section).
Now you're ready to move the drive back onto the Promise... almost. To be safe,
make a kernel-image boot floppy (cd /usr/src/linux ; make zdisk
), which you
will be able to use to boot your system in case LILO doesn't work. Actually,
to be very safe, make two and put one away for now.
Okay, now it's time
to think a little... if you have just one hard drive and it's going to be on
the Promise, then it will most likely be /dev/hde
(a
and
b
are for the primary
onboard controller, c
and d
for the secondary onboard controller). If you're
going to put any other drives on it, then the slave of the Promise's first
channel will be /dev/hdf
, the master of the second will be /dev/hdg
, and the
slave of the second will be /dev/hdh
.
Edit /etc/fstab
, and change all the partitions of the hard drives you're
moving from the onboard drives (/dev/hda
, hdb
, etc) to their new locations
on the Promise (/dev/hde
, hdf
, etc). If you had to displace any devices
(such as a CD-ROM or ZIP drive) that you want to leave on the onboard
controller, then change them to their new locations as well. For instance,
if your CD-ROM was originally the master on the primary channel (/dev/hda
),
but you put your hard disk there and had to bump the CD to the slave
(/dev/hdb
) or to the secondary channel (/dev/hdc
), and now you want to put
it back, then change it to /dev/hda
.
If you're using LILO, reconfigure LILO to use the new location of the drive
(LILO configuration is beyond the scope of this document, if you don't know
how, read the
LILO mini-HOWTO),
or else it probably won't be able to boot unless you use that boot floppy I
had you make, which you will also want to configure to boot off the new
partition. This is done using the rdev
command. Put the floppy in the
drive and type ``rdev /dev/fd0 /dev/hde1
''. Of course that's assuming
your root partition is the first on your first UDMA drive. If not (mine is
/dev/hde7
, for instance), then obviously use the appropriate
partition number!
Reboot. Your system should now work fine.
There is a kernel patch available for the Promise Ultra33, written by Gadi Oxman ( gadio@netvision.net.il).
The current version of the patch works on kernel version 2.0.33 and can be obtained from Linux Mama. Note that you will need to use bzip2 to decompress this patch rather than gzip.
You can also download a version of the patch for kernel 2.0.30, compressed with gzip, from http://pobox.com/~brion/linux/promise_update.gz. This version will work on 2.0.33 but will result in ``unknown PCI device'' messages because of a change in pci.c between 2.0.30 and 2.0.33.
For instructions on how to patch and compile the kernel, make sure you have the kernel source and gcc installed and read /usr/src/linux/README.
Wondering why you should bother with the patch, aside from saving yourself the trouble of the boot parameters from the workaround? Well, according to the author:
One advantage of using the kernel patch is that we will be able to use
bus mastering DMA transfers ("hdparm -d1 /dev/hdx") in case the triton
driver is compiled into the kernel.
In other words, you'll not only be able to use your hard drive, you'll be able to use it at the high speeds that UDMA is supposed to bring!