Header kernel Anda untuk kernel 3.10.0-229.el7.x86_64 tidak dapat ditemukan

12

Ketika saya mengetik perintah service vboxdrv setupdi terminal CentOS 7 saya, saya mendapatkan kesalahan berikut:

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

Bagaimana saya bisa mengatasi kesalahan ini?

Ketika saya membuka file log dengan mengetik vi /var/log/vbox-install.log, isinya adalah:

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.

Kesalahan ini terjadi dalam proses menginstal VirtualBox 5.0.4 menggunakan instruksi dari tutorial ini . Untuk meringkas, sejauh ini, saya punya:

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

Tambahkan teks berikut, lalu simpan dan keluar:

[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

Kemudian pada command prompt ketik:

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

Lihat di atas untuk konten vi /var/log/vbox-install.log

Karena penasaran, saya mencari /lib/modules/dan menemukan yang berikut:

[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

Sesuai saran @ EricRenouf, saya mengetik uname -a, dan terminal menjawab dengan:

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

Saya belum me-reboot mesin, tetapi tutorial tidak mengatakan untuk me-reboot.

CodeMed
sumber
Apakah Anda memperbarui kernel Anda tanpa me-reboot pada beberapa titik atau sesuatu seperti itu? Apakah uname -apertunjukan 3.10.0-229.el7.x86_64atau 3.10.0-229.14.1.el7.x86_64? Saya menduga itu yang pertama, tetapi yum menginstal header untuk yang terakhir.
Eric Renouf

Jawaban:

12

Solusinya mungkin ditemukan pada pertanyaan ini versi singkatnya, jalankan

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

Itu akan menginstal header kernel untuk versi kernel yang sedang Anda jalankan.

Saya menduga bahwa pada titik tertentu Anda melakukan yum updateatau serupa, dan yang benar-benar menginstal kernel baru, tetapi Anda belum mulai menjalankannya. Apa yang mungkin terjadi adalah ketika Anda melakukan yum installlangkah - langkah dalam pertanyaan Anda, ia sedang melihat versi terinstal terbaru dan mendapatkan header untuk itu. Howerver, ketika Anda mulai vboxdrvmelihat kernel yang sedang berjalan dan mencoba mencari header untuk itu.

Kernel yang berjalan dan terinstal tidak sinkron (yang biasanya bukan masalah besar), tetapi Anda menemukan kasus yang penting.

Eric Renouf
sumber
Tidak bekerja untukku. No package kernel-devel-uname-r == 4.4.193-1.el7.elrepo.x86_64 available.
Sadik Özoguz
@ SadikÖzoguz jika Anda menjalankan versi kernel yang ingin Anda pasang tajuknya, Anda dapat mencoba yum install kernel-develmungkin itu akan lebih mudah bagi Anda? Jika tidak, Anda mungkin ingin mencoba mengajukan pertanyaan baru (mungkin mengutip pertanyaan ini dan memberikan lebih banyak informasi tentang situasi Anda)
Eric Renouf
Saya akan mengajukan pertanyaan baru.
Sadik Özoguz