#### "Linux Gazette...making Linux just a little more fun!"

# Building an IDE CD-ROM Server

by Ron Jachim and Howard Cokl

of the

Barbara Ann Karmanos Cancer Institute

Introduction

The advantages of having a CD-ROM jukebox should be readily apparent in a networked environment. You can provide multiple CD-ROMs to multiple people. Granted, in an ideal environment, you would want the throughput of SCSI CD-ROM drives. There are also disadvantages to SCSI drives. They are more expensive and harder to configure. A cheaper alternative is to use a bunch of IDE CD-ROM drives. Many people even have slower ones lying around because they just had to have a faster one.

What you need:

- PC Capable of running Linux
- 1 or 2 IDE Controller Cards, depending on the capabilities of the motherboard see below for additional information.
- 7 IDE CD-ROM drives
- 1 IDE Hard Disk
- Case with 7 5.25" form factor exposed drive bays and one additional drive bay for the hard disk.

I assume that you can assemble all of the parts necessary. You may have to call around and ask about an appropriate case -- order it with a power supply as they sometimes use unusual ones. JDR does not show one in their catalog, but we got ours from JDR. The most unusual component is the IDE controller which we have describe below, and it is not even that unusual.

IDE Controller Description

The only key to this server is that you can have up to four IDE channels, each capable of supporting two drives. The controller must be ATAPI compliant to support IDE CD-ROM drive. Assuming you use a single IDE hard disk for booting, that leaves up to seven connection points for additional IDE devices, in this case CD-ROM drives. An appropriate controller is the Enhanced IDE controller card, part number MCT-ILBA from JDR Microdevices (www.jdr.com) which lists at $69.99.

Many motherboards are capable of supporting one or two IDE channels, so configuration instructions vary slightly. The rest of the discussion assumes you want a maximal configuration.

No Channels on the Motherboard (two IDE controller cards required)

Configure the first controller so that its first channel is the primary controller and the second channel is the secondary controller. The controller card should have a BIOS address and you will need to make sure it does not conflict with any other BIOS address ranges already in use (or on the other IDE controller card).

Configure the second controller so that its first channel is the tertiary (third) controller and the second channel is the quaternary (fourth) controller.

Note your IRQ and I/O Address range for all channels. Remember, you cannot share the IRQs, I/O address ranges, or BIOS address ranges.

1 Channel on Motherboard (two IDE controller cards required)

If the motherboard has one IDE channel, it will support two IDE drives. Configure the channel as primary. You probably have no choice in this, but if you do, choose primary.

Configure the first IDE controller card so that its first channel is the secondary controller and disable the second channel. The controller card should have a BIOS address and you will need to make sure it does not conflict with any other BIOS address ranges already in use (or on the other IDE controller card).

Configure the second IDE controller card so that its first channel is the tertiary controller and the second channel is the quaternary controller.

Note your IRQ and I/O Address range for all channels. Remember, you cannot share the IRQs, I/O address ranges, or BIOS address ranges.

2 Channels on Motherboard (one IDE controller card required)

If the motherboard has two IDE channels, it will support four IDE drives. Configure the first channel as the primary controller and the second channel as the secondary controller.

Configure the IDE controller card so that its first channel is the tertiary controller and the second channel is the quaternary controller. The controller card should have a BIOS address and you'll need to make sure it does not conflict with any other BIOS address ranges already in use (or on the other IDE controller card).

Note your IRQ and I/O Address range for all channels. Remember, you cannot share the IRQs, I/O address ranges, or BIOS address ranges.

Table of Common IDE Information

# | Channel | IRQ | I/O Address* |
0 | Primary | 14 | 1F0-1F8 |
1 | Secondary | 15 | 170-178 |
2 | Tertiary | 11 | 1E8-1EF |
3 | Quaternary | 10 | 168-16F |

* Note: the documentation with our card was incorrect.

Software Installation

Once you have configured the hardware and noted all settings, you are nearly done.

Start the Slackware installation with the bootdisk. A normal Linux installation has two IDE channels configured, so you only need to configure in the other two channels. At the "boot:" prompt specify the additional IDE channels using kernel "command line" options. For example,

boot: ide2=0x1e8,0x1ef,11 ide3=0x168,0x16f,10

As you can see, the third IDE channel (ide2) uses I/O addresses in the range 1E8-1EF and IRQ 11. The fourth IDE channel (ide3) uses I/O addresses in the range 168-16F and IRQ 10.

After completion of the Slackware install it is simply a matter of either exporting the drives for NFS mounting or configuring Samba and sharing the drives.

Next Step

The next thing we would like to do is configure the CD-ROM server with 8 CD-ROM drives and no hard disk. We feel it is a technically elegant solution to have the boot disk be a custom-burned CD-ROM and use BOOTP or DHCP to handle the network configuration. A possible alternative is to use a solid state drive for boot purposes.

##### Copyright © 1998, Ron Jachim and Howard Cokl
Published in Issue 34 of Linux Gazette, November 1998