tmpfs でカーネルを構築し、再起動しました。
サードパーティのモジュールをコンパイルすると、次のようなメッセージが表示されます。
NO SIGN [M] XXXX.ko
どうすれば署名してもらえますか?生成されたキーペアはrpmbuild
すでに失われていると思います
答え1
これには驚くほどドキュメントが不足していました。私はこのファイルを見つけました。モジュール署名.txtこれは RHEL6 カーネル ドキュメントの一部です。このドキュメントでは、カーネル ビルドの一部としてすべてのモジュールに署名することを前提として、署名キーを生成する方法が示されています。
cat >genkey <<EOF
%pubring kernel.pub
%secring kernel.sec
Key-Type: DSA
Key-Length: 512
Name-Real: A. N. Other
Name-Comment: Kernel Module GPG key
%commit
EOF
make scripts/bin2c
gpg --homedir . --batch --gen-key genkey
gpg --homedir . --export --keyring kernel.pub keyname |
scripts/bin2c ksign_def_public_key __initdata >crypto/signature/key.h
また、Linux Journal の次の記事もご覧ください:署名されたカーネルモジュールこれを実行する方法については、いくつかの優れた詳細と手順が記載されていますが、ユーザー スペース ツールextract_pkey
とmod
それが参照するものが見つかりませんでした。
ちょっと覗いてみるのもいいかもしれないグレッグ・クロアのサイト、彼のプレゼンテーションの 1 つに何か役に立つものが見つかるかもしれません。
参考文献
答え2
カーネル ソース ディレクトリに移動して、次の操作を実行します (例):
./scripts/sign-file sha512 ./signing_key.priv ./signing_key.x509 /lib/modules/3.10.1/kernel/drivers/char/my_module.ko
.config を開いて構成値を読み取ることで、カーネルが使用しているダイジェスト アルゴリズムを確認しますCONFIG_MODULE_SIG
。
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"