We ran into a couple of interesting problems with modules. The first one dealt with SCSI emulation with IDE drives. You need SCSI emulation if you want to write to your IDE CD-ROM with Linux tools. In the past, we have recompiled the kernel with SCSI emulation, but it is so much easier if you can use modules after the fact. If you use lilo, you need to put the line:
append="hdc=ide-scsi"
in the global section of lilo.conf to make sure that SCSI emulation loads correctly. Change hdc to the device name of the IDE CD-ROM.
Another interesting module problem we ran into was on one of our really old nasty boxes that uses a SoundBlaster Pro card with a proprietary CD-ROM. Now, the old Monkey Linux kernel we compiled worked fine. Unfortunately, we need to use the fancy new I2C stuff, and can no longer use a 2.0 kernel. Well, after a lot of shenanigans to get ZipSlack on to our 170 MB Connor drive, we could no longer see the CD-ROM. It turns out that the newer builds of the CD-ROM module (sbpcd) don’t search for 0x230, the I/O port that our card is set to. The fix is to add a line to modules.conf:
options sbpcd sbpcd=0x230,1
When kerneld tries to load the sbpcd module when needed, it will try the correct I/O port and successfully load.