ไม่สามารถติดตั้ง VIrtualbox ได้ `“ ระบุ KERN_DIR = <directory>”” - ติดตั้ง Virtual Box ไปยัง 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

ตรวจสอบให้แน่ใจว่าคุณติดตั้ง Kernel Headers Package

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 repos ฉันไปข้างหน้าและเพิ่ม VirtualBox repo และติดตั้งจากที่นั่น สิ่งนี้ดีกว่าเพราะเป็นข้อมูลล่าสุด

ในฐานะที่เป็นราก

$ nano /etc/apt/sources.list 

เพิ่มบรรทัดด้านล่างเพื่อบีบ

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

จากนั้นเพิ่มคีย์สาธารณะของ Oracle เพื่อความปลอดภัย

$ 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-headers - $ (uname -r) ** กรุณาอธิบายหรือเปิดคำถามใหม่ ฉันคิดว่ากระทู้นี้เสร็จแล้ว
LéoLéopold Hertz

@hhh การกระจายบางอย่างไม่มีที่เก็บของ linux-header คุณสามารถตรวจสอบสิ่งนี้ได้ที่: computingforgeeks.com/2015/08/ …
warmblue

ไม่มีคำตอบเหล่านี้สำหรับฉันเพราะ distro ที่ฉันดาวน์โหลดมีเคอร์เนลเก่ากว่าที่มีใน repos 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 เพิ่มเติมของผู้ใช้อีกครั้ง
Reddy

นี่เป็นแพคเกจที่ถูกต้องในการติดตั้งอย่างไรก็ตามการคอมไพล์โมดูลเคอร์เนลใหม่จำเป็นต้องมีสิทธิ์ใช้งานรูทและการใช้งานบางอย่างในรูทจะทำให้สูญเสียตัวแปรสภาพแวดล้อม ฉันทำ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] ดังนั้นระวังและใช้ชื่อ dir ที่แท้จริงที่มีอยู่จริง
jnr

1
source ~/.bashrcเพื่อตั้งค่า KERN_DIR ในสภาพแวดล้อมปัจจุบันโดยไม่ต้องรีสตาร์ท
Justin

ฉันพบข้อผิดพลาดที่ไม่ใช่ไดเรกทอรี โปรดทราบว่ามันต้องการสแลชที่ส่วนท้าย .. echo export KERN_DIR = / usr / src / kernels / 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-getapt-key


2

ฉันมีข้อผิดพลาด KERN_DIR ใน CentOS ตรวจสอบสคริปต์การติดตั้งเชลล์และพบว่าตั้งค่า KERN_DIR เป็น / usr / src / kernels จากนั้น "uname -r" แสดงว่าฉันใช้เคอร์เนลเวอร์ชันต่ำกว่า ... กว่าซอร์สโค้ดภายใต้ / usr / src / kernels

ฉันดู /boot/grub/menu.lst ... และยืนยันเคอร์เนลไม่ตรงกัน แปลก.

ดังนั้นการแก้ไขคือ ... "yum -y update kernel" จากนั้นรีบูต เครื่องมือ VMWare ได้รับการติดตั้งแล้ว



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นี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.