Ядро виртуальной коробки не найдено (ubuntu 16.04, vbox 5.02)

Когда я пытаюсь использовать virtualbox (установленный через диспетчер пакетов), я могу получить следующую ошибку при открытии виртуальной машины:

Драйвер ядра VirtualBox Linux (vboxdrv) либо не загружен, либо есть разрешение проблема с / dev / vboxdrv. Установите пакет virtualbox-dkms и загрузите модуль ядра, выполнив «modprobe vboxdrv» как root. Если он доступен в вашем дистрибутиве, вы должны сначала установить пакет DKMS. Этот пакет отслеживает изменения ядра Linux и при необходимости перекомпилирует модуль ядра vboxdrv.

Теперь, когда я попытался запустить sudo modprobe vboxdrv, это ошибки с

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Я также заметил, что в конце установки virtualbox-dkms он появляется с:

DKMS: install completed. Setting up virtualbox (5.0.40-dfsg-0ubuntu1.16.04.2) ... vboxweb.service is a disabled or a static unit, not starting it. Job for virtualbox.service failed because the control process exited with error code. See "systemctl status virtualbox.service" and "journalctl -xe" for details. invoke-rc.d: initscript virtualbox, action "restart" failed.

Проверка состояния показывает

● virtualbox.service - LSB: VirtualBox Linux kernel module Loaded: loaded (/etc/init.d/virtualbox; bad; vendor preset: enabled) Active: failed (Result: exit-code) since di 2018-03-20 14:05:46 CET; 6min ago Docs: man:systemd-sysv-generator(8) mrt 20 14:05:45 paul-GP60-2QF systemd[1]: Starting LSB: VirtualBox Linux kernel module... mrt 20 14:05:46 paul-GP60-2QF virtualbox[15359]: * Loading VirtualBox kernel modules... mrt 20 14:05:46 paul-GP60-2QF virtualbox[15359]: * modprobe vboxdrv failed. Please use 'dmesg' to find out why mrt 20 14:05:46 paul-GP60-2QF virtualbox[15359]: ...fail! mrt 20 14:05:46 paul-GP60-2QF systemd[1]: virtualbox.service: Control process exited, code=exited status=1 mrt 20 14:05:46 paul-GP60-2QF systemd[1]: Failed to start LSB: VirtualBox Linux kernel module. mrt 20 14:05:46 paul-GP60-2QF systemd[1]: virtualbox.service: Unit entered failed state. mrt 20 14:05:46 paul-GP60-2QF systemd[1]: virtualbox.service: Failed with result 'exit-code'.

Теперь во время установки была небольшая «аномалия». - процедура установки попросила меня отключить безопасную загрузку. - Я не хочу этого, я хочу продолжать использовать безопасную загрузку (поскольку она работает как с ubuntu, так и с окнами, и даже с виртуальным окном на Windows).

Означает ли это, что я не могу быть в безопасности загрузки и виртуальной коробки? Это кажется глупым, учитывая, что виртуальная коробка работает внутри операционной системы, а сам ubuntu начинается просто отлично.

0
задан 20 March 2018 в 17:16

2 ответа

Использовать VirtualBox в безопасной загрузке (UEFI)

Возможно использование самокомпилированных модулей ядра в безопасной загрузочной среде. Все модули должны быть подписаны и ключи должны быть зарегистрированы в безопасном загрузочном BIOS (или загрузчике)

Создать сертификат подписи и ключ

Создать сертификат и закрытый ключ для подписания

## Create a signing key and certificate## ## Signing certificate and keys sign_key=signing_key.priv sign_crt=signing_key.x509 ## Subject for certificate sign_sub="" sign_sub+="/O=Your Name" sign_sub+="/CN=Module Signing Key" sign_sub+="/emailAddress=Your.Name@somewhere.com" sign_sub+="/" ## Create certificate and keys if [[ ! -f "$sign_key" ]] && [[ ! -f "$sign_crt" ]]; then openssl req -new -x509 -newkey rsa:2048 -keyout "$sign_key" \ -outform DER -out "$sign_crt" -nodes -days 365 -subj "$sign_sub" fi ## Print certificate openssl x509 -in "$sign_crt" -inform DER -noout -text

Создавать инструмент подписи ядра Linux

Внутри заголовков ядра Linux под /usr/src/ используется инструмент подписи для модулей ядра (обязательные пакеты sudo apt-get install build-essential libssl-dev).

## Build signing tool gcc "/usr/src/linux-headers-$(uname -r)/scripts/sign-file.c" -L \ /usr/include/openssl/ -lcrypto -lssl -o sign-file

Подписание модулей VirtualBox

С помощью инструмента подписи все модули VirtualBox должны быть подписаны.

## Sign virtualbox modules vbox_mod=() vbox_mod+=(vboxdrv) vbox_mod+=(vboxnetadp) vbox_mod+=(vboxnetflt) vbox_mod+=(vboxpci) for module in "${vbox_mod[@]}"; do echo "Signing module $module" sudo sign-file sha256 "$sign_key" "$sign_crt" \ "$(modinfo -n "$module")" done

Добавить сертификат для безопасной загрузки

Наконец, сертификат необходимо добавить в безопасную загрузочную BIOS (требуется пакет sudo apt-get install mokutil)

## Add key to UEFI keyring sudo mokutil --import "$sign_crt"

Рекомендуется создать скрипт для этого, потому что при каждом обновлении ядра модули должны быть снова подписаны. Сертификат и ключ могут быть повторно использованы, поэтому он не должен постоянно обновляться.

0
ответ дан 17 July 2018 в 18:27

Использовать VirtualBox в безопасной загрузке (UEFI)

Возможно использование самокомпилированных модулей ядра в безопасной загрузочной среде. Все модули должны быть подписаны и ключи должны быть зарегистрированы в безопасном загрузочном BIOS (или загрузчике)

Создать сертификат подписи и ключ

Создать сертификат и закрытый ключ для подписания

## Create a signing key and certificate## ## Signing certificate and keys sign_key=signing_key.priv sign_crt=signing_key.x509 ## Subject for certificate sign_sub="" sign_sub+="/O=Your Name" sign_sub+="/CN=Module Signing Key" sign_sub+="/emailAddress=Your.Name@somewhere.com" sign_sub+="/" ## Create certificate and keys if [[ ! -f "$sign_key" ]] && [[ ! -f "$sign_crt" ]]; then openssl req -new -x509 -newkey rsa:2048 -keyout "$sign_key" \ -outform DER -out "$sign_crt" -nodes -days 365 -subj "$sign_sub" fi ## Print certificate openssl x509 -in "$sign_crt" -inform DER -noout -text

Построить инструмент подписи ядра Linux

Внутри заголовков ядра Linux под /usr/src/ используется инструмент подписи для модулей ядра (обязательные пакеты sudo apt-get install build-essential libssl-dev).

## Build signing tool gcc "/usr/src/linux-headers-$(uname -r)/scripts/sign-file.c" -L \ /usr/include/openssl/ -lcrypto -lssl -o sign-file

Подписание модулей VirtualBox

С помощью инструмента подписи все модули VirtualBox должны быть подписаны.

## Sign virtualbox modules vbox_mod=() vbox_mod+=(vboxdrv) vbox_mod+=(vboxnetadp) vbox_mod+=(vboxnetflt) vbox_mod+=(vboxpci) for module in "${vbox_mod[@]}"; do echo "Signing module $module" sudo sign-file sha256 "$sign_key" "$sign_crt" \ "$(modinfo -n "$module")" done

Добавить сертификат для безопасной загрузки

Наконец, сертификат необходимо добавить в безопасную загрузочную BIOS (требуется пакет sudo apt-get install mokutil)

## Add key to UEFI keyring sudo mokutil --import "$sign_crt"

Рекомендуется создать скрипт для этого, потому что при каждом обновлении ядра модули должны быть снова подписаны. Сертификат и ключ могут быть повторно использованы, поэтому он не должен постоянно обновляться.

0
ответ дан 23 July 2018 в 19:15

Другие вопросы по тегам:

Похожие вопросы: