Ihre Kernel-Header für Kernel 3.10.0-229.el7.x86_64 wurden nicht gefunden

12

Wenn ich den Befehl service vboxdrv setupin mein CentOS 7-Terminal eingebe, wird folgende Fehlermeldung angezeigt:

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

Wie kann ich diesen Fehler beheben?

Wenn ich die Protokolldatei durch Eingabe öffne vi /var/log/vbox-install.log, sind die Inhalte:

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.

Der Fehler tritt bei der Installation von VirtualBox 5.0.4 gemäß den Anweisungen in diesem Lernprogramm auf . Zusammenfassend habe ich bisher:

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

Fügen Sie den folgenden Text hinzu, speichern Sie ihn und beenden Sie ihn:

[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

Geben Sie dann an der Eingabeaufforderung Folgendes ein:

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

Siehe oben für den Inhalt von vi /var/log/vbox-install.log

Aus Neugier schaute ich hinein /lib/modules/und fand Folgendes:

[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

Gemäß @ EricRenoufs Rat habe ich getippt uname -aund das Terminal antwortete mit:

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

Ich habe den Computer nicht neu gestartet, aber im Tutorial wurde nicht zum Neustart aufgefordert.

CodeMed
quelle
Haben Sie Ihren Kernel aktualisiert, ohne ihn irgendwann neu zu starten? Ist uname -azeigen 3.10.0-229.el7.x86_64oder 3.10.0-229.14.1.el7.x86_64? Ich vermute, es ist die erste, aber Sie haben die Header für die zweite installiert.
Eric Renouf

Antworten:

12

Die Lösung dürfte bei dieser Frage die Kurzversion sein, die ausgeführt wird

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

Dadurch werden die Kernel-Header für die Version des aktuell ausgeführten Kernels installiert.

Ich vermute, dass Sie irgendwann einen yum updateoder einen ähnlichen Kernel installiert haben, diesen aber noch nicht gestartet haben. Wahrscheinlich geschieht Folgendes: Wenn Sie die yum installSchritte in Ihrer Frage ausführen, wird nach der neuesten installierten Version gesucht und die entsprechenden Header abgerufen. Aber, wenn Sie es starten vboxdrv, schaut es auf den laufenden Kernel und versucht, die Header dafür zu finden.

Ihr laufender und installierter Kernel sind nicht synchron (was normalerweise kein großes Problem ist), aber Sie haben einen Fall gefunden, in dem es darauf ankommt.

Eric Renouf
quelle
Ich arbeite nicht für mich. No package kernel-devel-uname-r == 4.4.193-1.el7.elrepo.x86_64 available.
Sadik Özoguz
@ SadikÖzoguz Wenn du die Version des Kernels verwendest, für den du die Header installieren möchtest, kannst du einfach versuchen, yum install kernel-develvielleicht würde das für dich einfacher funktionieren? Wenn nicht, möchten Sie vielleicht versuchen, eine neue Frage zu stellen (vielleicht unter Berufung auf diese Frage und Angabe weiterer Informationen über Ihre Situation)
Eric Renouf
Ich werde eine neue Frage stellen.
Sadik Özoguz