Невозможно установить VIrtualbox, `« Указать KERN_DIR = <каталог> »` - установить Virtual Box в Debian?


38

Я получаю эту ошибку:

Makefile: 181: *** Ошибка: невозможно найти источники вашего текущего ядра Linux. Укажите KERN_DIR = и снова запустите Make. Стоп.

В основном я делаю:

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

И ошибка:

Makefile: 181: *** Ошибка: невозможно найти источники вашего текущего ядра Linux. Укажите KERN_DIR = и снова запустите Make. Стоп

Что это за ошибка и как ее исправить?

Ответы:


34

Убедитесь, что вы установили пакет заголовков ядра.

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)

РЕДАКТИРОВАТЬ:

Мне просто нужно установить его также на моем собственном сервере и получил ту же ошибку при попытке использовать virtualbox в репозиториях Debian. Я пошел дальше и добавил репозиторий VirtualBox и установил оттуда. Это лучше, потому что они более современны.

Как корень

$ nano /etc/apt/sources.list 

Добавьте строку ниже для сжатия

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

Затем добавьте открытый ключ Oracle для apt-secure.

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

затем запустить обновление и установить последнюю версию 4.2

apt-get update
apt-get install virtualbox-4.2

Установите пакет dkms, чтобы обеспечить актуальность модулей ядра узла VirtualBox

apt-get install dkms

Должно быть хорошо идти. Получил эти инструкции с сайта VirtualBox для Linux, который сейчас недоступен, но ссылка на него https://www.virtualbox.org/wiki/Linux_Downloads.


2
Команда apt-cache search linux-headers-$(uname -r)ничего не возвращает для меня, хотя я выполнил вышеуказанные команды.
HHH

@hhh Я думаю, что этот ответ хороший, и его следует принять. Я не знаю, что вы хотите с этим ** linux-заголовками - $ (uname -r) **. Пожалуйста, объясните или откройте новый вопрос. Я думаю, что эта тема закончена.
Лео Леопольд Герц 준영

@hhh В некоторых дистрибутивах нет репозиториев заголовка linux. Вы можете проверить это: computingforgeeks.com/2015/08/…
warmblue

Ни один из этих ответов не сработал для меня, потому что загруженный мной дистрибутив имел более старое ядро, чем в репозиториях. Я должен был бежать apt-get update && apt-get -y dist-upgrade.
Платон

29

Как это исправить для Fedora / CentOS

Сначала убедитесь, что ваши установленные пакеты (особенно ядро) обновлены:

$ sudo yum update     

Если он обновляет версию ядра, вам придется перезапустить его, чтобы оно uname -rсовпадало с именем каталога в /usr/src/kernels/. затем

$ 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 

После этой компиляции модули ядра VirtualBox должны работать без проблем.

Источники:


1
После выполнения вышеуказанных шагов пришлось перезагрузить гостевую систему перед повторной установкой гостевых дополнений vbox.
Редди

Это был правильный пакет для установки, однако для перекомпиляции модулей ядра требовались права суперпользователя, а запуск чего-либо в корне приведет к потере переменных среды (включая KERN_DIR). Вместо этого я sudo -sпоследовал, export KERN_DIR=/usr/src/kernels/XXXно я уверен, что есть лучший способ сохранить переменные в режиме sudo
Migwell

В моем случае (CentOS 6.7) [uname -r] равен [2.6.32-573.el6.x86_64], но [ls / usr / src / kernels /] печатает [2.6.32-573.22.1.el6.x86_64] Так что будьте осторожны и используйте фактическое существующее имя
режиссера

1
source ~/.bashrcустановить KERN_DIR в текущей среде без перезагрузки.
Джастин

Я получил ошибки, что это не каталог. Обратите внимание, что в конце нужна косая черта .. echo export KERN_DIR = / usr / src / kernels / uname -r/ >> ~ / .bashrc
Артём Курапов

2

@hhh Вы должны искать только linux-headersи найти подходящий для вашей архитектуры. В моем случае:

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

Так что, в моем случае, у меня есть 64-битная архитектура, я должен установить linux-headers-amd64.

Другое дело apt-get addне существует. Заменить apt-getна apt-key.


2

У меня была ошибка KERN_DIR в CentOS. Изучил скрипт установки оболочки и обнаружил, что он устанавливает KERN_DIR в / usr / src / kernels. Затем "uname -r" показывает, что я использую более низкую версию ядра ... чем исходный код в / usr / src / kernels.

Я посмотрел на /boot/grub/menu.lst ... и подтвердил несоответствие ядра. Weird.

Так что исправить было ... "yum -y update kernel", затем перезагрузите компьютер. Инструменты VMWare тогда были установлены.


1

Пытаться:

yum install kernel* dkms gcc

затем

yum install kernel-uek-devel

Затем перезагрузите машину


Debian использует apt-get, а не yum.
RobinJ

0

Ошибка означает, что vboxdrv/ vboxaddне удается найти исходные коды ядра.

Сценарий ожидает, что /lib/modules/$(uname -r)/buildпапка указывает на /usr/src/kernels/$(uname -r)файл Makefile, в котором она может выполнить kernelreleaseзадачу, чтобы она могла сравниваться с текущей установленной версией ядра ( uname -r).

Итак, если эта команда не выполняется:

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

Вы должны установить заголовки Linux:

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

Для получения более подробной информации, пожалуйста, проверьте этот пост .


0

Для любой ОС вам необходимо убедиться, что все необходимые пакеты установлены. В моем случае на Debian мне не хватало пакетов dkms и linux-headers-generic.

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

Для получения полных инструкций смотрите это сообщение на форуме VirtualBox .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.