Practical Technology

for practical people.

Coming soon: automatic Linux driver upgrades

September 22nd, 2007 · No Comments

Linux users want two things for their hardware: drivers; and easy access to those drivers. The first is finally happening; and now, thanks to a Dell Linux project called DKMS (Dynamic Kernel Module Support), the other is on its way.

Dell and Linux distributors have been working on DKMS for about five years now. Its purpose is to create a framework where kernel-dependent module source can reside, so that it is very easy to rebuild modules. In turn, this enables Linux distributors and driver developers to create driver drops without having to wait for new kernel releases. For users, all this makes it easier to get up-to-the-minute drivers without hand compiling device drivers.

According to Dell, this separate framework for delivering drivers will remove kernel releases as a blocking mechanism for distributing code. The net effect, Dell hopes, is to speed up driver development by enabling quicker testing cycles. This also means that better tested code can be pushed back into the kernel at a more rapid pace. It’s also nice for developers and maintainers, as DKMS only requires a source tarball in conjunction with a small configuration file in order to function correctly.

What makes this project more interesting for all Linux users is that another project related to the DKMS project, mkrpm (make RPM), now adds automatic lines with modalias information. Modalias, for those of you who aren’t Linux device driver developers, is a data structure that’s used to hold the information that a device presents to the kernel.

Why is this important? Because, as Matt Domsch, Dell’s Linux technology strategist, explains, “This will eventually be used to automatically download drivers that match the hardware you have in your system but which aren’t presently in your $distro’s kernel.”

This isn’t pie in the sky technology. Dell already uses it. “Dell uses DKMS to distribute updated device drivers for RHEL (Red Hat Enterprise Linux), SLES (SUSE Linux Enterprise Server), and Ubuntu built against those products’ gold kernels. “This lets us fix and replace individual device drivers to support new hardware without having to respin the whole CD like we wound up doing for Ubuntu,” said Domsch.

DKMS also has other advantages. While it currently works with Red Hat, SUSE, and Ubuntu, DKMS was always designed (PDF link) to be both Linux distribution and hardware architecture agnostic. It was also built to be used by a variety of software distribution tools such as RHN (Red Hat Network), Kickstart and PXE (Pre-Execution Environment), and YUM (Yellow Dog Updater).

The current source code can be downloaded from the DKMS file site. Alternatively, it’s also available at this time on several distribution repositories, including Ubuntu Universe for Gutsy, Fedora Rawhide, and Fedora 7 testing.

Basic information on the project is in a paper from the Proceedings of the Linux Symposium, Dynamic Kernel Module Support: From Theory to Practice (PDF Link) by Matt Domsch and Gary Lerhaupt. If you’re interesting in working on the project, you can join the dkms-devel mailing list.

Tags: Canonical · Development · Linux · Open Source · Operating System