ラズパイOS Bookworm に大量のアップデートが来た。
それはいいのだが、アップデートしたらTVや録画系が全滅した。
ま、こういうこともあろうかと思って、
バックアップSSDはちゃんと用意してある。
シャットダウンしてSSDを乗せ換えて乗り切ってきた。
しかしこのまま放置しておくわけにもいかず、原因を探る。
ネット上にはやはりこの問題にぶち当たる人はそれなりにいて
原因はすぐにわかった。
原因は、Linuxカーネル6.4系以降でAPIが変わったことによる。
エラーログには、以下の情報が残っており、
./include/linux/export.h:29:22: error: passing argument 1 of 'class_create' from incompatible pointe>
29 | #define THIS_MODULE (&__this_module)
| ~^~~~~~~~~~~~~~~
| |
| struct module *
class_create() 関数の引数が変わってTHIS_MODULEの扱いが削除されたようだ。
対応方法は、このドライバソースの
修正前:ctx->class = class_create(THIS_MODULE, name);
修正後:ctx->class = class_create(name);
でTHIS_MODULEの引数を削除すればよい。
これで新しいカーネルにも対応できて復活した。
しかし貴重な休日は潰れた。
コメントする