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!

Falko Timme

About Falko Timme

Falko Timme is an experienced Linux administrator and founder of Timme Hosting, a leading nginx business hosting company in Germany. He is one of the most active authors on HowtoForge since 2005 and one of the core developers of ISPConfig since 2000. He has also contributed to the O'Reilly book "Linux System Administration".

Share this page:

Suggested articles

0 Comment(s)

Add comment