techman999の日記

とある大学の教員の日々の備忘録

Raspberry Pi 4でカーネルモジュールコンパイル

Raspberry Pi 4上でLinuxカーネルモジュールをコンパイルするのにいろいろ調べたので備忘録としてここに記す。

 

sudo apt update

sudo apt upgrade // これはいらんかも

sudo apt install bc bison flex libssl-dev libncurses5-dev

wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source

sudo mv rpi-source /usr/bin

sudo chmod a+x /usr/bin/rpi-source

sudo /usr/bin/rpi-source -q --tag-update

sudo rpi-source --skip-gcc -d /home/pi

sudo rpi-source --skip-gcc -d /usr/src // このほうがよいっぽい

ここまで実行するとlinux-ハッシュ値.tar.gzがホームディレクトリ上にダウンロードされ,展開された状態になる。ついでに,シンボリックリンク /home/pi/linux もできていた。

sudo linux-ハッシュ値 /usr/src/

cd /usr/src/linux-ハッシュ値/

sudo -s

modprobe configs

mv .config .config.bak // 念のため

zcat /proc/config.gz > .config

make -j4 modules_prepare

 

コンパイル完了後,カーネルソースのルートへのシンボリックリンクを/lib/modules/`uname -r`/以下にbuildとして作成する。

sudo ln -s /usr/src/linux-ハッシュ値 /lib/modules/`uname -r`/build

--> rpi-source --skip-gcc -d /usr/src でやれば,/usr/src/linux へのシンボリックリンクが/lib/modules/`uname -r`/buildと/lib/modules/`uname -r`/sourceとして作られる。取り消ししているように,rpi-source --skip-gcc -d /home/pi とすると,/home/pi/linuxへのシンボリックリンクが/lib/modules/`uname -r`/buildと/lib/modules/`uname -r/sourceとして作られているので,一旦削除してシンボリックリンクを作り直す必要がある。 

 

これで,Raspberry Pi上でカーネルモジュールをコンパイルする準備が完了

 

例えば,Helloと/var/log/messageに出力するモジュールを作ってコンパイルして,組み込めば動くはず。(ここはあとで書こう)

 

次は,Raspberry Pi Zero W上で同じ事をしてカーネルモジュールコンパイルできるかどうか確認する。