Истинная причина, почему машина VirtualBox не запускается после обновления ядра Linux

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

Это о Ubuntu 16.04 в моем случае. Я устанавливаю VirtualBox из репозитория Ubuntu, с sudo apt install virtualbox-qt

У меня было ядро, 4.4.0-34-универсальное установленный. После того, как я установил VirtualBox, все хорошо работало.

Но после того, как я обновил систему (через программное обеспечение Updater) и обновил с sudo apt upgrade, sudo apt dist-upgrade и auto-remove, моя виртуальная машина не может запуститься. 4.4.0-36-универсальное ядро теперь установлено. Это говорит что-то как:

please install virtualbox-dkms and check if appropriate linux-headers are installed

virtualbox-dkms уже установлен, таким образом, ничего не происходит после sudo apt install virtualbox-dkms

Но что относительно заголовков?

$ dpkg -l | grep linux-headers  
ii  linux-headers-4.4.0-34  4.4.0-34.53  all  Header files related to Linux kernel version 4.4.0  
ii  linux-headers-4.4.0-34-generic  4.4.0-34.53  amd64  Linux kernel headers for version 4.4.0 on 64 bit x86 SMP  
ii  linux-headers-4.4.0-36  4.4.0-36.55  all  Header files related to Linux kernel version 4.4.0  
ii  linux-headers-4.4.0-36-generic  4.4.0-36.55  amd64  Linux kernel headers for version 4.4.0 on 64 bit x86 SMP  
ii  linux-headers-generic  4.4.0.36.38  amd64  Generic Linux kernel headers  

$ uname -r  
4.4.0-36-generic

И какова настоящая причина, почему это происходит после каждого обновления ядра? Я хочу знать точно, что делать и не всегда проводить дни, фиксируя его.

2
задан 21 February 2017 в 22:01

2 ответа

Я нашел решение.

Хотя на мой вопрос нет ответа, и я не совсем понимаю ПОЧЕМУ эта проблема возникает, я хочу поделиться с вами простым кратким изложением решения. Я согласился с тем, что ядро ​​Linux просто не предоставляет поддержку Virtualbox после обновления. Они знают причину.

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

$ sudo modprobe vboxdrv, вы получите modprobe: ERROR: could not insert 'vboxdrv': Required key not available.

Решение состоит в том, чтобы вручную подписывать ключ КАЖДЫЙ раз, когда это происходит, потому что подпись зависит от КЕРНЕЛ. Это связано с тем, что Ubuntu 16.04 БЕЗ отключения системы безопасной загрузки.

Шаги:

  1. Проверьте, соответствуют ли установленные заголовки ($ dpkg -l | grep linux-headers) работающему ядру

    ($ uname -r).

  2. Вы всегда можете использовать эту команду, чтобы увидеть список зарегистрированных / подписанных ключей:

    $ sudo keyctl list %:.system_keyring.

  3. Если вы уже подписали ключ для Virtualbox (со старым ядром), вам необходимо удалить его. Есть способ удалить один ключ, но я удаляю их все за один раз (все ключи, которые я зарегистрировал):

    $ sudo mokutil --reset. Выберите пароль и перезагрузите компьютер.

  4. Ubuntu автоматически спросит вас при загрузке. Выберите «Сбросить MOK» и используйте выбранный пароль.
  5. Если вы еще не создали ключ X.509, создайте папку для ключа и перейдите к нему.
  6. Создайте ключ с помощью: $ openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Akrog/". Вместо «MOK» и «Akrog» выберите имена (например, «vbX509Key» и «vbKey»).
  7. Зарегистрируйте клавишу с помощью: $ sudo /usr/src/linux-headers-XXX-generic/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/XXX-generic/updates/dkms/vboxdrv.ko. Вместо «MOK» используйте указанное имя и правильную версию ядра вместо «XXX».
  8. Импортируйте ключ с помощью $ sudo mokutil --import MOK.der. Опять же, используйте указанное имя вместо «МОК». Выберите пароль и перезагрузите компьютер.
  9. Ubuntu автоматически спросит вас при загрузке. Выберите «Зарегистрировать MOK» и используйте выбранный пароль.

Теперь вы можете нормально запускать и использовать Virtualbox.

1
ответ дан 2 December 2019 в 04:54

После обновления ядра в случае проблем с VirtualBox из репозитория Ubuntu просто используют последний VirtualBox от официального сайта. Это могло бы быть простое и быстрое решение.

0
ответ дан 2 December 2019 в 04:54

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

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