カーネル モジュールのビルド元とモジュールの挿入先のカーネルは、同じバージョンである必要があります。このことを処理したくない場合は、次の Makefile を使用できます。
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
これで、モジュールをビルドして挿入できます。
可能であれば、この行の前に root になることをお勧めします
<ブロック引用>$sudo cp /boot/config-2.6.38-8-generic ./.config
$su
#cp /boot/config-2.6.38-8-generic ./.config
#insmod hello_world.ko
または、次のメイクファイルを使用することもできます
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
パイプ、dup2、および exec()
pthread_self() によって返されるスレッド ID は、gettid(2) の呼び出しによって返されるカーネル スレッド ID と同じではありません。