Impossible d’installer VIrtualbox, `“ Spécifiez KERN_DIR = <répertoire> ”` - installation de Virtual Box sur Debian?

38

Je reçois cette erreur:

Makefile: 181: *** Erreur: impossible de trouver les sources de votre noyau Linux actuel. Spécifiez KERN_DIR = et exécutez à nouveau Make. Arrêtez.

Fondamentalement je fais:

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

Et l'erreur est la suivante:

Makefile: 181: *** Erreur: impossible de trouver les sources de votre noyau Linux actuel. Spécifiez KERN_DIR = et exécutez à nouveau Make. Arrêtez

Quelle est cette erreur et comment y remédier?

hhh
la source

Réponses:

34

Assurez-vous d’installer le paquetage des en-têtes de noyau.

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)

MODIFIER:

Je dois juste l’installer également sur mon propre serveur et avoir la même erreur en essayant d’utiliser la virtualbox dans le dépôt Debian. Je suis allé de l'avant et ajouté VirtualBox repo et installé à partir de là. C'est mieux car ils sont plus à jour.

En tant que root

$ nano /etc/apt/sources.list 

Ajouter la ligne ci-dessous pour squeeze

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

Ajoutez ensuite la clé publique Oracle pour apt-secure

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

puis lancez update et d'installer la dernière version 4.2

apt-get update
apt-get install virtualbox-4.2

Installez le package dkms pour vous assurer que les modules du noyau de l'hôte VirtualBox sont à jour.

apt-get install dkms

Devrait être bon pour aller. Vous avez ces instructions sur le site Web de VirtualBox pour Linux qui semble être en panne pour le moment, mais le lien est https://www.virtualbox.org/wiki/Linux_Downloads

Brandon
la source
2
La commande apt-cache search linux-headers-$(uname -r)ne me renvoie rien, même si j’ai exécuté les commandes ci-dessus.
hhh
@hhh Je pense que cette réponse est bonne et devrait être acceptée. Je ne sais pas ce que vous voulez avec ce ** linux-headers - $ (uname -r) **. S'il vous plaît, expliquez ou ouvrez une nouvelle question. Je pense que ce fil est fini.
Léo Léopold Hertz
@hhh Certaines distributions ne possèdent pas les référentiels de l'en-tête linux. vous pouvez vérifier celui-ci: computingforgeeks.com/2015/08/…
warmblue
Aucune de ces réponses n'a fonctionné pour moi car la distribution que j'ai téléchargée avait un noyau plus ancien que celui disponible dans les repos. Je devais courir apt-get update && apt-get -y dist-upgrade.
Plato
29

Comment résoudre ce problème pour Fedora / CentOS

Tout d’abord, assurez-vous que vos paquets installés (en particulier le noyau) sont à jour:

$ sudo yum update     

S'il met à jour la version du noyau, vous devrez le redémarrer pour qu'il uname -rcorresponde au nom du répertoire dans /usr/src/kernels/. ensuite

$ 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 

Après cette compilation, les modules du noyau VirtualBox devraient fonctionner sans aucun problème.

Sources:

utilisateur11153
la source
1
Après avoir exécuté les étapes ci-dessus, il a fallu redémarrer le système invité avant de réinstaller les ajouts d'invité vbox.
Reddy
C’était le bon paquet à installer. Cependant, la recompilation des modules du noyau nécessitait des privilèges root, et l’exécution de quelque chose à la racine perdrait vos variables d’environnement (y compris KERN_DIR). J'ai plutôt sudo -ssuivi, export KERN_DIR=/usr/src/kernels/XXXmais je suis sûr qu'il existe un meilleur moyen de conserver les variables en mode sudo
Migwell
Dans mon cas (CentOS 6.7) [uname -r] correspond à [2.6.32-573.el6.x86_64], mais [ls / usr / src / kernels /] est imprimé [2.6.32-573.22.1.el6.x86_64] Soyez donc prudent et utilisez le nom du
répertoire
1
source ~/.bashrcdéfinir KERN_DIR dans l’environnement actuel sans avoir à redémarrer.
Justin
J'ai eu des erreurs que ce n'est pas un répertoire. Notez qu'il faut une barre oblique à la fin. Echo export KERN_DIR = / usr / src / kernels / uname -r/ >> ~ / .bashrc
Artjom Kurapov
2

@hhh Vous devriez rechercher linux-headerset trouver celui qui convient à votre architecture. Dans mon cas:

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

Donc, dans mon cas, j'ai une architecture 64 bits, je dois l'installer linux-headers-amd64.

Une autre chose est apt-get addn'existe pas. Remplacer apt-getpar apt-key.

Adrien
la source
2

J'ai eu l'erreur KERN_DIR dans CentOS. A examiné le script d'installation du shell et a constaté qu'il définit KERN_DIR sur / usr / src / kernels. Ensuite, "uname -r" a montré que j'exécutais une version inférieure du noyau ... plutôt que le code source sous / usr / src / kernels.

J'ai regardé /boot/grub/menu.lst ... et confirmé l'inadéquation du noyau. Bizarre.

Donc, correctif était ... "noyau de mise à jour yum -y", puis redémarrez. Les outils VMWare se sont ensuite installés.

utilisateur513000
la source
1

Essayer:

yum install kernel* dkms gcc

ensuite

yum install kernel-uek-devel

Puis redémarrez votre machine

Carlos
la source
Debian utilise apt-get, pas yum.
RobinJ
0

L'erreur signifie que vboxdrv/ vboxaddne peut pas trouver vos sources de noyau.

Le script s'attend à ce que ce /lib/modules/$(uname -r)/builddossier /usr/src/kernels/$(uname -r)soit doté d'un fichier Makefile sur lequel il puisse exécuter une kernelreleasetâche, de sorte qu'il puisse être comparé à la version de votre noyau ( uname -r) installée actuellement .

Donc si cette commande échoue:

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

vous devriez installer les en-têtes Linux en:

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

Pour plus de détails, s'il vous plaît vérifier ce post .

Kenorb
la source
0

Pour tout système d'exploitation, vous devez vous assurer que tous les packages nécessaires sont installés. Dans mon cas sous Debian, il me manquait les paquets dkms et linux-headers-generic.

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

Pour des instructions complètes, voir cet article du forum VirtualBox .

site
la source