我在 tmpfs 中建立了一個內核,然後重新啟動。
現在,當我編譯第 3 方模組時,我看到一條訊息,
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
引用。
你可能想四處看看格雷格·克羅的網站,您可能會在他的演講中發現一些有用的東西。
參考
答案2
轉到內核來源目錄並執行以下操作(範例):
./scripts/sign-file sha512 ./signing_key.priv ./signing_key.x509 /lib/modules/3.10.1/kernel/drivers/char/my_module.ko
CONFIG_MODULE_SIG
透過開啟 .config 並在配置值中讀取它來檢查核心正在使用的摘要演算法是什麼:
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"