No se puede instalar VIrtualbox, `“ Specify KERN_DIR = <directory> ”` - ¿Instalando Virtual Box en Debian?

38

Recibo este error:

Makefile: 181: *** Error: no se pueden encontrar las fuentes de su núcleo Linux actual. Especifique KERN_DIR = y ejecute Make nuevamente. Detener.

Básicamente estoy haciendo:

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

Y el error es:

Makefile: 181: *** Error: no se pueden encontrar las fuentes de su núcleo Linux actual. Especifique KERN_DIR = y ejecute Make nuevamente. Detener

¿Qué es este error y cómo solucionarlo?

hhh
fuente

Respuestas:

34

Asegúrese de instalar Kernel Headers Package.

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)

EDITAR:

Simplemente necesito instalarlo también en mi propio servidor y recibí el mismo error al intentar usar el virtualbox en repositorios de Debian. Seguí adelante y agregué el repositorio VirtualBox e instalé desde allí. Esto es mejor porque están más actualizados.

Como raíz

$ nano /etc/apt/sources.list 

Agregue la línea a continuación para apretar

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

Luego agregue la clave pública The Oracle para apt-secure

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

luego ejecute la actualización e instale la última versión 4.2

apt-get update
apt-get install virtualbox-4.2

Instale el paquete dkms para asegurarse de que los módulos del núcleo del host VirtualBox estén actualizados

apt-get install dkms

Debería ser bueno para ir. Obtuve estas instrucciones del sitio web de VirtualBox para Linux, que parece estar inactivo en este momento, pero el enlace es https://www.virtualbox.org/wiki/Linux_Downloads

Brandon
fuente
2
El comando apt-cache search linux-headers-$(uname -r)no me devuelve nada aunque hice los comandos anteriores.
hhh
@hhh Creo que esta respuesta es buena y debería aceptarse. No sé lo que quieres con este ** linux-headers - $ (uname -r) **. Por favor, explique o abra una nueva pregunta. Creo que este hilo está terminado.
Léo Léopold Hertz 준영
@hhh Algunas distribuciones no tienen los repositorios del encabezado de Linux. puedes consultar este: computingforgeeks.com/2015/08/…
warmblue
Ninguna de estas respuestas funcionó para mí porque la distribución que descargué tenía un núcleo más antiguo que el disponible en repositorios. Tuve que correr apt-get update && apt-get -y dist-upgrade.
Platón el
29

Cómo arreglar esto para Fedora / CentOS

Primero asegúrese de que sus paquetes instalados (especialmente el núcleo) estén actualizados:

$ sudo yum update     

Si actualiza la versión del kernel, deberá reiniciar para que uname -rcoincida con el nombre del directorio /usr/src/kernels/. Luego

$ 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 

Después de esta compilación, los módulos del núcleo VirtualBox deberían funcionar sin ningún problema.

Fuentes:

usuario11153
fuente
1
Después de ejecutar los pasos anteriores, tuve que reiniciar el sistema de invitado antes de reinstalar las adiciones de invitado de vbox nuevamente.
Reddy
Este fue el paquete correcto para instalar, sin embargo, recompilar los módulos del núcleo requiere privilegios de root, y ejecutar algo en root perderá las variables de entorno (incluido KERN_DIR). En cambio, lo sudo -sseguí export KERN_DIR=/usr/src/kernels/XXXpero estoy seguro de que hay una mejor manera de persistir las variables en el modo sudo
Migwell
En mi caso (CentOS 6.7) [uname -r] es [2.6.32-573.el6.x86_64], pero [ls / usr / src / kernels /] imprime [2.6.32-573.22.1.el6.x86_64] Así que tenga cuidado y use el nombre real del directorio actual
jnr
1
source ~/.bashrcconfigurar KERN_DIR en el entorno actual sin tener que reiniciar.
Justin
Tengo errores que no es un directorio. Tenga en cuenta que necesita una barra al final ... echo export KERN_DIR = / usr / src / kernels / uname -r/ >> ~ / .bashrc
Artjom Kurapov
2

@hhh Deberías buscar solo linux-headersy encontrar la buena para tu arquitectura. En mi 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)

Entonces, en mi caso, tengo una arquitectura de 64 bits, tengo que instalar linux-headers-amd64.

Otra cosa es apt-get addque no existe. Reemplazar apt-getpor apt-key.

Adrien
fuente
2

Tuve el error KERN_DIR en CentOS. Revisó el script de instalación de shell y descubrió que establece KERN_DIR en / usr / src / kernels. Luego, "uname -r" muestra que estaba ejecutando una versión inferior del kernel ... que el código fuente en / usr / src / kernels.

Miré /boot/grub/menu.lst ... y confirmó la falta de coincidencia del kernel. Extraño.

Así que la solución fue ... "yum -y update kernel", luego reinicie. Las herramientas VMWare se instalaron.

usuario513000
fuente
1

Tratar:

yum install kernel* dkms gcc

Luego

yum install kernel-uek-devel

Luego reinicie su máquina

Carlos
fuente
Debian usa apt-get, no yum.
RobinJ
0

El error significa que vboxdrv/ vboxaddno puedo encontrar las fuentes de su núcleo.

El script espera que la /lib/modules/$(uname -r)/buildcarpeta señale a /usr/src/kernels/$(uname -r)quién debe tener el Makefile donde puede ejecutar la kernelreleasetarea, por lo que se puede comparar con la versión de kernel instalada actualmente ( uname -r).

Entonces, si este comando falla:

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

debe instalar los encabezados de Linux de la siguiente manera:

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

Para más detalles, consulte esta publicación .

kenorb
fuente
0

Para cualquier sistema operativo, debe asegurarse de que todos los paquetes necesarios estén instalados. En mi caso en Debian me faltaban los paquetes dkms y linux-headers-generic.

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

Para obtener instrucciones completas, consulte esta publicación del foro VirtualBox .

sitio
fuente