Half an year ago, I decided to make a backup of my copy of Conectiva Parolin, released on 1997. It's a CD-ROM, and I don't trust old optical media that much.

After doing the backup, I've tried to install it using qemu. The install system could not find the CD-ROM. I've looked for the supported drives in qemu manual, looked at the install kernel logs, and ended up at the source code.

Back in those old days, distributing source code along the system was pretty common. Nowadays, a CD-ROM is full without most of the packages one would like to distribute, but only binary ones. The size and number of packages has really increased. But so did the network bandwidth and the number of bytes per monetary unit. That is, network and storage is cheaper. There's no reason not to distribute source code but sheer lazinnes.

I've read the source code of linux IDE drivers (which happened to be version 2.0.30), in the chance of finding the error I was looking for. Then, I've found out the installer source code. One curiosity is that it was located in a directory in the ISO9660 filesystem, instead of a tarball. In that directory, there were the object files for the C source code. And what I found out was that the installer was checking if a IDE drive was a CD-ROM drive by trying to get the audio volume from it.

The installer did that through an ioctl, which the Linux driver responded to by doing a IDE command. That resulted in an error from the drive. And that's why there was a message in the kernel logs and why the installer did not find any CD-ROM drive.

I've hastily grabbed qemu's source code and found out that its IDE emulation did not recognize the volume commands. Later, I've sketched a patch and tried it. It worked.

http://git.qemu.org/qemu.git/commit/?id=fe0d61231eb6be6a83c54f4a2795f924ee963f8f