VIrtualbox स्थापित करने में असमर्थ, '' KERN_DIR = <निर्देशिका> "निर्दिष्ट करें" - डेबियन को वर्चुअल बॉक्स स्थापित करना?


38

मुझे यह त्रुटि मिल रही है:

Makefile: 181: *** त्रुटि: अपने वर्तमान लिनक्स कर्नेल के स्रोतों को खोजने में असमर्थ। 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: *** त्रुटि: अपने वर्तमान लिनक्स कर्नेल के स्रोतों को खोजने में असमर्थ। 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 रेपो को जोड़ा और वहां से इंस्टॉल किया। यह बेहतर है क्योंकि वे अधिक अद्यतित हैं।

जड़ के रूप में

$ nano /etc/apt/sources.list 

निचोड़ के लिए नीचे पंक्ति जोड़ें

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

फिर apt-Secure के लिए The Oracle public की कुंजी जोड़ें

$ 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 पैकेज स्थापित करें

apt-get install dkms

जाने के लिए अच्छा होना चाहिए। लिनक्स के लिए वर्चुअलबॉक्स की वेबसाइट से इन निर्देशों को प्राप्त करें जो इस समय नीचे की ओर लगता है लेकिन लिंक https://www.virtualbox.org/wiki/Linux_Downloads है


2
कमांड apt-cache search linux-headers-$(uname -r)मेरे लिए कुछ भी नहीं देता भले ही मैंने उपरोक्त कमांड किया था।
hhh

@ मुझे लगता है कि यह उत्तर एक अच्छा है, और स्वीकार किया जाना चाहिए। मुझे नहीं पता कि आप इस ** linux-headers के साथ क्या चाहते हैं - $ (uname -r) **। कृपया, एक नया प्रश्न स्पष्ट करें या खोलें। मुझे लगता है कि यह धागा समाप्त हो गया है।
लेओ लेपोल्ड हर्ट्ज़ '

@hhh कुछ वितरणों में लिनक्स-हेडर के रिपॉजिटरी नहीं हैं। आप इसे देख सकते हैं: कंप्यूटिंग
forgeeks.com/2015/08/…

इनमें से किसी भी उत्तर ने मेरे लिए काम नहीं किया क्योंकि मेरे द्वारा डाउनलोड किए गए डिस्ट्रो में पुराने कर्नेल की तुलना में रिपॉजिट उपलब्ध था। मुझे दौड़ना पड़ा apt-get update && apt-get -y dist-upgrade
प्लेटो

29

फेडोरा / सेंटोस के लिए इसे कैसे ठीक किया जाए

पहले सुनिश्चित करें कि आपके स्थापित पैकेज (विशेष रूप से कर्नेल) अद्यतित हैं:

$ 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 

इसके बाद वर्चुअलबॉक्स कर्नेल मॉड्यूल को बिना किसी समस्या के काम करना चाहिए।

सूत्रों का कहना है:


1
उपरोक्त चरणों को चलाने के बाद, फिर से vbox अतिथि परिवर्धन को पुन: स्थापित करने से पहले अतिथि सिस्टम को पुनरारंभ करना पड़ा।
रेड्डी

यह स्थापित करने के लिए सही पैकेज था, हालांकि कर्नेल मॉड्यूल को रूट विशेषाधिकार की आवश्यकता होती है, और रूट में कुछ चलाने से आपके पर्यावरण चर (KERN_DIR सहित) खो देंगे। मैंने इसके बजाय sudo -sपीछा किया, export KERN_DIR=/usr/src/kernels/XXXलेकिन मुझे यकीन है कि
सूडो

मेरे मामले में (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] इसलिए सावधान रहें और
jnr

1
source ~/.bashrcवर्तमान परिवेश में KERN_DIR को पुनः आरंभ किए बिना सेट करने के लिए।
जस्टिन

मुझे त्रुटियां मिलीं कि इसकी निर्देशिका नहीं है। ध्यान दें कि इसे अंत में स्लैश की आवश्यकता है .. इको एक्सपोर्ट 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-getद्वारा प्रतिस्थापित करें apt-key


2

मुझे CentOS में KERN_DIR त्रुटि हुई। शेल इंस्टॉल स्क्रिप्ट की समीक्षा की, और पाया कि यह KERN_DIR को / usr / src / kernels पर सेट करता है। फिर "uname -r" से पता चलता है कि मैं कर्नेल का निम्न संस्करण चला रहा था ... / usr / src / kernels के स्रोत कोड की तुलना में।

मैंने /boot/grub/menu.lst को देखा ... और कर्नेल बेमेल की पुष्टि की। अजीब।

तो ठीक था ... "yum- मैं अद्यतन कर्नेल", फिर रिबूट। VMWare टूल तब इंस्टॉल हो गए।


1

प्रयत्न:

yum install kernel* dkms gcc

फिर

yum install kernel-uek-devel

फिर अपनी मशीन को रिबूट करें


डेबियन का उपयोग करता है apt-get, नहीं yum
रॉबिनज

0

त्रुटि का अर्थ है कि vboxdrv/ vboxaddअपने कर्नेल के सूत्रों नहीं मिल रहा।

स्क्रिप्ट को उम्मीद है कि /lib/modules/$(uname -r)/buildफ़ोल्डर इंगित करता है /usr/src/kernels/$(uname -r)जिसके पास मेकफाइल होना चाहिए जहां वह kernelreleaseकार्य निष्पादित कर सकता है , इसलिए यह आपके वर्तमान स्थापित कर्नेल संस्करण ( uname -r) के खिलाफ तुलना कर सकता है ।

तो अगर यह कमांड विफल रहता है:

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

आपको लिनक्स हेडर इनस्टॉल करना चाहिए:

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

अधिक जानकारी के लिए, कृपया इस पोस्ट को देखें


0

किसी भी ओएस के लिए आपको यह सुनिश्चित करने की आवश्यकता है कि सभी आवश्यक पैकेज इंस्टॉल किए गए हैं। डेबियन पर मेरे मामले में मुझे संकुल dkms और लिनक्स-हेडर-जेनेरिक याद आ रहे थे।

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

पूर्ण निर्देशों के लिए यह वर्चुअलबॉक्स फोरम पोस्ट देखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.