KVM और VirtualBox कथित तौर पर सह-अस्तित्व में नहीं रह सकते, या बल्कि, VirtualBox नहीं चलेगा जबकि KVM मॉड्यूल मेमोरी में लोड हैं। KVM VirtualBox के साथ ठीक काम कर सकता है, इसलिए यह एक तरफा समस्या है, वास्तव में। इसे हल करना भी आसान है। दुर्भाग्य से, मैं कई भयानक ट्यूटोरियल में आया हूँ जो या तो इस या उस उत्पाद को अनइंस्टॉल करने की सलाह देते हैं। और उन समझदार गाइड्स में से जो कम कठोर समाधान के लिए जाते हैं, अधिकांश बस आपको rmmod यह या वह करने के लिए कहते हैं, लेकिन वे आपको यह नहीं बताते कि चीजों को फिर से कैसे चलाया जाए।
मैं आपको दिखाऊंगा कि KVM और VirtualBox को एक साथ कैसे उपयोग करें, बिना किसी को अनइंस्टॉल किए या उपयोग के बीच रीबूट किए। आप सीखेंगे कि उत्पादों को कैसे अक्षम और सक्षम करें ताकि विरोधी समकक्ष चल सके। इन विवो, कोई रीबूट नहीं। आइए करते हैं।
लक्षण - VirtualBox नहीं चलेगा
जब आप VirtualBox लॉन्च करते हैं तो आप इस तरह की त्रुटि देख सकते हैं:
यह कहता है, VirtualBox VMX रूट मोड में काम नहीं कर सकता। कृपया KVM कर्नेल एक्सटेंशन को अक्षम करें, अपने कर्नेल को पुनः संकलित करें और रीबूट करें। वाह, वाह, धीमा करें। यह एक बहुत ही गीकी और डरावना संदेश है। किसी भी चीज़ को पुनः संकलित करने की कोई आवश्यकता नहीं है। फिक्स में पांच सेकंड लगते हैं और यह पूरी तरह से गैर-विनाशकारी है।
समस्या समझाई गई
VirtualBox और KVM एक साथ काम नहीं कर सकते। इसका मतलब है कि अगर हम VirtualBox चलाना चाहते हैं तो KVM को अक्षम करने की आवश्यकता है। सवाल यह है कि हम यह कैसे करते हैं। जवाब है: कर्नेल मॉड्यूल डालकर और हटाकर।
लिनक्स ऑपरेटिंग सिस्टम रीबूट के बिना, ऑन-द-फ्लाई कर्नेल मॉड्यूल के सम्मिलन और हटाने का समर्थन करता है। इसका मतलब है कि आप कर्नेल मॉड्यूल को मेमोरी में और उससे लोड और अनलोड कर सकते हैं। अधिक विवरण मेरे लिनक्स कमांड लेख और क्रैश बुक में।
हम जो चाहते हैं उसे प्राप्त करने के लिए, हम insmod और rmmod कमांड का उपयोग करेंगे।
मॉड्यूल हटाएं
आइए कर्नेल स्पेस की जांच करें। हम पहले lsmod कमांड जारी करेंगे, यह देखने के लिए कि कौन से मॉड्यूल मेमोरी में लोड हैं:
जैसा कि आप देख सकते हैं, VirtualBox vboxdrv और vboxnetflt ड्राइवरों का उपयोग करता है, जबकि KVM kvm और kvm_intel ड्राइवरों का उपयोग करता है। नोट: kvm_intel इंटेल आर्किटेक्चर के लिए विशिष्ट है। AMD प्लेटफॉर्म के लिए kvm_amd है। हमें KVM मॉड्यूल अनलोड करने की आवश्यकता है।
/sbin/rmmod kvm_intel
/sbin/rmmod kvm
बड़ा सवाल: लेकिन अब, KVM चला गया। मैं इसे वापस कैसे पा सकता हूँ, कृपया?
आह, बहुत अच्छा! आइए देखें कि हम कैसे पुनर्प्राप्त कर सकते हैं।
मॉड्यूल डालें
जिस तरह हमने मॉड्यूल हटाए, हम उन्हें डाल सकते हैं। आपको अपने डिस्क पर मॉड्यूल का पता लगाना होगा और फिर उन्हें डालना होगा। आप modprobe कमांड का भी उपयोग कर सकते हैं, जो हमेशा उपयोगी होता है यदि निर्भरताएं हैं।
आइए मॉड्यूल ढूंढें (कमांड में sudo मान लें, लेकिन रूट के रूप में भी चलाया जा सकता है):
updatedb
locate kvm
कई परिणाम होंगे, इसलिए आप खोज को kvm.ko और kvm-intel.ko तक सीमित कर सकते हैं।
अब, अपने चल रहे कर्नेल से मेल खाने वाले को डालें। आप uname -r का उपयोग करके जांच सकते हैं।
/sbin/insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm.ko
/sbin/insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm-intel.ko
यहाँ एक स्क्रीनशॉट है। पहले, हम kvm मॉड्यूल की जांच करते हैं। lsmod कमांड दिखाता है कि यह लोड नहीं है। फिर, हम kvm मॉड्यूल लोड करते हैं और lsmod कमांड को एक बार फिर जारी करते हैं।
कृपया ध्यान दें कि स्क्रीनशॉट कमांड ऊपर लिखे कोड बॉक्स में कमांड से थोड़ा भिन्न हैं। मैंने माना कि /sbin PATH में था, इसलिए संक्षिप्तता के लिए मैंने छोटा insmod कमांड उपयोग किया। साथ ही, मैंने पूर्ण मॉड्यूल पथ का भी उपयोग किया, ताकि आप देख सकें कि यह कैसा दिखता है। यदि आप प्रक्रिया को स्क्रिप्ट करना चाहते हैं, जो आपको करना चाहिए, तो पूर्ण पथ अनिवार्य हैं और अधिक मॉड्यूलरिटी के लिए बैकटिक्स का उपयोग करके कमांड सब्स्टीट्यूशन की सिफारिश की जाती है।
स्क्रिप्ट्स
अब, इसे स्वचालित करने का समय। आपको दो स्क्रिप्ट चाहिए। एक KVM मॉड्यूल अनलोड करने के लिए और एक उन्हें लोड करने के लिए। यदि आप वास्तव में सख्त होना चाहते हैं, तो आप KVM का उपयोग करते समय VirtualBox सेवा को भी रोक सकते हैं और KVM का उपयोग करने के बाद इसे शुरू कर सकते हैं। उदाहरण, VirtualBox ड्राइवर्स के साथ छेड़छाड़:
इसलिए, VirtualBox को सक्षम करने और KVM को अक्षम करने के लिए एक नमूना स्क्रिप्ट होगी:
#!/bin/bash
/sbin/rmmod kvm_intel
/sbin/rmmod kvm
/etc/init.d/vboxdrv start
और एक KVM लोड करने और VirtualBox रोकने के लिए:
#!/bin/bash
/etc/init.d/vboxdrv stop
/sbin/insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm.ko
/sbin/insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm-intel.ko
AMD मशीनों के लिए, kvm-intel.ko को kvm-amd.ko से बदलें। कृपया ध्यान दें कि यह सुनिश्चित करने के लिए सैनेटी चेक आवश्यक हैं कि आप शुरू की गई सेवा को शुरू करने का प्रयास नहीं कर रहे हैं। मैंने इन्हें नहीं जोड़ा है; इन्हें होमवर्क समझें।
इसी तरह, प्रोसेसर आर्किटेक्चर पर ध्यान दें। अधिकांश लोगों के लिए, x86 (और x86_64) काम करेगा, लेकिन आपके पास अन्य आर्किटेक्चर हो सकते हैं, जैसे SPARC, ARM, Itanium, या अन्य, इसलिए तदनुसार बदलें।
अब, इन स्क्रिप्ट्स से लिंक करने वाले डेस्कटॉप शॉर्टकट रखें और बॉब्स योर अंकल। विशिष्ट कर्नेल संस्करणों के बजाय uname का उपयोग करना सुनिश्चित करता है कि आपके स्क्रिप्ट कर्नेल अपग्रेड के बाद भी काम करेंगे।
निष्कर्ष
जैसा कि आप देख सकते हैं, वास्तविकता उतनी कठोर नहीं है जितनी आपने उम्मीद की होगी। यह ट्यूटोरियल VirtualBox और KVM को सहयोग करने के सरल तरीकों को प्रकट करता है, बिना एक या दूसरे को अनइंस्टॉल किए या लगातार रीबूट किए। लिनक्स आर्किटेक्चर मॉड्यूल के लाइव सम्मिलन की अनुमति देता है, इसलिए आपको वास्तव में केवल कर्नेल अपग्रेड के लिए रीबूट करना होगा।
यह ट्यूटोरियल आपको कई चीजें सिखाता है, जिसमें आराम के साथ उपयोगिता को संयोजित करने का एक चतुर तरीका, कर्नेल मॉड्यूल को कैसे डालें और हटाएं, अपने काम को कैसे स्क्रिप्ट करें और KVM और VirtualBox को साथ-साथ रखने के वांछित लक्ष्य को कैसे प्राप्त करें।
मुझे आशा है कि आपको यह पसंद आया।
चीयर्स।