Дисклеймер

Внимание: в этом блоге могут описываться события, явления и факты при помощи ненормативной лексики. Убедитесь, что Вы готовы к этому.

среда, 19 июня 2013 г.

Восстановление работоспособности VirtualBox в (K)Ubuntu после обновления ядра

Порой так случается, что в *buntu после обновления ядра перестаёт работать виртуальная машина VirtualBox'а.
Соответственно, при запуске виртуальной машины вылезает мерзкое сообщение с надписью:

Kernel driver not installed (rc=-1908)

The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing

'/etc/init.d/vboxdrv setup'

as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.
Это объясняет причину - модуль vboxdrv не загружен. Если он в *buntu автоматически не загрузился, то, скорее всего, делать modprobe вручную бесполезно.

При попытке выполнить команду, которую нам посоветовал VirtualBox, можно получить очередной облом:
ivan@ivan-pc:~$ sudo /etc/init.d/vboxdrv setup
[sudo] password for ivan: 
sudo: /etc/init.d/vboxdrv: команда не найдена 
ivan@ivan-pc:~$
Печально. Нет в init.d скрипта для сборки указанного модуля. Я не знаю, кто в этом виноват - сборщики пакетов, мэйнтейнеры *buntu, мои кривые (в локтях сгибаются же) руки, тайное мировое правительство и т.п. Это и неважно. Нужно как-то решать вопрос. Какой выход из этой ситуации?

Самый простой - переустановить virtualbox так, чтобы собрался модуль заново. Вот как-то так:
sudo apt-get install --reinstall linux-headers-generic virtualbox virtualbox-dkms
Обратите внимание на ключ "--reinstall". Без него при наличии установленных последних доступных пакетов из команды *buntu сообщит, что, мол, пакеты свежие, ничего ставить не буду.
Ну и остаётся только загрузить свежесобранный модуль:
sudo modprobe vboxdrv 
Теперь можно пользоваться виртуальной машиной.
Да, способ не самый изящный, и, скорее всего, можно сделать лучше и/или правильней. Но я такого решения не придумал, и не нашёл. Разбираться лень, да и некогда, поэтому предлагаю тот способ, который лично для меня приемлем и работает.

P.S. если у Вас, к слову, Gentoo, то вместо ручной пересборки доверьте это профессионалам - module-rebuild. Рекомендую.

Комментариев нет:

Отправить комментарий