Kernel dari mana Anda membangun modul kernel Anda dan modul yang Anda sisipkan harus dari versi yang sama. Jika Anda tidak ingin mengurus hal ini, Anda dapat menggunakan Makefile berikut.
obj−m += hello−world.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
Sekarang Anda dapat membangun dan mencoba memasukkan modul.
Saya menyarankan Anda untuk menjadi root jika memungkinkan sebelum baris ini
$sudo cp /boot/config-2.6.38-8-generic ./.config
$su
#cp /boot/config-2.6.38-8-generic ./.config
#insmod hello_world.ko
Alternatifnya, Anda juga dapat menggunakan file make berikut
TARGET := hello-world
WARN := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
INCLUDE := -isystem /lib/modules/`uname -r`/build/include
CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE}
CC := gcc-3.0
${TARGET}.o: ${TARGET}.c
.PHONY: clean
clean:
rm -rf ${TARGET}.o
Pipa, dup2 dan exec()
ID utas yang dikembalikan oleh pthread_self() tidak sama dengan ID utas kernel yang dikembalikan oleh panggilan ke gettid(2)