Não foi possível instalar o VIrtualbox, `“ Especifique KERN_DIR = <diretório> ”` - instalando o Virtual Box no Debian?

38

Estou recebendo este erro:

Makefile: 181: *** Erro: não foi possível encontrar as fontes do seu kernel Linux atual. Especifique KERN_DIR = e execute Make novamente. Pare.

Basicamente eu estou fazendo:

$ 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 o erro é:

Makefile: 181: *** Erro: incapaz de encontrar as fontes do seu kernel Linux atual. Especifique KERN_DIR = e execute Make novamente. Pare

O que é esse erro e como corrigi-lo?

hhh
fonte

Respostas:

34

Certifique-se de instalar o pacote de cabeçalhos do 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)

EDITAR:

Por acaso, preciso instalá-lo também no meu próprio servidor e recebi o mesmo erro ao tentar usar a caixa virtual nos repositórios debian. Fui em frente e adicionei o repositório VirtualBox e instalei a partir daí. Isso é melhor porque eles estão mais atualizados.

Como raiz

$ nano /etc/apt/sources.list 

Adicionar linha abaixo para apertar

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

Em seguida, adicione a chave pública The Oracle para apt-secure

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

execute a atualização e instale a versão 4.2 mais recente

apt-get update
apt-get install virtualbox-4.2

Instale o pacote dkms para garantir que os módulos do kernel do host VirtualBox estejam atualizados

apt-get install dkms

Deveria estar bom para ir. Obtenha estas instruções no site da VirtualBox para Linux, que parece estar desativado no momento, mas o link é https://www.virtualbox.org/wiki/Linux_Downloads

Brandon
fonte
2
O comando apt-cache search linux-headers-$(uname -r)não retorna nada para mim, embora eu tenha feito os comandos acima.
hhh
@hhh Acho que essa resposta é boa e deve ser aceita. Eu não sei o que você quer com este ** linux-headers - $ (uname -r) **. Por favor, explique ou abra uma nova pergunta. Eu acho que esta discussão está concluída.
Léo Léopold Hertz,
@hhh Algumas distribuições não têm os repositórios do linux-header. você pode verificar este: computingforgeeks.com/2015/08/…
warmblue
Nenhuma dessas respostas funcionou para mim porque a distribuição que baixei tinha um kernel mais antigo que o disponível em repositórios. Eu tive que correr apt-get update && apt-get -y dist-upgrade.
Platão
29

Como corrigir isso no Fedora / CentOS

Primeiro, verifique se seus pacotes instalados (especialmente o kernel) estão atualizados:

$ sudo yum update     

Se ele atualizar a versão do kernel, você precisará reiniciar para que uname -rcorresponda ao nome do diretório /usr/src/kernels/. Então

$ 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 

Após esta compilação, os módulos do kernel do VirtualBox devem funcionar sem problemas.

Fontes:

user11153
fonte
1
Após executar as etapas acima, foi necessário reiniciar o sistema convidado antes de reinstalar as adições de convidados vbox novamente.
Reddy
Este era o pacote certo para instalar, no entanto, recompilar os módulos do kernel exigia privilégios de root, e executar algo no root perderia suas variáveis ​​de ambiente (incluindo KERN_DIR). I vez que sudo -sseguido por export KERN_DIR=/usr/src/kernels/XXXmas eu tenho certeza que há uma maneira melhor de persistir variáveis em modo sudo
Migwell
No meu caso (CentOS 6.7) [uname -r] é [2.6.32-573.el6.x86_64], mas [ls / usr / src / kernels /] imprime [2.6.32-573.22.1.el6.x86_64] Portanto, tenha cuidado e utilize real existente dir nome
jnr
1
source ~/.bashrcpara definir KERN_DIR no ambiente atual sem precisar reiniciar.
Justin
Eu tenho erros que não é um diretório. Note que ele precisa de uma barra no final .. eco exportação KERN_DIR = / usr / src / kernels / uname -r/ >> ~ / .bashrc
Artjom Kurapov
2

@hhh Você deve procurar apenas linux-headerse encontrar o melhor para sua arquitetura. No meu 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)

Portanto, no meu caso, tenho uma arquitetura de 64 bits, tenho que instalar linux-headers-amd64.

Outra coisa é apt-get addque não existe. Substitua apt-getpor apt-key.

Adrien
fonte
2

Eu tive o erro KERN_DIR no CentOS. Analisou o script de instalação do shell e descobriu que ele define KERN_DIR como / usr / src / kernels. Então "uname -r" mostra que eu estava executando uma versão inferior do kernel ... que o código fonte em / usr / src / kernels.

Eu olhei para /boot/grub/menu.lst ... e confirmei a incompatibilidade do kernel. Esquisito.

Então, a correção foi ... "yum -y update kernel" e reinicie. As ferramentas VMWare foram instaladas.

user513000
fonte
1

Experimentar:

yum install kernel* dkms gcc

Então

yum install kernel-uek-devel

Em seguida, reinicie sua máquina

Carlos
fonte
O Debian usa apt-get, não yum.
precisa saber é o seguinte
0

O erro significa que vboxdrv/ vboxaddnão é possível encontrar as fontes do kernel.

O script espera que a /lib/modules/$(uname -r)/buildpasta aponte para a /usr/src/kernels/$(uname -r)qual deve haver o Makefile onde ele pode executar a kernelreleasetarefa, para que possa ser comparado com a versão atual do kernel instalada ( uname -r).

Portanto, se este comando falhar:

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

você deve instalar os cabeçalhos do Linux:

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

Para mais detalhes, consulte este post .

kenorb
fonte
0

Para qualquer sistema operacional, você precisa garantir que todos os pacotes necessários estejam instalados. No meu caso no Debian, estavam faltando os pacotes dkms e linux-headers-generic.

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

Para obter instruções completas, consulte esta postagem no fórum do VirtualBox .

local
fonte