VirtualBox: kernel module is not loaded и kernel headers cannot be found

Автор: | 08/04/2015
 

virtualboxПри запуске VagrantVirtualBox сообщает об ошибке:

$ vagrant up
VirtualBox is complaining that the kernel module is not loaded. Please
run `VBoxManage --version` or open the VirtualBox GUI to see the error
message which should contain instructions on how to fix this error.8
$ VBoxManage --version
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (2.6.32-504.8.1.el6.i686) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /etc/init.d/vboxdrv setup

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

А при попытке пересобрать модули:

# /etc/init.d/vboxdrv setup
Stopping VirtualBox kernel modules                         [  OK  ]
Uninstalling old VirtualBox DKMS kernel modules            [  OK  ]
Trying to register the VirtualBox kernel modules using DKMSError! echo
Your kernel headers for kernel 2.6.32-504.8.1.el6.i686 cannot be found at
/lib/modules/2.6.32-504.8.1.el6.i686/build or /lib/modules/2.6.32-504.8.1.el6.i686/source.
                                                           [FAILED]
  (Failed, trying without DKMS)
Recompiling VirtualBox kernel modules                      [FAILED]
  (Look at /var/log/vbox-install.log to find out what went wrong)

Хотя пакет kernel-headers установлен.

Проблема заключается в том, что kernel-headers устанавливается для последней верси ядра:

...
 Updating:
kernel-headers i686 2.6.32-504.12.2.el6 updates 3.3 M
...

Если проверить каталог /lib/modules/2.6.32-504.8.1.el6.i686/build, о котором говорится в ошибке, то видно, что он является ссылкой на каталог /usr/src/kernels/2.6.32-504.8.1.el6.i686:

 # ls -l /lib/modules/2.6.32-504.8.1.el6.i686/build
lrwxrwxrwx. 1 root root 48 Mar  7 21:31 /lib/modules/2.6.32-504.8.1.el6.i686/build -> ../../../usr/src/kernels/2.6.32-504.8.1.el6.i686

В котором находятся заголовочные файлы для ядра 2.6.32-504.12.2.el6:

# ls -l /usr/src/kernels/
total 4
drwxr-xr-x 22 root root 4096 Apr  3 19:33 2.6.32-504.12.2.el6.i686

Которые были установлены при установке kernel-headers – но нет файлов для 2.6.32-504.8.1.el6.i686.

А так как текущая установленная версия ядра – 8.1, а не 12.2:

# uname -r
2.6.32-504.8.1.el6.i686

То VirtualBox ищет файлы для него.

Решение – либо обновить систему и ядро:

# yum update
...
Installed:
 kernel.i686 0:2.6.32-504.12.2.el6
...

Перезагружаем систему:

# reboot

Либо установить kernel-headers для текущей версии ядра:

# yum install kernel-headers-$(uname -r)