18.11.2014 Views

One - The Linux Kernel Archives

One - The Linux Kernel Archives

One - The Linux Kernel Archives

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Linux</strong> Symposium 2004 • Volume <strong>One</strong> • 189<br />

what kernels, and in what state, they have<br />

on their system.<br />

• Keep module source as it would be found<br />

in the “top of the tree” on kernel.org. Apply<br />

patches to backport the modules to<br />

earlier kernels as necessary.<br />

• Use the kernel-provided build mechanism.<br />

This reduces the Makefile magic<br />

that driver developers need to know, thus<br />

the likelihood of getting it wrong.<br />

• Keep additional DKMS knowledge a<br />

driver developer must have to a minimum.<br />

Only a small per-driver dkms.conf file is<br />

needed.<br />

• Allow multiple versions of any one module<br />

to be present on the system, with only<br />

one active at any given time.<br />

• Allow DKMS-aware drivers to be<br />

packaged in the <strong>Linux</strong> Standard Baseconformant<br />

RPM format.<br />

• Ease of use by multiple audiences: driver<br />

developers, system administrators, <strong>Linux</strong><br />

distros, and system vendors.<br />

We discuss DKMS as it applies to each of these<br />

four audiences.<br />

3 Distributions<br />

All present <strong>Linux</strong> distributions distribute device<br />

drivers bundled into essentially one large<br />

kernel package, for reasons outlined in Section<br />

1. It makes the most sense, most of the<br />

time.<br />

However, there are cases where it does not<br />

make sense.<br />

• Severity 1 bugs are discovered in a single<br />

device driver between larger scheduled<br />

updates. Ideally you’d like your affected<br />

users to be able to get the single<br />

module update without having to release<br />

and Q/A a whole new kernel. Only customers<br />

who are affected by the particular<br />

bug need to update “off-cycle.”<br />

• Solutions vendors, for change control reasons,<br />

often certify their solution on a particular<br />

distribution, scheduled update release,<br />

and sometimes specific kernel version.<br />

<strong>The</strong> latter, combined with releasing<br />

device driver bug fixes as whole new kernels,<br />

puts the customer in the untenable<br />

position of either updating to the new kernel<br />

(and losing the certification of the solution<br />

vendor), or forgoing the bug fix and<br />

possibly putting their data at risk.<br />

• Some device drivers are not (yet) included<br />

in kernel.org nor a distro kernel, however<br />

one may be required for a functional software<br />

solution. <strong>The</strong> current support models<br />

require that the add-on driver “taint”<br />

the kernel or in some way flag to the support<br />

organization that the user is running<br />

an unsupported kernel module. Tainting,<br />

while valid, only has three dimensions<br />

to it at present: Proprietary—non-GPL<br />

licensed; Forced—loaded via insmod<br />

-f; and Unsafe SMP—for some CPUs<br />

which are not designed to be SMPcapable.<br />

A GPL-licensed device driver<br />

which is not yet in kernel.org or provided<br />

by the distribution may trigger none of<br />

these taints, yet the support organization<br />

needs to be aware of this module’s presence.<br />

To avoid this, we expect to see<br />

the distros begin to cryptographically sign<br />

kernel modules that they produce, and<br />

taint on load of an unsigned module. This<br />

would help reduce the support organization’s<br />

work for calls about “unsupported”

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!