Vos en-têtes de noyau pour le noyau 3.10.0-229.el7.x86_64 sont introuvables

12

Lorsque je tape la commande service vboxdrv setupdans mon terminal CentOS 7, j'obtiens l'erreur suivante:

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

Comment puis-je résoudre cette erreur?

Lorsque j'ouvre le fichier journal en tapant vi /var/log/vbox-install.log, le contenu est:

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.

L'erreur se produit lors de l'installation de VirtualBox 5.0.4 à l' aide des instructions de ce didacticiel . Pour résumer, jusqu'à présent, j'ai:

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

Ajoutez le texte suivant, puis enregistrez et quittez:

[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

Ensuite, à l'invite de commande, tapez:

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

Voir ci-dessus pour le contenu de vi /var/log/vbox-install.log

Par curiosité, j'ai regardé /lib/modules/et trouvé ce qui suit:

[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

Selon les conseils de @ EricRenouf, j'ai tapé uname -a, et le terminal a répondu:

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

Je n'ai pas redémarré la machine, mais le tutoriel n'a pas dit de redémarrer.

CodeMed
la source
Avez-vous mis à jour votre noyau sans redémarrer à un moment donné ou quelque chose comme ça? Ne uname -amontrer 3.10.0-229.el7.x86_64ou 3.10.0-229.14.1.el7.x86_64? Je suppose que c'est le premier, mais miam a installé les en-têtes pour le second.
Eric Renouf

Réponses:

12

La solution est susceptible d'être trouvée à cette question, la version courte étant, exécutez

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

Cela installera les en-têtes du noyau pour la version du noyau que vous utilisez actuellement.

Je soupçonne qu'à un moment donné vous avez fait un yum updateou similaire, et que vous avez en fait installé un nouveau noyau, mais vous n'avez pas encore commencé à l'exécuter. Ce qui se passe probablement, c'est que lorsque vous effectuez les yum installétapes de votre question, il examine la dernière version installée et obtient les en-têtes pour cela. Cependant, lorsque vous démarrez, vboxdrvil regarde le noyau en cours d'exécution et essaie de trouver les en-têtes pour cela.

Vos noyaux en cours d'exécution et installés ne sont pas synchronisés (ce qui n'est normalement pas un gros problème), mais vous avez trouvé un cas où cela importait.

Eric Renouf
la source
Ne travaille pas pour moi. No package kernel-devel-uname-r == 4.4.193-1.el7.elrepo.x86_64 available.
Sadik Özoguz
@ SadikÖzoguz si vous utilisez la version du noyau pour laquelle vous souhaitez installer les en-têtes, essayez-le yum install kernel-develpeut-être plus facilement? Sinon, vous voudrez peut-être essayer de poser une nouvelle question (peut-être en citant celle-ci et en donnant plus d'informations sur votre situation)
Eric Renouf
Je vais poser une nouvelle question.
Sadik Özoguz