ubuntu Jaunty のカーネルのビルドおよびデバイスドライバ作成
(未整理)
2.6 系のドライバは作ったことがなかったので、Hello World 的なところで悩んだメモ
linux/module.h がない
ドライバサンプルでありがちな gcc -DMODULE -D__KERNEL__ test.c をやろうとしたが、
- /usr/lib/include/linux/module.h がない
- apt-get install linux-headers-2.6.28-11-generic で /usr/src/linux-headers-2.6.28-11-generic を取得すると module.h が含まれている
- シンボリックリンクやら -I やらでビルドしようとして失敗
という状況だったが、2.6 系では ko オブジェクトを作るための専用の Makefile を使う。普通にビルドできた。
obj-m += test.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) V=1 modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean