Я пытаюсь установить 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, включила (воздержитесь от сообщения мне удалить его...)?
спасибо
Я не попробовал ни одну из тех процедур. Я действительно, однако, делаю это по-другому - но это - очень утомительный метод. Это описание заставит его казаться легче, чем это, потому что я обращаюсь к большой странице, я записал, что покрывает худшую из утомительных частей. Моя процедура:
modprobe
для каждого из модулей (vboxdrv
, vboxnetflt
, vboxpci
, и vboxnetadp
).Для удобства я записал сценарий, чтобы сделать шаги № 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. Используя этот сценарий помог бы, только если Ваши модули ядра не были правильно подписаны.
VirtualBox 6.1 будет установлен 19.10. с включенной безопасной загрузкой.