सबसे पहले, इस लेख का शीर्षक बहुत कुछ वादा करता है। तो आइए इसे कम करें और उम्मीदों को संरेखित करें। शुरुआती बिंदु यह है कि आपने पहले वर्चुअलबॉक्स का उपयोग किया है, और आपके लिनक्स वर्चुअल मशीनों में अतिथि परिवर्धन स्थापित किया है। अब, किसी कारण से, वर्चुअलबॉक्स सेवा आपके अतिथि ऑपरेटिंग सिस्टम में नहीं चलती है। यदि आप मॉड्यूल को फिर से स्थापित करने का प्रयास करते हैं, तो आपको एक अजीब विफलता मिलती है, जो या तो खराब कर्नेल कॉन्फ़िगरेशन, अनुपलब्ध स्रोत और शीर्षलेख, और इसी तरह की समस्याओं को इंगित करती है। चीजें, इनमें से कोई भी समझ में नहीं आता है। पी>
आपके पास सही कर्नेल स्रोत और हेडर हैं, लेकिन किसी कारण से, वर्चुअलबॉक्स उन्हें नहीं देख रहा है, और इसलिए, मुख्य कर्नेल मॉड्यूल का संकलन विफल हो रहा है, जो बदले में आपकी वर्चुअल मशीनों के काम करने के तरीके को प्रभावित कर रहा है। इसके अलावा, ऐसा लगता है कि यह लगभग बेतरतीब ढंग से होता है, और यह कभी-कभी कर्नेल अपडेट के बाद होता है। इस सब को ध्यान में रखते हुए, अब हम कुछ साफ और सरल ट्रिक्स का उपयोग करके समस्या को हल करने का प्रयास करेंगे। पी>
अभी समस्या है
आइए एक CentOS वर्चुअल मशीन के साथ प्रदर्शित करें। आपके पास सभी आवश्यक निर्माण उपकरण हैं, और हमने यह अभ्यास पहले भी कई बार किया है, जिसमें वह समय भी शामिल है जब हमने इस ऑपरेटिंग सिस्टम के लिए एनवीडिया ड्राइवरों को सेटअप करने का प्रयास किया था। यहां भी यही कवायद लागू होती है। लेकिन भले ही आप अन्य डिस्ट्रोज़ चला रहे हों, फिर भी, संकलन करने में सक्षम होने के लिए सही उपकरण और सॉफ़्टवेयर प्राप्त करने की प्रक्रिया बहुत समान है। एक बार जब आप इसे लटका लेते हैं, तो यह आसान है। हालाँकि, मॉड्यूल बनाते समय (<माउंट>/VBoxLinuxAdditions.run), कमांड विफल हो जाता है:
पी>
वर्चुअलबॉक्स अतिथि परिवर्धन कर्नेल मॉड्यूल का निर्माण
वर्तमान चल रहे कर्नेल के शीर्षलेख नहीं मिले। यदि
निम्नलिखित मॉड्यूल संकलन विफल रहता है तो यह हो सकता है
कारण। लापता पैकेज शायद साथ स्थापित किया जा सकता है
यम कर्नेल-डेवेल स्थापित करें -...
मुख्य अतिथि परिवर्धन मॉड्यूल बनाना [विफल]
(यह जानने के लिए /var/log/vboxadd-install.log देखें कि क्या गलत हुआ)
लेकिन अगर आप कथित रूप से लापता पैकेज को स्थापित करने का प्रयास करते हैं:
पैकेज कर्नेल-डेवेल -... पहले से स्थापित और नवीनतम संस्करण
करने के लिए कुछ नहीं
समाधान
हमें लॉग्स से परामर्श करना चाहिए, और यह एक महान समस्या निवारण अभ्यास है, जो आपको अपने लिनक्स समस्या निवारण कौशल को सुधारने में मदद करेगा, यहाँ Dedoimedo पर अंतिम मिशन है। लॉग फ़ाइल खोलें, और अंदर झलकें। आपको आखिरी त्रुटि के साथ नीचे से ऊपर तक शुरू करना चाहिए और यह पता लगाने की कोशिश करनी चाहिए कि क्या हुआ। अधिक उल्लेखनीय त्रुटियों में से एक होगी:
त्रुटि:आपके वर्तमान लिनक्स कर्नेल के स्रोतों को खोजने में असमर्थ। KERN_DIR=
दिलचस्प। ऐसा लगता है कि वर्चुअलबॉक्स वास्तव में हमारे कर्नेल स्रोतों को नहीं देखता है। आइए फिर ठीक करें, और फिर यह देखने के लिए कमांड चलाएँ कि क्या हमने उस समस्या को ठीक कर दिया है जिसका हम सामना कर रहे हैं। पी>
निर्यात KERN_DIR=/usr/src/kernels/`uname -r`
ग्रेप:/lib/मॉड्यूल/3.10.0-123.20.1.el7.x86_64/build/include/
यह लगभग एक अजीब बग जैसा लगता है, क्योंकि हम जानते हैं कि yum कमांड रिटर्न के रूप में हमारे पास हेडर हैं। यदि हम चल रहे कर्नेल के लिए मैन्युअल रूप से /lib/मॉड्यूल निर्देशिका में cd करते हैं, तो हम देख सकते हैं कि हम वास्तव में एक टूटे हुए प्रतीकात्मक लिंक का सामना कर रहे हैं। पी>
पी>
बिल्ड लिंक एक सापेक्ष पथ की ओर इशारा करता है, जो कभी भी एक अच्छा विचार नहीं है, और इस प्रकार, वर्चुअलबॉक्स अपेक्षित सॉफ़्टवेयर खोजने में असमर्थ है। हम एक निरपेक्ष पथ का उपयोग करके इसे ठीक कर देंगे, और इस तरह इस मुद्दे को पूरी तरह से टाल देंगे। पी>
सीडी / लिब / मॉड्यूल / 'अनाम -आर' /
अब, सांकेतिक कड़ियों को ठीक कर दिया गया है:
पी>
और हम ख़ुशी से संकलित कर सकते हैं:
पी>
हम अपने ट्यूटोरियल के अंत तक पहुँच चुके हैं, वह थोड़ा समझदार, होशियार, अधिक आराम से, खुश। इस तरह की समस्याएं वास्तव में लोगों को पागल कर सकती हैं, क्योंकि ऐसे दर्जनों झूठे सकारात्मक लक्षण हैं जो समान त्रुटियां पैदा कर सकते हैं। लेकिन अगर हम बिल्ड मुद्दों को बाहर करते हैं, याद रखें कि यह ठीक काम करता था, तो हम वर्चुअलबॉक्स बनाम कर्नेल असंगतता के बारे में भूल सकते हैं और कहीं और देख सकते हैं। पी>
हमारे मामले में, एक बुरी तरह से लागू किया गया सांकेतिक लिंक हमारी सभी समस्याओं का स्रोत [sic] है। इसका कारण, मैं निश्चित नहीं हूँ, या यह क्यों बदला है, लेकिन हो सकता है कि कुछ स्थापित पैकेजों ने इसे बदल दिया हो, या सिस्टम में कुछ ने गलत व्यवहार करने का निर्णय लिया हो। महत्वपूर्ण बिट यह है कि हम कार्य प्रवाह को समझते हैं, और हम इसे वापस ट्रेस कर सकते हैं और समस्या को ठीक कर सकते हैं। बहुत बढ़िया सही? खैर, यह हमारे गाइड को पूरा करता है। आनंद लेना। पी>
प्रोत्साहित करना। पी>
linux/version.h:ऐसी कोई फ़ाइल या निर्देशिका
ln -sf /usr/src/kernels/3.10.63-11.el7.x86_64 बिल्ड निष्कर्ष