Не вдається встановити VIrtualbox, `" Вкажіть KERN_DIR = <директорія> "` - встановлення віртуальної скриньки в Debian?


38

Я отримую цю помилку:

Makefile: 181: *** Помилка: не вдалося знайти джерела вашого поточного ядра Linux. Вкажіть KERN_DIR = і запустіть Зробити ще раз. Стій.

В основному я роблю:

$ 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 = і запустіть Зробити ще раз. Стій

Що це за помилка і як її виправити?

Відповіді:


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 в rebian debian. Я пішов вперед і додав VirtualBox repo та встановив звідти. Це краще, оскільки вони є більш сучасними.

Як корінь

$ nano /etc/apt/sources.list 

Додайте рядок нижче для видавлювання

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

Потім додайте відкритий ключ The 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-заголовками - $ (unme -r) **. Будь ласка, поясніть або відкрийте нове запитання. Я думаю, що ця нитка закінчена.
Лео Леопольд Герц 준영

@hhh У деяких дистрибутивах немає сховищ linux-header. ви можете перевірити це: 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.
Редді

Це був правильний пакет для встановлення, однак перекомпіляція модулів ядра вимагає кореневих привілеїв, а запуск чогось у root втратить ваші змінні середовища (включаючи 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 / kernel /] [2.6.32-573.22.1.el6.x86_64] Тому будьте обережні і використовуйте фактичну назву реж.
jnr

1
source ~/.bashrcщоб встановити KERN_DIR в поточному середовищі без необхідності перезавантаження.
Джастін

Я отримав помилки, що це не каталог. Зауважте, що йому потрібна коса риса в кінці .. ехо експорт KERN_DIR = / usr / src / ядра / uname -r/ >> ~ / .bashrc
Artjom Kurapov

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 / ядра. Тоді "uname -r" показує, що я запускаю нижчу версію ядра ..., ніж вихідний код під / usr / src / ядрами.

Я переглянув /boot/grub/menu.lst ... і підтвердив невідповідність ядра. Дивно.

Отже, виправлення було ... "yum -y ядро ​​оновлення", а потім перезавантажте. Потім було встановлено інструменти 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.