カーネルビルドをしないでドライバ開発環境を構築する方法です。
事前準備
bcをインストールしておく必要があります。
sudo apt-get install bc
rpi-sourceの取得と実行
linuxのソースコードを取得します。rpi-sourceを使用するとカーネルモジュールのビルド環境の構築が楽です。
git clone git://github.com/notro/rpi-source
cd rpi-source
chmod +x rpi-source
./rpi-source
しばらくまてば完了です。
/home/piにこの様なファイルができました。
linux-2d31cd571e6f2ac61a3eda273d973058e1bb1f58.tar.gz
linux -> /home/pi/linux-2d31cd571e6f2ac61a3eda273d973058e1bb1f58
linux-2d31cd571e6f2ac61a3eda273d973058e1bb1f58
/lib/modulesにもリンクが作成されています。
pi@raspberrypi ~ $ uname -r
4.4.21-v7+
pi@raspberrypi ~ $ ls -l /lib/modules/4.4.21-v7+/
合計 1728
lrwxrwxrwx 1 root root 14 10月 10 12:06 build -> /home/pi/linux
drwxr-xr-x 11 root root 4096 1月 1 1970 kernel
-rw-r--r-- 1 root root 449612 9月 22 17:08 modules.alias
-rw-r--r-- 1 root root 467274 9月 22 17:08 modules.alias.bin
-rw-r--r-- 1 root root 4574 9月 22 17:08 modules.builtin
-rw-r--r-- 1 root root 6025 9月 22 17:08 modules.builtin.bin
-rw-r--r-- 1 root root 143060 9月 22 17:08 modules.dep
-rw-r--r-- 1 root root 209277 9月 22 17:08 modules.dep.bin
-rw-r--r-- 1 root root 302 9月 22 17:08 modules.devname
-rw-r--r-- 1 root root 58463 9月 22 17:08 modules.order
-rw-r--r-- 1 root root 55 9月 22 17:08 modules.softdep
-rw-r--r-- 1 root root 177294 9月 22 17:08 modules.symbols
-rw-r--r-- 1 root root 220585 9月 22 17:08 modules.symbols.bin
lrwxrwxrwx 1 root root 14 10月 10 12:06 source -> /home/pi/linux
作成したカーネルモジュールをinsmodしても、エラーは起きませんでした。
おまけ
自分はカーネルモジュールからSPIやI2Cを使って無線のドライバ開発をしています。