カーネルモジュールのロードに失敗した話(insmod が Operation not permittedでコケる)。
結論
セキュアブート環境下*1では、カーネルモジュールに署名をつけましょう
経緯
卒論の関係でカーネルモジュールを書いていて、「さて実機で動かすぞ!」という段階でコケました。 自分が悪いコードを書いたせいかと思い、よく転がっていそうな単純なモジュールを書いても以下のようにコケる...
$ sudo insmod hello.ko insmod: ERROR: could not insert module hello.ko: Operation not permitted
解決策を調べると、insmod
でうまくいかないなら、depmod
してmodprobe
を使うといいとか書いてあって試しても、うまく行かない...
最終的には How to sign things for Secure Boot に書いてあるとおり、署名をつけたら成功しました。
(結局カーネルモジュールは動いたものの、思うような結果が得られず卒論には使えなかった...)
*1:厳密な条件は違いそう