Tmpfsでカーネルを構築してから、再起動しました。
サードパーティモジュールをコンパイルするとメッセージが表示されます。
NO SIGN [M] XXXX.ko
どうすれば署名できますか? rpmbuild
の間に生成されたキーペアはすでに失われていると思います
これは驚くほどドキュメントに欠けていました。 RHEL6カーネルドキュメントの一部であるこのファイル module-signing.txt を見つけました。このドキュメントでは、カーネルビルドの一部としてすべてのモジュールに署名することを前提として、署名キーを生成する方法を示します。
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の記事「 Signed Kernel Modules 」には、これを行う方法の詳細と手順がいくつかありますが、ユーザースペースツールが見つかりませんでした。extract_pkey
およびmod
が参照します。
あなたは周りを覗き見したいと思うかもしれません Greg Kroahのサイト 、彼のプレゼンテーションの1つで何か役に立つものを見つけるかもしれません。
カーネルソースディレクトリに移動し、(例)を実行します。
./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"