2020年7月24日金曜日

ドライバをコンパイルできる環境

ドライバの作り方を見てみると、凝ったことでなければ敷居は低い様なので試してみることに。

最初に躓いたのは、Makefileの名前をmakefileとしたことによってmakeが通らなかったり、ヘッダファイルのバージョンが実行環境と不一致で強引にコンパイルしてinsmodしたときにエラーで失敗したり。

pi@rasp3b:~ $ make
make -C /lib/modules/5.4.35-v7+/build M=/home/pi modules
make[1]: *** /lib/modules/5.4.35-v7+/build: No such file or directory.  Stop.
makefile:4: recipe for target 'all' failed
make: *** [all] Error 2

pi@rasp3b:~ $ du -chs /usr/src/linux-headers-*
85M    /usr/src/linux-headers-4.19.66+
85M    /usr/src/linux-headers-4.19.66-v7+
170M    total
pi@rasp3b:~ $ uname -a
Linux rasp3b 5.4.35-v7+ #1314 SMP Fri May 1 17:41:46 BST 2020 armv7l GNU/Linux

色々と検索してもどうもうまく行かず、手動でソースをソースを展開するしかなさそうな感じに陥ってしまいました。

少し思案した結果、先日手持ちのraspberry pi 4bがaptで更新したとき、自動的にstretchからbusterに切り替わったので、いま触っているstretchのままのraspberry 3bをbusterにアップしてからもう少し考えてみることにしようかと。

https://tomikyblog.com/raspberry-pi-os-stretch-to-buster/

raspberry 4bの時はあまり気になりませんでしたが、今回はたっぷりな時間かかりました。
ダウンロードが完了してから6時間ぐらいかかってました…。設定ファイルなどの更新方法の確認が4回ぐらいはあったかな?
更新が終わった後、早速バージョンを確認します。
pi@rasp3b:~ $ uname -r
5.4.35-v7+
pi@rasp3b:~ $ du -chs /usr/src/linux-headers-*
89M     /usr/src/linux-headers-5.4.51+
89M     /usr/src/linux-headers-5.4.51-v7+
90M     /usr/src/linux-headers-5.4.51-v7l+
267M    total
嫌な予感がしますが、再起動してもう一度確認してみました。
pi@rasp3b:~/gpioread $ uname -r
5.4.51-v7+
pi@rasp3b:~/gpioread $ du -chs /usr/src/linux-headers-*
89M     /usr/src/linux-headers-5.4.51+
89M     /usr/src/linux-headers-5.4.51-v7+
90M     /usr/src/linux-headers-5.4.51-v7l+
267M    total
落ち着いたみたいです…
ためしにmakeを実行してみると普通にコンパイルが完了しました。これでようやく環境が整いました。

Hostnamerasp3b
VersionDistributor ID: Raspbian Description: Raspbian GNU/Linux 9.11 (stretch) Release: 9.11 Codename: stretch
FarmwareLinux rasp3b 5.4.35-v7+ #1314 SMP Fri May 1 17:41:46 BST 2020 armv7l GNU/Linux

Hostnamerasp3b
VersionDistributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster
FarmwareLinux rasp3b 5.4.51-v7+ #1327 SMP Thu Jul 23 10:58:46 BST 2020 armv7l GNU/Linux


0 件のコメント:

コメントを投稿