No se pueden encontrar los encabezados de kernel para kernel 3.10.0-229.el7.x86_64

12

Cuando escribo el comando service vboxdrv setupen mi terminal CentOS 7, aparece el siguiente error:

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

¿Cómo puedo resolver este error?

Cuando abro el archivo de registro escribiendo vi /var/log/vbox-install.log, el contenido es:

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.

El error ocurre en el proceso de instalación de VirtualBox 5.0.4 usando las instrucciones de este tutorial . Para resumir, hasta ahora, tengo:

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

Agregue el siguiente texto, luego guarde y salga:

[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

Luego, en el símbolo del sistema, escriba:

# 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)

Ver arriba para el contenido de vi /var/log/vbox-install.log

Por curiosidad, miré /lib/modules/y encontré lo siguiente:

[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

Según el consejo de @ EricRenouf, escribí uname -ay el terminal respondió con:

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

No he reiniciado la máquina, pero el tutorial no decía reiniciar.

CodeMed
fuente
¿Actualizaste tu kernel sin reiniciar en algún momento o algo así? ¿ uname -aMuestra 3.10.0-229.el7.x86_64o 3.10.0-229.14.1.el7.x86_64? Supongo que es el primero, pero yum instaló los encabezados para el segundo.
Eric Renouf

Respuestas:

12

Es probable que la solución se encuentre en esta pregunta , siendo la versión corta, ejecutar

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

Eso instalará los encabezados del núcleo para la versión del núcleo que está ejecutando actualmente.

Sospecho que en algún momento hiciste una yum updateo similar, y que en realidad instaló un nuevo núcleo, pero aún no has comenzado a ejecutarlo. Lo que probablemente está sucediendo es que cuando realiza los yum installpasos en su pregunta, está mirando la última versión instalada y obteniendo los encabezados para eso. Howerver, cuando comienzas vboxdrv, mira el kernel en ejecución e intenta encontrar los encabezados para eso.

Sus núcleos en ejecución e instalados no están sincronizados (lo que normalmente no es un gran problema), pero encontró un caso en el que es importante.

Eric Renouf
fuente
No funciona para mi. No package kernel-devel-uname-r == 4.4.193-1.el7.elrepo.x86_64 available.
Sadik Özoguz
@ SadikÖzoguz si está ejecutando la versión del kernel en el que desea instalar los encabezados, ¿puede intentar yum install kernel-develque le resulte más fácil? Si no, puede intentar hacer una nueva pregunta (tal vez citando esta y brindando más información sobre cuál es su situación)
Eric Renouf
Haré una nueva pregunta.
Sadik Özoguz