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

ビルドしたカーネルを dpkg -i でエラーになる

kernel 関数の man をインストールする

ソースツリーで、

make installmandocs