Заголовки ядра для ядра 3.10.0-229.el7.x86_64 не найдены

Когда я service vboxdrv setup команду service vboxdrv setup в моем терминале CentOS 7, я получаю следующую ошибку:

 Your kernel headers for kernel 3.10.0-229.el7.x86_64 cannot be found 

Как я могу устранить эту ошибку?

Когда я открываю файл журнала, набрав vi /var/log/vbox-install.log , содержимое:

 Uninstalling modules from DKMS removing old DKMS module vboxhost version 5.0.4 ------------------------------ Deleting module version: 5.0.4 completely from the DKMS tree. ------------------------------ Done. Attempting to install using DKMS Creating symlink /var/lib/dkms/vboxhost/5.0.4/source -> /usr/src/vboxhost-5.0.4 DKMS: add completed. Failed to install using DKMS, attempting to install without Makefile:185: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Stop. 

Ошибка происходит в процессе установки VirtualBox 5.0.4 с использованием инструкций из этого урока . Подводя итог, до сих пор я имею:

 vi /etc/yum.repos.d/virtualbox.repo 

Добавьте следующий текст, затем сохраните и завершите работу:

 [virtualbox] name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch enabled=1 gpgcheck=1 gpgkey=http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc 

Затем в командной строке введите:

 # rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm # yum install gcc make patch dkms qt libgomp # yum install kernel-headers kernel-devel fontforge binutils glibc-headers glibc-devel ... Complete! # cd /usr/src/kernels # ls -al total 12 drwxr-xr-x. 3 root root 4096 Sep 25 16:14 . drwxr-xr-x. 4 root root 4096 Sep 25 14:17 .. drwxr-xr-x. 22 root root 4096 Sep 25 16:14 3.10.0-229.14.1.el7.x86_64 # export KERN_DIR=/usr/src/kernels/3.10.0-229.14.1.el7.x86_64 # yum install VirtualBox-5.0 ... Complete! # service vboxdrv setup Stopping VirtualBox kernel modules [ OK ] Uninstalling old VirtualBox DKMS kernel modules [ OK ] Removing old VirtualBox pci kernel module [ OK ] Removing old VirtualBox netadp kernel module [ OK ] Removing old VirtualBox netflt kernel module [ OK ] Removing old VirtualBox kernel module [ OK ] Trying to register the VirtualBox kernel modules using DKMSError! echo Your kernel headers for kernel 3.10.0-229.el7.x86_64 cannot be found at /lib/modules/3.10.0-229.el7.x86_64/build or /lib/modules/3.10.0-229.el7.x86_64/source. [FAILED] (Failed, trying without DKMS) Recompiling VirtualBox kernel modules [FAILED] (Look at /var/log/vbox-install.log to find out what went wrong) 

См. Выше содержание vi /var/log/vbox-install.log

Из любопытства я просмотрел /lib/modules/ и нашел следующее:

 [root@localhost kernels]# cd /lib/modules [root@localhost modules]# ls -al total 16 drwxr-xr-x. 4 root root 4096 Sep 25 15:58 . dr-xr-xr-x. 30 root root 4096 Sep 25 16:23 .. drwxr-xr-x. 7 root root 4096 Sep 25 15:59 3.10.0-229.14.1.el7.x86_64 drwxr-xr-x. 8 root root 4096 Sep 25 16:24 3.10.0-229.el7.x86_64 

Согласно совету @ EricRenouf, я набрал uname -a , и терминал ответил:

 Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 

Я не перезагрузил машину, но учебник не сказал, чтобы перезагрузиться.

Решение, вероятно, будет найдено по этому вопросу, если короткая версия будет выполнена

 sudo yum install "kernel-devel-uname-r == $(uname -r)" 

Это установит заголовки ядра для версии ядра, которое вы сейчас используете.

Я подозреваю, что в какой-то момент вы сделали yum update или подобное, и на самом деле установили новое ядро, но вы еще не начали его запускать. Вероятно, происходит то, что когда вы выполняете шаги yum install в своем вопросе, он смотрит на последнюю установленную версию и получает заголовки для этого. Howerver, когда вы запускаете vboxdrv он смотрит на запущенное ядро ​​и пытается найти заголовки для этого.

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