Changes
Page history
Update Kernel Modul erstellen
authored
Jan 22, 2018
by
Christian Eckl
Show whitespace changes
Inline
Side-by-side
Kernelmodul-erstellen.md
0 → 100644
View page @
cebab893
# 2. Erstellen eines Kernel-Moduls
Um alles im Überblick zu haben erstellt man zuerst ein Verzeichnis für das Kernelmodul:
> $ mkdir /home/pi/Sevenseg
In dieses Verzeichnis erstellt man als erstes ein Makefile:
> $ nano Makefile
Man benötigt außerdem den ausfürbaren Code in C in diesem Verzecihnis:
> $ nano sevenseg.c
## 2.1 Makefile
Das Makefile wird verwendet um den ausführbaren Code zu kompilieren hierbei ist eine spezielle Formatierung vorgegeben.
```
obj-m := sevenseg.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
```
Da das Modul außserhalb des Kernel-Source-Trees verwaltet und kompieliert werden soll, wird in der ersten Zeile
durch
`obj-m := sevenseg.o`
ein Makefile im eigenen Source-Tree erstellt.
Außerdem kompiliert der Eintrag
`sevenseg.c`
in
`sevenseg.ko`
.
Der eigentliche build-command, für ein externes Modul, befindet sich in dieser Zeile:
`make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules`
.
Hier wird das Modul in das built-Verzeichnis des aktuellen Kernels (
`$(shell uname -r)`
) aus unserem Verzeichnis (
`M=$(PWD)`
) geladen.
Beim entladen des Moduls wird target
`clean:`
aufgerufen und löscht das Modul aus dem Kernel.
Bei der Formatierung ist darauf zu Achten vor den Makebefehlen einen tab einzurücken.
Das Makefile wird durch den Befehl
`make sevenseg.c`
ausgeführt und liefert folgende Systemausgabe:
```
make -C /lib/modules/4.9.62-v7+/build M=/home/pi/Sevenseg modules
make[1]: Entering directory '/root/linux-a25dcd51886b626a3b079f3c3c21f7192fadb54a'
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory '/root/linux-a25dcd51886b626a3b079f3c3c21f7192fadb54a'
```
Quellen:
[Linux Kernelmodule] (http://www.strcat.de/eigenes/module.html)
[Building External Modules] (https://www.kernel.org/doc/Documentation/kbuild/modules.txt)