Impossibile installare VIrtualbox, `“ Specify KERN_DIR = <directory> ”` - installare Virtual Box su Debian?


38

Ricevo questo errore:

Makefile: 181: *** Errore: impossibile trovare i sorgenti del tuo attuale kernel Linux. Specifica KERN_DIR = ed esegui nuovamente Make. Fermare.

Fondamentalmente sto facendo:

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

E l'errore è:

Makefile: 181: *** Errore: impossibile trovare i sorgenti del tuo attuale kernel Linux. Specifica KERN_DIR = ed esegui nuovamente Make. Fermare

Cos'è questo errore e come risolverlo?

Risposte:


34

Assicurati di installare il pacchetto Kernel Headers.

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)

MODIFICARE:

Ho solo bisogno di installarlo anche sul mio server e ho avuto lo stesso errore quando provavo a usare la virtualbox nei repository debian. Sono andato avanti e ho aggiunto il repository VirtualBox e installato da lì. Questo è meglio perché sono più aggiornati.

Come radice

$ nano /etc/apt/sources.list 

Aggiungi la riga sotto per spremere

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

Quindi aggiungere la chiave pubblica Oracle per apt-secure

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

quindi eseguire l'aggiornamento e installare l'ultima versione 4.2

apt-get update
apt-get install virtualbox-4.2

Installare il pacchetto dkms per assicurarsi che i moduli del kernel host VirtualBox siano aggiornati

apt-get install dkms

Dovrebbe essere buono per andare. Ho ricevuto queste istruzioni dal sito Web di VirtualBox per Linux che al momento sembra essere inattivo ma il link è https://www.virtualbox.org/wiki/Linux_Downloads


2
Il comando apt-cache search linux-headers-$(uname -r)non restituisce nulla per me anche se ho eseguito i comandi sopra.
hhh,

@hhh penso che questa risposta sia buona e dovrebbe essere accettata. Non so cosa vuoi con questo ** linux-headers - $ (uname -r) **. Per favore, spiega o apri una nuova domanda. Penso che questo thread sia finito.
Léo Léopold Hertz

@hhh Alcune distribuzioni non hanno i repository dell'intestazione linux. puoi controllare questo: computingforgeeks.com/2015/08/…
warmblue

Nessuna di queste risposte ha funzionato per me perché la distribuzione che ho scaricato aveva un kernel più vecchio di quello disponibile nei repository. Ho dovuto correre apt-get update && apt-get -y dist-upgrade.
Platone,

29

Come risolvere questo problema per Fedora / CentOS

Per prima cosa assicurati che i tuoi pacchetti installati (specialmente il kernel) siano aggiornati:

$ sudo yum update     

Se aggiorna la versione del kernel, dovrai riavviare in modo che uname -rcorrisponda al nome della directory in /usr/src/kernels/. Poi

$ 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 

Dopo questa compilazione i moduli del kernel VirtualBox dovrebbero funzionare senza problemi.

fonti:


1
Dopo aver eseguito i passaggi precedenti, è stato necessario riavviare il sistema guest prima di reinstallare nuovamente le aggiunte guest vbox.
Reddy,

Questo era il pacchetto giusto da installare, tuttavia la ricompilazione dei moduli del kernel richiedeva i privilegi di root e l'esecuzione di qualcosa in root perderà le variabili di ambiente (incluso KERN_DIR). Invece l'ho sudo -sseguito, export KERN_DIR=/usr/src/kernels/XXXma sono sicuro che c'è un modo migliore per mantenere le variabili in modalità sudo
Migwell

Nel mio caso (CentOS 6.7) [uname -r] è [2.6.32-573.el6.x86_64], ma [ls / usr / src / kernels /] stampa [2.6.32-573.22.1.el6.x86_64] Quindi fai attenzione e usa il nome della
directory

1
source ~/.bashrcper impostare KERN_DIR nell'ambiente attuale senza riavviare.
Giustino,

Ho ricevuto errori che non sono una directory. Nota che alla fine ha bisogno di una barra. Echo export KERN_DIR = / usr / src / kernels / uname -r/ >> ~ / .bashrc
Artjom Kurapov

2

@hhh Dovresti solo cercare linux-headerse trovare quello buono per la tua architettura. Nel mio caso:

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

Quindi, nel mio caso, ho un'architettura a 64 bit, devo installare linux-headers-amd64.

Un'altra cosa è apt-get addnon esiste. Sostituisci apt-getcon apt-key.


2

Ho avuto l'errore KERN_DIR in CentOS. Revisionato lo script di installazione della shell e scoperto che imposta KERN_DIR su / usr / src / kernels. Quindi "uname -r" ha mostrato che stavo eseguendo una versione inferiore del kernel ... rispetto al codice sorgente in / usr / src / kernels.

Ho guardato /boot/grub/menu.lst ... e confermato la mancata corrispondenza del kernel. Strano.

Quindi la correzione era ... "yum -y update kernel", quindi riavviare. Quindi sono stati installati gli strumenti VMWare.


1

Provare:

yum install kernel* dkms gcc

Poi

yum install kernel-uek-devel

Quindi riavviare il computer


Debian usa apt-get, no yum.
RobinJ,

0

L'errore indica che vboxdrv/ vboxaddnon è possibile trovare i sorgenti del kernel.

Lo script prevede che la /lib/modules/$(uname -r)/buildcartella punti a /usr/src/kernels/$(uname -r)cui dovrebbe avere il Makefile in cui può eseguire l' kernelreleaseattività, in modo che possa confrontare con la versione del kernel attualmente installata ( uname -r).

Quindi se questo comando fallisce:

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

dovresti installare le intestazioni di Linux:

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

Per ulteriori dettagli, consulta questo post .


0

Per qualsiasi sistema operativo è necessario assicurarsi che siano installati tutti i pacchetti necessari. Nel mio caso su Debian mi mancavano i pacchetti dkms e linux-headers-generic.

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

Per le istruzioni complete, consultare questo post sul forum di VirtualBox .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.