VirtualBox не запускается после обновления ядра

7

Вчера я получил обновление ядра и после перезагрузки VirtualBox перестала работать.

Вот моя системная информация (после обновления ядра):

[email protected]:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
[email protected]:~$ uname -a
Linux workstation 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Я установил VirtualBox уже давно с помощью

sudo apt install linux-headers-$(uname -r)
sudo apt install virtualbox-dkms virtualbox virtualbox-qt

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

[email protected]:~$ sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Exec format error
[email protected]:~$ dmesg | tail -n 1
[ 1413.167311] vboxdrv: version magic '4.4.0-116-generic SMP mod_unload modversions ' should be '4.4.0-116-generic SMP mod_unload modversions retpoline '

Я нашел сообщение на форуме с этим сообщением об ошибке здесь от трех дней назад, к сожалению без разрешения. Поэтому я попытался удалить пакеты VirtualBox из репо Ubuntu и установить последнюю версию 5.2, используя эту процедуру . Однако даже после перезагрузки машины ошибка остается.

Что я могу сделать в этом случае?

    
задан matpen 22.02.2018 в 12:00
источник

3 ответа

3

Связанная проблема, указанная в комментарии @ricab, была прослежена до проблемы с новым ядром, требующим определенного уровня gcc для успешного компиляции модулей ядра.

В моей системе обновление gcc было вытолкнуто ПОСЛЕ обновления ядра, в результате чего перекомпилирование завершилось неудачей.

Как только основная причина была обнаружена, я смог исправить эту систему, uninistalling и переустановку нового ядра. Это фиксировало мои графические драйверы, но мне пришлось выпустить sudo /sbin/vboxconfig для исправления виртуального бокса после загрузки в новое ядро.

Моя система - 14.04, поэтому я не могу сообщить вам о правильной версии gcc для вашей системы 16.04, но это обсуждается в Ссылка

    
ответ дан Organic Marble 24.02.2018 в 00:51
2

У меня была та же проблема. После обновления ядра моя версия gcc показывалась как 5.4.1. Снижение этой версии до 5.4.0 помогло мне иметь retpoline для модуля ядра vboxdrv.

Следующие шаги этой ссылки помогли мне решить мою проблему:

sudo apt-get install ppa-purge
sudo ppa-purge ppa:ubuntu-toolchain-r/test
#Select gcc version 5 using update-alternatives manually
sudo update-alternatives --config gcc

После этих шагов gcc --version должно быть (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.9) 5.4.0 20160609

Затем очистите все новые заголовки linux (4.4.0-116)

sudo apt-get purge linux-headers-4.4.0-116 linux-headers-4.4.0-116-generic linux-image-4.4.0-116-generic linux-image-extra-4.4.0-116-generic linux-signed-image-4.4.0-116-generic

Снова установите их

sudo apt-get install linux-generic linux-signed-generic

Затем переустановите виртуальный бокс, я установил последнюю версию VirtualBox-5.2 на этот раз, но версия виртуального бокса по умолчанию 5.0 также должна работать нормально.

sudo apt-get purge virtualbox-dkms virtualbox virtualbox-qt
sudo apt-get install virtualbox-5.2

И у нас есть поддержка retpoline в последнем модуле

[email protected]DRMD34579:~$ modinfo vboxdrv 
filename:       /lib/modules/4.4.0-116-generic/misc/vboxdrv.ko
version:        5.2.6 r120293 (0x00290000)
license:        GPL
description:    Oracle VM VirtualBox Support Driver
author:         Oracle Corporation
srcversion:     4880B21EFF1B605D6402982
depends:        
vermagic:       4.4.0-116-generic SMP mod_unload modversions retpoline 
parm:           force_async_tsc:force the asynchronous TSC mode (int)
    
ответ дан Anirudh Gupta 27.02.2018 в 08:48
-1

У меня также была проблема недавно, и здесь был задан вопрос. Я сделал рытье, и это действительно известная проблема.

Отчет об ошибке находится в моей ссылке.

Virtualbox неожиданно прекратил работу

Я думаю, что общий консенсус заключается в загрузке в ядро ​​4.4 до тех пор, пока проблема не будет исправлена. (Это, безусловно, самое простое решение для меня.)

    
ответ дан hatterman 28.02.2018 в 13:42