If you’re using a fairly modern laptop with an Intel chipset, the chances are that it has an Intel ICH7 I/O controller hub:
$ lspci | grep -i ide
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE (rev 01) This usually means that your internal hard disk and CD-ROM/DVD drive (if you have one) are wired using Serial ATA (SATA), not the obsolete Parallel ATA standard. However, while the Linux SATA driver will happily take control of your hard disk, for some reason the older IDE driver will often capture the CD-ROM drive. You can tell by looking at
/dev/cdrom:
$ ls -l /dev/cdrom
lrwxrwxrwx 1 root root 4 Dec 12 13:23 /dev/cdrom -> hdc If the text after the "
->" arrow starts with “hd” as above, the IDE controller owns your CD-ROM/DVD drive.
Everything might initially look okay, because the CD-ROM/DVD drive will appear to work normally,
but performance will turn out to be awful: try to play a CD or DVD, and you’ll see your
notionally speedy laptop crawl nearly to a halt. If you’ve used Linux on previous generations of
laptops, you’ll know enough to check the output of the hdparm command, to see if the kernel has
DMA enabled on the CD-ROM/DVD drive. It will say no, whereupon you might try to force the kernel
to use DMA, and be stumped when it refuses. The reason this doesn’t work is that the ICH7 hub is
emulating an IDE device, and the Linux IDE driver doesn’t know how to configure it to use DMA.
Never fear; you don’t need to do this at all. Instead, configure your kernel to use the newer
libata driver to control the CD-ROM/DVD drive. To do this, you’ll need to modify the kernel’s
boot command line. On Fedora systems, edit /etc/grub.conf (this file will have a different
name under other Linux distros), and look for the first line that starts with bit of white
space, followed by the word “kernel”. Append the following string to it:
“combined_mode=libata”. That line of your grub config file will now look more like this (for
god’s sake, don’t make a literal copy of my kernel command line; it won’t work for you!):
kernel /vmlinuz-2.6.18-1.2849.fc6 ro root=LABEL=/ rhgb quiet combined_mode=libata Reboot your laptop, and you should find that
/dev/cdrom no longer points at something starting with “hd”:
$ ls -l /dev/cdrom
lrwxrwxrwx 1 root root 4 Dec 12 16:10 /dev/cdrom -> scd0 The "
scd0" string means that libata is now managing the CD-ROM/DVD drive. You should now get great
performance for CD and DVD playing, without it dragging down the interactive performance of your
laptop.