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. Стоп

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

7 ответов7

35

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

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.

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 должны работать без проблем.

Источники:

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 .

1

Пытаться:

yum install kernel* dkms gcc

затем

yum install kernel-uek-devel

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

1

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

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

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

0

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

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

Полные инструкции см. В этом сообщении на форуме VirtualBox.

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)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .