Установите VirtualBox при хранении Защищенной загрузки

Я пытаюсь установить VirtualBox на Ubuntu 16.04 при хранении Защищенной загрузки. Когда я установил его, хотя Синаптический, меня попросили удалить SecureBoot, сказал я No.

Я следовал этим инструкциям: не Мог загрузить 'vboxdrv' после обновления Ubuntu 16.04 (и я хочу сохранить безопасную начальную загрузку), и https://stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail/, Оба - в значительной степени то же (я оставил файлы MOK в / корневом каталоге как во второй ссылке). Все, кажется, хорошо работает, я перезагрузил, поместите мой пароль снова, перезагруженный. Вся польза

Но затем когда я пытаюсь использовать VirtualBox это все еще работа привычки. Если я выполняю его от терминала, я добираюсь:

WARNING: The character device /dev/vboxdrv does not exist.
     Please install the virtualbox-dkms package and the appropriate
     headers, most likely linux-headers-generic.

     You will not be able to start VMs until this problem is fixed.

Но те два пакета уже установлены и актуальны.

На комментариев в главном ответе другого сообщения говорит для переустановки virtualbox-dkms прежде, чем следовать тем инструкциям. Я попробовал, и тот же результат.

Я попробовал ответ здесь: проблема с установкой VirtualBox, Который предлагает мне снова спрашивать, хочу ли я отключить Защищенную загрузку, которой я говорю No, и назад к квадратному.

Если я работаю modprobe Я добираюсь: modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Какая-либо идея о том, как заставить VirtualBox работать с SecureBoot, включила (воздержитесь от сообщения мне удалить его...)?

спасибо

6
задан 14 May 2017 в 22:18

2 ответа

Я не попробовал ни одну из тех процедур. Я действительно, однако, делаю это по-другому - но это - очень утомительный метод. Это описание заставит его казаться легче, чем это, потому что я обращаюсь к большой странице, я записал, что покрывает худшую из утомительных частей. Моя процедура:

  1. Возьмите под свой контроль Защищенную загрузку - В моем случае, я настроил свой компьютер так, чтобы я встроил свой собственный открытый ключ Защищенной загрузки во встроенное микропрограммное обеспечение. Таким образом, я не должен использовать Контейнер или MOKs. Я удалил ключи Microsoft из и добавил мои собственные ключи и ключи Canonical к компьютеру, по которому я использую эту процедуру, но можно установить Ваши с любыми ключами, которые Вы любите. Критическая часть в целях Вашего вопроса - то, что необходимо включать ключ, который Вы генерируете с закрытым ключом, который Вы сохраняете, чтобы заставить его работать. Вам также будут нужны ключи, используемые для подписания стандартных компонентов - ключ Canonical, общедоступный ключ рынка Microsoft или оба. Если Вы двойная загрузка с Windows, Вам будет нужен открытый ключ для того использование Microsoft для подписания ее собственного загрузчика. Посмотрите эту мою страницу для всех окровавленных деталей - но знать, что это - утомительная и привередливая процедура, таким образом, можно провести долгое время, получая эту работу части. Обратите внимание, что большинство UEFIs делает довольно легким восстановить стандартный набор ключей, таким образом, риск, вовлеченный в попытку этой процедуры, является низким.
  2. Подпишите модули VirtualBox - следующий шаг должен подписать модули ядра VirtualBox. В этом выполняют в значительной степени тот же путь как страницы, с которыми Вы связались, описывают; однако, у меня есть сценарий, чтобы помочь автоматизировать этот процесс (см. ниже).
  3. Загрузите модуль VirtualBox - После подписания модулей, они должны быть загружены. Это должно произойти автоматически на перезагрузке; но если Вы хотите использовать VirtualBox без перезагрузки, необходимо явно использовать modprobe для каждого из модулей (vboxdrv, vboxnetflt, vboxpci, и vboxnetadp).
  4. Повторите шаги 2-3 после каждого обновления ядра - После обновления ядра, шаги № 2 и № 3 должны быть повторены.

Для удобства я записал сценарий, чтобы сделать шаги № 2 и № 3 в одной команде. Я называю его sign-vbox.Вот:

#!/bin/bash
# sign-vbox script, copyright (c) 2017 by Rod Smith
# Distributed under the terms of the GPLv3

if [ "$#" -ne 1 ] && [ "$#" -ne 0 ]; then
    echo "Usage: $0 [ {kernel-version} ]"
    exit 1
fi

if [ "$#" == 0 ]; then
    kernel_version=$(uname -r)
else
    kernel_version="$1"
fi

sign_file=$(find /usr/src/ -name sign-file | tail -n 1)

if [ -z $sign_file ]; then
    echo "Can't find the sign-file binary! Exiting!"
    exit 1
else
    path_to_modules="/lib/modules/$kernel_version/updates/dkms"

    if [ ! -f $path_to_modules/vboxdrv.ko ]; then
        echo "Could not find $path_to_modules/vboxdrv.ko!"
        echo "Is the kernel version correct?"
        exit 1
    fi

    echo "Signing modules for $kernel_version"
    $sign_file sha256 /etc/refind.d/keys/refind_local.key /etc/refind.d/keys/refind_local.cer $path_to_modules/vboxdrv.ko
    $sign_file sha256 /etc/refind.d/keys/refind_local.key /etc/refind.d/keys/refind_local.cer $path_to_modules/vboxnetadp.ko
    $sign_file sha256 /etc/refind.d/keys/refind_local.key /etc/refind.d/keys/refind_local.cer $path_to_modules/vboxnetflt.ko
    $sign_file sha256 /etc/refind.d/keys/refind_local.key /etc/refind.d/keys/refind_local.cer $path_to_modules/vboxpci.ko
    modprobe vboxdrv
    modprobe vboxnetflt
    modprobe vboxpci
    modprobe vboxnetadp
    echo "Loaded vbox modules:"
    lsmod | grep vbox
fi

Для использования этого сценария просто введите его имя. Это подписывает модули VirtualBox, связанные с под управлением в настоящее время ядром. При передаче его номер версии ядра это должно подписать ядра, связанные с той версией ядра, но нет никакого места для ошибки в определении номера версии ядра. (Это ожидает тот же формат это uname -r возвратился бы, если бы ядро работало.)

Обратите внимание, что сценарий ожидает находить частным (refind_local.key) и общественность (refind_local.cer) ключи /etc/refind.d/keys/. Необходимо будет изменить то местоположение для собственной системы, если Вы не используете, повторно находят и используют локальные ключи для него. Файл секретных ключей должен быть столь безопасным, как можно сделать его, такие как наличие 0400 (-r--------) полномочия. Ограничение доступа к самому каталогу может быть полезным, также. Еще лучше поместите его на карту флэш-памяти с интерфейсом USB, которую Вы включаете только при выполнении этой команды.

Кроме того, я записал этот сценарий для своего собственного персонального использования. Это, вероятно, имеет ошибки, особенно, если используется способом я не ожидаю. Конечно, это перестало работать довольно плохо, если необходимые исходные файлы ядра не установлены.

Возможно, что этот сценарий работал бы с основанными на MOK методами, которые Вы пытались использовать при указании на него на файлы ключей, Вы генерировали, общедоступный файл которого Вы загрузились в MOK. Я не могу обещать это, тем не менее, и конечно Ваши проблемы могли произойти или из-за неправильно подписанных модулей ядра или из-за проблем на конце Shim/MOK. Используя этот сценарий помог бы, только если Ваши модули ядра не были правильно подписаны.

6
ответ дан 23 November 2019 в 07:48

VirtualBox 6.1 будет установлен 19.10. с включенной безопасной загрузкой.

3
ответ дан 15 December 2019 в 07:19

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

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