Вы не сказали, для чего нужен ключ, но в Ubuntu я периодически делаю это, чтобы подписывать драйверы вручную. Мой драйвер BroadCom WiFi является сторонним и неподписанным, и я использую следующий скрипт каждый раз, когда устанавливается новое ядро: -
#!/bin/bash if [ "$(whoami)" != "root" ] then echo "wlsign: must be called from 'root'" elif [ -z "$1" -o "$1" == "-c" ] then [ "$1" == "-c" ] && \ openssl req -new -x509 -newkey rsa:2048 -keyout wl.priv -outform DER -out wl.der -nodes -days 36500 -subj "/CN=BroadCom/" /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./wl.priv ./wl.der $(modinfo -n wl) [ "$1" == "-c" ] && mokutil --import wl.der [ "$1" == "-c" ] && echo Now reboot and select MOK install || modprobe wl else [ "$1" != "-h" ] && echo "wlsign: invalid options - $@" echo 'wlsign [-c|-h] : signs proprietary Wireless kernel drivers' echo ' -c : create new keys (default: use existing)' echo ' -h : give this help information' fi
-c
Опция мне понадобилась только один раз, чтобы изначально создать файлы ключей. После использования -c
система должна быть перезагружена и новый ключ принят в прошивку UEFI.
У меня есть похожие сценарии для других неподписанных драйверов, особенно драйверов VMware, которые скомпилированы на лету, поэтому никогда не могут быть подписаны.
Поскольку Kali и Ubuntu являются производными Debian, я надеюсь, что структуры системных каталогов схожи. Обратите внимание, что sign-file
программа установлена в заголовках ядра, поэтому linux-headers-*
ее необходимо будет установить для вашего ядра. Есть kmodsign
программа /usr/bin/
, которая может быть альтернативой, но я не пробовал.
Я не могу вспомнить, где я нашел эту информацию, поэтому я не могу подтвердить ее источник.