Nie można zainstalować VIrtualboksa, „Określić KERN_DIR = <katalog>” - - instalujesz Virtual Box w Debianie?

38

Otrzymuję ten błąd:

Makefile: 181: *** Błąd: nie można znaleźć źródeł twojego aktualnego jądra Linuksa. Podaj KERN_DIR = i uruchom ponownie Make. Zatrzymać.

Zasadniczo robię:

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

Błąd to:

Makefile: 181: *** Błąd: nie można znaleźć źródeł twojego aktualnego jądra Linuksa. Podaj KERN_DIR = i uruchom ponownie Make. Zatrzymać

Co to jest ten błąd i jak go naprawić?

hhh
źródło

Odpowiedzi:

34

Upewnij się, że zainstalowałeś pakiet nagłówków jądra.

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)

EDYTOWAĆ:

Po prostu muszę go zainstalować na własnym serwerze i dostałem ten sam błąd, gdy próbuję używać virtualbox w repozytoriach Debiana. Poszedłem dalej i dodałem repozytorium VirtualBox i stamtąd zainstalowałem. Jest to lepsze, ponieważ są one bardziej aktualne.

Jako root

$ nano /etc/apt/sources.list 

Dodaj wiersz poniżej, aby ściśnąć

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

Następnie dodaj klucz publiczny Oracle dla apt-secure

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

następnie uruchom aktualizację i zainstaluj najnowszą wersję 4.2

apt-get update
apt-get install virtualbox-4.2

Zainstaluj pakiet dkms, aby upewnić się, że moduły jądra hosta VirtualBox są aktualne

apt-get install dkms

Powinno być dobrze. Dostałem te instrukcje ze strony VirtualBox dla Linuksa, która wydaje się być w tej chwili niedostępna, ale link to https://www.virtualbox.org/wiki/Linux_Downloads

Brandon
źródło
2
Polecenie apt-cache search linux-headers-$(uname -r)nic mi nie zwraca, mimo że wykonałem powyższe polecenia.
hhh
@ hhh Myślę, że ta odpowiedź jest dobra i powinna zostać zaakceptowana. Nie wiem, co chcesz z tymi ** nagłówkami linux - $ (uname -r) **. Wyjaśnij lub otwórz nowe pytanie. Myślę, że ten wątek jest zakończony.
Léo Léopold Hertz 준영
@ hhh Niektóre dystrybucje nie mają repozytoriów nagłówka linux. możesz to sprawdzić: computingforgeeks.com/2015/08/…
warmblue
Żadna z tych odpowiedzi nie działała dla mnie, ponieważ dystrybucja, którą pobrałem, miała starsze jądro niż dostępne w repozytorium. Musiałem biec apt-get update && apt-get -y dist-upgrade.
Platon,
29

Jak to naprawić w Fedorze / CentOS

Najpierw upewnij się, że zainstalowane pakiety (szczególnie jądro) są aktualne:

$ sudo yum update     

Jeśli zaktualizuje wersję jądra, będziesz musiał zrestartować, aby uname -rpasowała do nazwy katalogu w /usr/src/kernels/. Następnie

$ 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 

Po tej kompilacji moduły jądra VirtualBox powinny działać bez żadnych problemów.

Źródła:

użytkownik11153
źródło
1
Po wykonaniu powyższych kroków musiałem ponownie uruchomić system gościa przed ponowną instalacją dodatków gości vbox.
Reddy,
Był to właściwy pakiet do zainstalowania, jednak rekompilacja modułów jądra wymagała uprawnień administratora, a uruchomienie czegoś w katalogu głównym spowoduje utratę zmiennych środowiskowych (w tym KERN_DIR). Zamiast tego zrobiłem to sudo -s, export KERN_DIR=/usr/src/kernels/XXXale jestem pewien, że jest lepszy sposób na utrzymanie zmiennych w trybie sudo
Migwell
W moim przypadku (CentOS 6.7) [uname -r] to [2.6.32-573.el6.x86_64], ale [ls / usr / src / kernels /] drukuje [2.6.32-573.22.1.el6.x86_64] Zachowaj więc ostrożność i użyj aktualnej nazwy
katalogu
1
source ~/.bashrcustawić KERN_DIR w bieżącym środowisku bez konieczności ponownego uruchamiania.
Justin
Mam błędy, że to nie jest katalog. Zauważ, że na końcu wymaga ukośnika. Eksport echa KERN_DIR = / usr / src / kernels / uname -r/ >> ~ / .bashrc
Artjom Kurapov 30.09.16
2

@ hhh Powinieneś szukać linux-headersi znaleźć dobry dla swojej architektury. W moim przypadku:

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

Więc w moim przypadku mam architekturę 64-bitową, muszę zainstalować linux-headers-amd64.

Kolejna rzecz apt-get addnie istnieje. Zastąp apt-getprzez apt-key.

Adrien
źródło
2

Miałem błąd KERN_DIR w CentOS. Przejrzałem skrypt instalacyjny powłoki i stwierdził, że ustawia KERN_DIR na / usr / src / kernels. Potem „uname -r” pokazuje, że korzystałem z niższej wersji jądra ... niż kod źródłowy w / usr / src / kernels.

Spojrzałem na /boot/grub/menu.lst ... i potwierdziłem niedopasowanie jądra. Dziwne.

Naprawiono więc ... „mniam -j zaktualizuj jądro”, a następnie uruchom ponownie. Narzędzia VMWare zostały następnie zainstalowane.

użytkownik513000
źródło
1

Próbować:

yum install kernel* dkms gcc

Następnie

yum install kernel-uek-devel

Następnie uruchom ponownie komputer

Carlos
źródło
Debian używa apt-get, nie yum.
RobinJ
0

Błąd oznacza, że vboxdrv/ vboxaddnie można znaleźć źródeł jądra.

Skrypt oczekuje, że /lib/modules/$(uname -r)/buildfolder wskazuje, do /usr/src/kernels/$(uname -r)którego pliku Makefile powinien mieć miejsce, w którym może wykonać kernelreleasezadanie, aby mógł porównać go z aktualnie zainstalowaną wersją jądra ( uname -r).

Jeśli więc to polecenie się nie powiedzie:

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

powinieneś zainstalować nagłówki Linux poprzez:

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

Aby uzyskać więcej informacji, sprawdź ten post .

kenorb
źródło
0

W każdym systemie operacyjnym musisz upewnić się, że wszystkie potrzebne pakiety są zainstalowane. W moim przypadku na Debianie brakowało mi pakietów dkms i linux-headers-generic.

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

Aby uzyskać pełne instrukcje, zobacz ten post na forum VirtualBox .

teren
źródło