Tidak dapat menginstal VIrtualbox, `" Tentukan KERN_DIR = <directory> "` - menginstal Kotak Virtual ke Debian?

38

Saya mendapatkan kesalahan ini:

Makefile: 181: *** Kesalahan: tidak dapat menemukan sumber dari kernel Linux Anda saat ini. Tentukan KERN_DIR = dan jalankan Make lagi. Berhenti.

Pada dasarnya saya lakukan:

$ sudo /etc/init.d/vboxdrv setup
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-573.18.1.el6.x86_64

Building the main Guest Additions module                   [FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)

Dan kesalahannya adalah:

Makefile: 181: *** Kesalahan: tidak dapat menemukan sumber dari kernel Linux Anda saat ini. Tentukan KERN_DIR = dan jalankan Make lagi. Berhenti

Apa kesalahan ini dan bagaimana cara memperbaikinya?

hhh
sumber

Jawaban:

34

Pastikan Anda menginstal Paket Header Kernel.

http://www.cyberciti.biz/faq/howto-install-kernel-headers-package

Make sure you have updated version

Type the following command
$ sudo apt-get update

OR as root user enter:
# apt-get update

Search for kernel version (optional)

Type the following command:
$ apt-cache search linux-headers-$(uname -r)

Install linux-header package under Debina or Ubuntu Linux

Type the following command:
$ sudo apt-get install linux-headers-$(uname -r)

OR as root user:
# apt-get install linux-headers-$(uname -r)

EDIT:

Saya kebetulan perlu menginstalnya juga di server saya sendiri dan mendapatkan kesalahan yang sama ketika mencoba menggunakan virtualbox di repo debian. Saya pergi ke depan dan menambahkan repo VirtualBox dan diinstal dari sana. Ini lebih baik karena mereka lebih mutakhir.

Sebagai root

$ nano /etc/apt/sources.list 

Tambahkan baris di bawah ini untuk ditekan

deb http://download.virtualbox.org/virtualbox/debian squeeze contrib non-free

Kemudian tambahkan kunci publik Oracle untuk apt-secure

$ wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

kemudian jalankan pembaruan dan untuk menginstal 4.2 terbaru

apt-get update
apt-get install virtualbox-4.2

Instal paket dkms untuk memastikan bahwa modul kernel host VirtualBox terbaru

apt-get install dkms

Harus baik untuk pergi. Dapatkan instruksi ini dari situs web VirtualBox untuk Linux yang tampaknya sedang down saat ini tetapi tautannya adalah https://www.virtualbox.org/wiki/Linux_Downloads

Brandon
sumber
2
Perintah apt-cache search linux-headers-$(uname -r)tidak mengembalikan apa pun untuk saya meskipun saya melakukan perintah di atas.
hhh
@ hhh saya pikir jawaban ini bagus, dan harus diterima. Saya tidak tahu apa yang Anda inginkan dengan ** linux-header - $ (uname -r) **. Tolong, jelaskan atau buka pertanyaan baru. Saya pikir utas ini selesai.
Léo Léopold Hertz 준영
@ hhh Beberapa distribusi tidak memiliki repositori dari linux-header. Anda dapat memeriksa yang ini: computingforgeeks.com/2015/08/...
warmblue
Tidak satu pun dari jawaban ini yang bekerja untuk saya karena distro yang saya unduh memiliki kernel yang lebih tua daripada yang tersedia di repo. Saya harus lari apt-get update && apt-get -y dist-upgrade.
Plato
29

Cara memperbaikinya untuk Fedora / CentOS

Pertama-tama pastikan bahwa paket yang Anda instal (terutama kernel) terbaru:

$ sudo yum update     

Jika pembaruan versi kernel, Anda harus memulai ulang sehingga uname -rcocok dengan nama direktori di /usr/src/kernels/. Kemudian

$ sudo yum install kernel-devel gcc
$ echo export KERN_DIR=/usr/src/kernels/`uname -r` >> ~/.bashrc
$ source ~/.bashrc     # to set the variable in your current shell
$ sudo echo $KERN_DIR  # verify the value is set
$ sudo ls $KERN_DIR    # verify the directory exists 

Setelah kompilasi ini, modul kernel VirtualBox harus berfungsi tanpa masalah.

Sumber:

pengguna11153
sumber
1
Setelah menjalankan langkah-langkah di atas, harus me-restart sistem tamu sebelum menginstal ulang penambahan tamu vbox lagi.
Reddy
Ini adalah paket yang tepat untuk diinstal, namun mengkompilasi ulang modul kernel memerlukan hak akses root, dan menjalankan sesuatu di root akan kehilangan variabel lingkungan Anda (termasuk KERN_DIR). Saya bukannya sudo -sdiikuti oleh export KERN_DIR=/usr/src/kernels/XXXtetapi saya yakin ada cara yang lebih baik untuk bertahan variabel ke mode sudo
Migwell
Dalam kasus saya (CentOS 6.7) [uname -r] adalah [2.6.32-573.el6.x86_64], tetapi [ls / usr / src / kernel /] mencetak [2.6.32-573.22.1.el6.x86_64] Jadi berhati-hatilah dan gunakan nama dir aktual yang ada
jnr
1
source ~/.bashrcuntuk mengatur KERN_DIR di lingkungan saat ini tanpa harus memulai ulang.
Justin
Saya mendapat kesalahan bahwa ini bukan direktori. Perhatikan bahwa ini membutuhkan tebasan di akhir .. echo export KERN_DIR = / usr / src / kernel / uname -r/ >> >> / .bashrc
Artjom Kurapov
2

@ hhh Anda hanya perlu mencari linux-headersdan menemukan arsitektur yang bagus. Dalam hal ini:

# aptitude search linux-headers      
v   linux-headers                                                       -                                                                              
p   linux-headers-2.6-amd64                                             - Header files for Linux amd64 configuration (dummy package)                   
p   linux-headers-3.2.0-4-all                                           - All header files for Linux 3.2 (meta-package)                                
p   linux-headers-3.2.0-4-all-amd64                                     - All header files for Linux 3.2 (meta-package)                                
i A linux-headers-3.2.0-4-amd64                                         - Header files for Linux 3.2.0-4-amd64                                         
i A linux-headers-3.2.0-4-common                                        - Common header files for Linux 3.2.0-4                                        
p   linux-headers-3.2.0-4-common-rt                                     - Common header files for Linux 3.2.0-4-rt                                     
p   linux-headers-3.2.0-4-rt-amd64                                      - Header files for Linux 3.2.0-4-rt-amd64                                      
i   linux-headers-amd64                                                 - Header files for Linux amd64 configuration (meta-package)                    
p   linux-headers-rt-amd64                                              - Header files for Linux rt-amd64 configuration (meta-package)

Jadi, dalam kasus saya, saya memiliki arsitektur 64-bit, saya harus menginstal linux-headers-amd64.

Hal lain adalah apt-get addtidak ada. Ganti apt-getdengan apt-key.

Adrien
sumber
2

Saya memiliki kesalahan KERN_DIR di CentOS. Tinjau skrip instalasi shell, dan temukan bahwa ia menetapkan KERN_DIR menjadi / usr / src / kernel. Lalu apakah "uname -r" menunjukkan saya menjalankan versi kernel yang lebih rendah ... daripada kode sumber di bawah / usr / src / kernel.

Saya melihat /boot/grub/menu.lst ... dan mengkonfirmasi ketidakcocokan kernel. Aneh.

Jadi perbaiki adalah ... "yum -y perbarui kernel", lalu reboot. Alat VMWare kemudian diinstal.

pengguna513000
sumber
1

Mencoba:

yum install kernel* dkms gcc

Kemudian

yum install kernel-uek-devel

Kemudian reboot mesin Anda

Carlos
sumber
Penggunaan Debian apt-get, tidak yum.
RobinJ
0

Kesalahan berarti bahwa vboxdrv/ vboxaddtidak dapat menemukan sumber kernel Anda.

Script mengharapkan /lib/modules/$(uname -r)/buildfolder itu menunjuk ke /usr/src/kernels/$(uname -r)mana seharusnya memiliki Makefile di mana ia dapat menjalankan kernelreleasetugas, sehingga dapat membandingkan dengan versi kernel yang Anda instal saat ini ( uname -r).

Jadi jika perintah ini gagal:

make -C /usr/src/kernels/$(uname -r)/build kernelrelease

Anda harus menginstal header Linux dengan:

sudo apt-get install linux-headers-$(uname -r)

Untuk perincian lebih lanjut, silakan periksa pos ini .

kenorb
sumber
0

Untuk OS apa pun Anda perlu memastikan semua paket yang diperlukan telah diinstal. Dalam kasus saya di Debian saya tidak ada paket dkms dan linux-headers-generic.

#apt-get install dkms build-essential linux-headers-generic linux-headers-$(uname -r)

Untuk instruksi lengkap lihat posting forum VirtualBox ini .

situs
sumber