Подписать модуль после компиляции ядра

Подписать модуль после компиляции ядра

Я собрал ядро ​​в tmpfs, затем перезагрузился.

Теперь при компиляции стороннего модуля я вижу сообщение:

NO SIGN [M] XXXX.ko

Как мне его подписать? Пара ключей, сгенерированная во время, rpmbuildуже утеряна, я полагаю

решение1

Это было удивительно не документировано. Я нашел этот файл,модуль-подписание.txt, который является частью RHEL6 Kernel Documentation. В этом документе показано, как генерировать ключи подписи, предполагая, что вы хотите подписать все свои модули как часть сборки ядра:

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 и прочитав его CONFIG_MODULE_SIGзначения в конфигурации:

CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"

Связанный контент