скорее всего у вас в ядре включена опция подписывания модулей. Модули VirtualBox не подписываются автоматически, и каждый раз, когда я собираю новое ядро, я перестраиваю модули и подписываю их.
В этом случае введите в терминал следующее (если вы встроили конфигурацию ядра в proc):
zcat /proc/config.gz | grep CONFIG_MODULE_SIG
Если вы не встроили конфигурацию ядра, найдите свою конфигурацию ядра — она может быть в /usr/src/linux/.config
или /etc/kernels/kernel-config-
Например, вы должны увидеть следующий или похожий вывод (YMMV ):
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_FORCE=y
CONFIG_MODULE_SIG_ALL=y
# CONFIG_MODULE_SIG_SHA1 is not set
# CONFIG_MODULE_SIG_SHA224 is not set
# CONFIG_MODULE_SIG_SHA256 is not set
# CONFIG_MODULE_SIG_SHA384 is not set
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"
CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
В зависимости от того, какая хэш-функция выбрана, вы должны использовать одну и ту же хеш-функцию для подписи ваших модулей.
Существует утилита под названием sign-file
.
В более ранних версиях этот sign-файл
находился в /usr/src/linux/
, как и в 4.5
ядер теперь находится в /usr/src/linux/scripts/
(снова YMMV).
Включение подписанных модулей и фактическая загрузка системы с подписанными модулями должны
обычно означать, что у вас уже есть сгенерированный ключ и файл x509 (вы можете сгенерировать ключ подписи самостоятельно).
Выполнение следующей команды:
/usr/src/linux/scripts/sign-file sha512 /usr/src/linux/certs/signing_key.pem /usr/src/linux/certs/signing_key.x509 /lib /modules/
должен эффективно подписывать ваши модули и должен быть готов для modprobe
.
Найдите файл x509 и ваш ключ подписи и замените пути в приведенной выше команде.
vboxdrv
, vboxnetflt
, vboxnetadp
и vboxpci
.