Я собрал ядро в 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"