Building Kernel Modules With Module-Assistant On Debian Lenny
Version 1.0
Author: Falko Timme
Follow me on Twitter
module-assistant is a tool for building Debian kernel modules from source, without having to rebuild the whole kernel. It fetches module-source packages that have been prepared for the Debian distribution via apt and produces .deb packages. This tutorial shows how to use module-assistant in command-line mode and in interactive mode.
I do not issue any guarantee that this will work for you!
1 Preliminary Note
In this tutorial I will demonstrate how to build the ndiswrapper kernel module for Debian Lenny. The procedure is the same for any other kernel module that module-assistant knows.
2 Using Module-Assistant In Command-Line Mode
Install module-assistant as follows:
aptitude install module-assistant
Next we must make module-assistant download the headers of the current kernel, and some tools that are needed to build packages from source (such as build-essential, etc.). This can be achieved with the following command:
m-a prepare
Now we update the list of available kernel modules by running:
m-a update
server1:~# m-a update
Updated infos about 85 packages
server1:~#
The command
m-a list
shows a list of available kernel modules in detailed form, and
m-a -t list | grep -E '^[^ ].*\(' | cut -d " " -f 1 | sort
shows the same list in short form, e.g. as follows:
server1:~# m-a -t list | grep -E '^[^ ].*\(' | cut -d " " -f 1 | sort
acx100-source
affix-source
alsa-source
arla-modules-source
at76c503a-source
bcm4400-source
bcm5700-source
cdfs-src
cipe-source
cloop-src
comedi-source
cpad-kernel-source
cryptoapi-core-source
cryptoloop-source
dazuko-source
ddrmat-source
device3dfx-source
drbd0.7-module-source
drbd8-module-source
dvb-driver-source
e100-source
eagle-usb-modules-source
em8300-source
exmap-modules-source
fglrx-kernel-src
freeswan-modules-source
ftape-source
ftpfs-src
fuse-source
fwatch-modules-src
gpib-modules-source
hostap-source
hubcot-source
i2c-source
ieee80211-source
ipw2100-source
ipw2200-source
ivtv-source
kqemu-source
linux-uvc-source
linux-wlan-ng-source
lirc-modules-source
lm-sensors-source
loop-aes-ciphers-source
loop-aes-source
lufs-source
madwifi-source
mga-vid-source
misdn-kernel-source
ndiswrapper-source
nozomi-source
nvidia-kernel-legacy-source
nvidia-kernel-source
openafs-modules-source
openswan-modules-source
ov511-source
pcmcia-source
plex86-kernel-src
ppscsi-source
qc-usb-source
qla2x00-source
realtime-lsm-source
rt2400-source
rt2500-source
rt2570-source
rtai-source
shfs-source
sl-modem-source
spca5xx-source
squashfs-source
sysprof-module-source
thinkpad-source
tidev-modules-source
translucency-source
tun-source
unicorn-source
unionfs-source
userlink-source
vaiostat-source
video4linux-nw802-source
wacom-kernel-source
xdslusb-source
xlibmesa-drm-src
zaptel-source
zd1211-source
server1:~#
Before we pick a module to build, we should make sure that our /etc/apt/sources.list includes the contrib and non-free repositories because otherwise module-assistant might not be able to install required dependencies for the kernel module that we want to build:
vi /etc/apt/sources.list
[...] deb http://ftp2.de.debian.org/debian/ lenny main contrib non-free deb-src http://ftp2.de.debian.org/debian/ lenny main contrib non-free deb http://security.debian.org/ lenny/updates main contrib non-free deb-src http://security.debian.org/ lenny/updates main contrib non-free [...] |
Run
aptitude update
if you had to modify /etc/apt/sources.list.
Now we can build the kernel module. I want to build the ndiswrapper kernel module, so I run:
m-a a-i ndiswrapper
(Please note that m-a list appends the string -source to all available modules, but we leave that string out when we build the module with m-a a-i!)
This will not only build the kernel module .deb package, but also automatically install it.
Now that the module is installed, we can load it into our kernel as follows:
modprobe ndiswrapper
To check if it really got loaded, run:
lsmod | grep ndiswrapper
The output should be similar to this one:
server1:~# lsmod | grep ndiswrapper
ndiswrapper 152348 0
usbcore 118160 1 ndiswrapper
server1:~#
To make sure that the module gets loaded automatically whenever you boot the system, you can add it to /etc/modules:
vi /etc/modules
[...] ndiswrapper |
That's it!