VirtualBox, OVA आयात और E_INVALIDARG 0x80070057 त्रुटि
हाल ही में, मुझे अपने वर्चुअलाइजेशन रोमांच में एक नई समस्या का सामना करना पड़ा। मैं अपनी एक Linux वर्चुअल मशीन को निर्यात करना चाहता था, ताकि मैं इसे एक अलग होस्ट पर उपयोग कर सकूं। कागज पर, VirtualBox में कार्यक्षमता है। File > Export Appliance। फिर, आप वांछित वर्चुअल मशीन चुनते हैं, तय करते हैं कि आप किस प्रारूप का उपयोग करना चाहते हैं, MAC पतों को कॉन्फ़िगर करते हैं, और VirtualBox को ova फ़ाइल उत्पन्न करने देते हैं। लक्ष्य होस्ट पर, आप इस उपकरण को आयात करते हैं।
मैंने ऐसा करने की कोशिश की और एक त्रुटि का सामना किया। GUI ने E_INVALIDARG 0x80070057 कहा, बिना अधिक विवरण के। VirtualBox फोरम पर टिकटों को पढ़कर, मैंने सीखा कि आयात प्रक्रिया में विफलता के लिए कई विभिन्न मुद्दे हो सकते हैं। इन संभावित समस्याओं को एक-एक करके हल करने की कोशिश करने के बजाय, मैंने एक अलग रास्ता चुना। OVA प्रक्रिया का उपयोग किए बिना एक मैनुअल मशीन आयात। मुझे दिखाने दें।
OVA सिर्फ एक आर्काइव है
तकनीकी रूप से, उपकरण सभी वर्चुअल मशीन डेटा को एक फ़ाइल में बड़े करीने से पैक किया गया है। अंदर, आपके पास आपके वर्चुअल डिस्क (और कोई स्नैपशॉट), वर्चुअल मशीन मैनिफेस्ट, और इसी तरह होंगे। वहां कोई बड़ा रहस्य नहीं है। आयात प्रक्रिया केवल इनको अनपैक करती है, कॉन्फ़िगरेशन फ़ाइल (.vbox) को पार्स करती है, और यदि कोई त्रुटि है जिसे यह हल नहीं कर सकती, जैसे वर्चुअल CD ड्राइव पथ या साझा फ़ोल्डर पथ, तो यह रुक जाएगी।
इस प्रकार, हम वही कर सकते हैं, मैन्युअल रूप से।
चरण 1: अपनी वर्चुअल मशीन का क्लोन बनाएं
आप ऐसा क्यों करना चाहेंगे: यह आपको केवल नवीनतम स्नैपशॉट को क्लोन करने की अनुमति देता है, यदि आप किसी का उपयोग करते हैं। यह नई वर्चुअल मशीन को छोटा बनाता है। आपके पास कम स्नैपशॉट होंगे जिनका ध्यान रखना होगा, और जब आप वर्चुअल मशीन डेटा को नए होस्ट पर कॉपी करते हैं तो ध्यान में रखना होगा। लेकिन यह अनिवार्य नहीं है।
आप केवल नवीनतम स्थिति को कॉपी करना चाह सकते हैं क्योंकि यह मशीन प्रबंधन को सरल करता है, और स्थानांतरण के लिए आवश्यक डेटा की मात्रा को कम करता है। यदि आप ओवर-द-नेटवर्क निर्यात कर रहे हैं, तो यह बड़ा अंतर ला सकता है (यहां तक कि LAN पर भी)।
चरण 2: संपूर्ण वर्चुअल मशीन फ़ोल्डर को दूसरे होस्ट पर कॉपी करें
किसी भी VirtualBox वर्चुअल मशीन फ़ोल्डर की संरचना इस प्रकार है: Logs और Snapshots नामक निर्देशिकाएं, एक या अधिक वर्चुअल डिस्क (आमतौर पर .vdi प्रारूप), और .vbox सफ़िक्स (एक्सटेंशन) वाली कॉन्फ़िगरेशन फ़ाइल, साथ ही शायद .vbox-prev सफ़िक्स वाली दूसरी कॉन्फ़िगरेशन फ़ाइल (यदि आपने परिवर्तन किए हैं)।
vbox फ़ाइल एक XML मैनिफेस्ट है जिसमें सभी प्रकार की घोषणाएं होती हैं जो आप GUI में देखते हैं। आपको इस फ़ाइल को तब संपादित नहीं करना चाहिए जब कोई मशीन चल रही हो, लेकिन आप किसी ऑफ़लाइन स्थिति में किसी भी मशीन के लिए सुरक्षित रूप से ऐसा कर सकते हैं। परिवर्तन अगली बार जब आप उस मशीन को लॉन्च करेंगे तो प्रतिबिंबित होंगे। उदाहरण के लिए, Media के तहत, आप एक HardDisks अनुभाग देखेंगे जो सभी डिस्क और स्नैपशॉट को सूचीबद्ध करता है:
...
<HardDisks>
<HardDisk uuid="{dfcda294-6feb-4ef8-8bc8-e67ad57e2cc6}"
location="Kubuntu-24.04.vdi"
format="VDI"
type="Normal">
<HardDisk uuid="{f062fe0b-578c-4461-9a10-8d65d28347ac}"
location="Snapshots/{f062fe0b-578c-4461-9a10-8d65d28347ac}.vdi"
format="VDI">
<HardDisk uuid="{f942b89a-49ff-40fa-8d62-e6fdd8a205d9}"
location="Snapshots/{f942b89a-49ff-40fa-8d62-e6fdd8a205d9}.vdi"
format="VDI"/>
</HardDisk>
</HardDisk>
</HardDisks>
...
यह घोषणा हमें बताती है कि विशिष्ट मशीन Kubuntu-24.04.vdi नामक एक हार्ड डिस्क का उपयोग करती है, और इससे दो स्नैपशॉट जुड़े हुए हैं। आपको विचार आ गया।
ठीक है, इस सभी डेटा, संपूर्ण फ़ोल्डर को, अपने दूसरे होस्ट पर कॉपी करें।
चरण 3: पथ जांचें
इससे पहले कि आप वर्चुअल मशीन को "आयात" करें, आपको vbox फ़ाइल को एक टेक्स्ट एडिटर में खोलना चाहिए, और किसी भी "अजीब" पथ की तलाश करनी चाहिए। इसमें कोई भी माउंटेड ISO फ़ाइलें, कोई भी साझा गेस्ट पथ या समान, कुछ भी शामिल होगा जो पहले सिस्टम पर हार्ड-कोडेड होगा और दूसरे पर मौजूद नहीं हो सकता है। ऐसी कोई भी त्रुटि नई वर्चुअल मशीन के जुड़ने को विफल कर देगी। यह OVA आर्काइव का उपयोग करते समय अपारदर्शी है, लेकिन मैन्युअल रूप से करते समय आपके पास पूर्ण दृश्यता और नियंत्रण होता है।
उदाहरण के लिए, मान लें कि आप दो प्रणालियों पर एक अलग साझा गेस्ट पथ का उपयोग करते हैं। प्रासंगिक घोषणा को खोजने का सबसे आसान तरीका उस विशिष्ट पथ को खोजना है जिसे आप जानते हैं कि आपने पहले सिस्टम पर उपयोग किया है। जांचें कि यह क्या कहता है:
<SharedFolders> <SharedFolder name="SHARED_FOLDER" hostPath="G:\Virtual Machines\SHARED FOLDER" writable="true" autoMount="true" autoMountPoint="SHPATH"/> </SharedFolders>
यहां, मैंने G: ड्राइव (Windows) में सेट पथ का एक उदाहरण उपयोग किया है। लेकिन ऐसा पथ आपके दूसरे सिस्टम पर मौजूद नहीं हो सकता है, या यह एक अलग अक्षर के तहत सेट हो सकता है। इसलिए आपको इसे बदलने की आवश्यकता होगी, कहें:
hostPath="P:\Different path\SHARED FOLDER"
और यदि आपका दूसरा सिस्टम Linux है, तो यह पूरी तरह से कुछ और हो सकता है:
hostPath="/home/dedoimedo/Shared-folder"
इन हार्ड-कोडेड पथों के अलावा, आप इस अवसर का उपयोग किसी भी अन्य सेटिंग को समायोजित करने के लिए भी कर सकते हैं, जिसमें मेमोरी आवंटन, CPU कोर की संख्या, एक विशिष्ट ग्राफिक्स एडाप्टर का उपयोग, और फिर कुछ शामिल हैं। लेकिन एक समय में एक परिवर्तन करना सबसे अच्छा है, वर्चुअल मशीन को जोड़ने का प्रयास करें, और देखें कि क्या कोई त्रुटि आती है।
एक बार जब आप vbox फ़ाइल को आवश्यकतानुसार संशोधित कर लेते हैं, तो बस उस पर डबल-क्लिक करें। डिफ़ॉल्ट इंस्टॉलेशन के साथ, Windows और Linux दोनों में, यह विशिष्ट स्ट्रिंग और फ़ाइल प्रकार VirtualBox हाइपरवाइज़र से जुड़ा होगा। यदि XML कॉन्फ़िगरेशन मान्य है, तो वर्चुअल मशीन अब आपकी सूची में दिखाई देगी। हो गया।
चरण 3: वैकल्पिक दृष्टिकोण
यदि आप XML फ़ाइलों को संपादित करने में सहज महसूस नहीं करते हैं, तो आप निम्न कार्य कर सकते हैं:
- वर्चुअल मशीन को क्लोन करें।
- VirtualBox GUI के माध्यम से इसकी सेटिंग्स खोलें। ISO फ़ाइलों, साझा फ़ोल्डर्स आदि जैसे किसी भी हार्ड-कोडेड पथ को हटा दें।
- वर्चुअल मशीन को नए गंतव्य पर कॉपी करें।
- हाइपरवाइज़र में जोड़ने के लिए vbox फ़ाइल पर डबल-क्लिक करें।
- इसकी सेटिंग्स एक बार फिर खोलें, और नए पथ जोड़ें, जैसा कि दूसरे डिवाइस पर होना चाहिए।
- वर्चुअल मशीन लॉन्च करें और अपना काम करें।
चेतावनी और संभावित लाइसेंसिंग प्रतिबंध
जैसा कि आपने ऊपर देखा होगा, मैंने कॉपी/माइग्रेशन प्रक्रिया के लिए एक Linux वर्चुअल मशीन का उपयोग किया। Linux, और विशेष रूप से Kubuntu, क्योंकि यह Linux वितरण उपयोग पर कोई प्रतिबंध नहीं लगाता, न सिस्टम की संख्या पर, न "लाइसेंस" की संख्या पर, ऐसा कहने के लिए।
यदि आप ऐसा मालिकाना ऑपरेटिंग सिस्टम के साथ करते हैं, जैसे Windows, तो आप हार्डवेयर परिवर्तनों के कारण संभावित रूप से अपना लाइसेंस निष्क्रिय कर सकते हैं। या आपको एक नया खरीदना पड़ सकता है। यदि आप कुछ (सशुल्क) प्रोग्राम का उपयोग करते हैं जो एकल होस्ट या एकल रनिंग इंस्टेंस के लिए लाइसेंस प्राप्त हैं, तो आपको इसे ध्यान में रखने की आवश्यकता है, क्योंकि वर्चुअल मशीन की नई प्रतियां बनाने से संभावित रूप से आपके लाइसेंस या उक्त सॉफ़्टवेयर के उपयोग की शर्तों के साथ समस्याएं हो सकती हैं।
निष्कर्ष
यदि एक स्वचालित, बड़े करीने से लपेटी गई प्रक्रिया आपके लिए काम नहीं करती है, तो मैनुअल विधि बस काम कर सकती है। मैंने फ़ोल्डर कॉपी + XML परिवर्तन दृष्टिकोण का कई बार, कई वर्चुअल मशीनों के साथ, Windows और Linux ऑपरेटिंग सिस्टम दोनों से और दोनों में परीक्षण किया है। परिणाम उत्कृष्ट हैं। निश्चित रूप से, आपको एक या दो सेटिंग समायोजित करने की आवश्यकता हो सकती है, लेकिन फिर, आप सुनहरे हैं। अपने सॉफ़्टवेयर लाइसेंसिंग सीमाओं के दायरे में, वह है।
उम्मीद है, यह ट्यूटोरियल काम आएगा। विशिष्ट त्रुटि कोड को डीबग करना थकाऊ हो सकता है, क्योंकि बहुत अधिक कोई भी आयात त्रुटि इसे फेंक देगी, जबकि विशिष्ट समाधान कई और विविध हैं। मैनुअल कॉपी प्रक्रिया मजबूत है, लेकिन आपको कुछ चीजों को ध्यान में रखने की आवश्यकता है, ज्यादातर आपकी कॉन्फ़िगरेशन में हार्ड-कोडेड पथ। आप इनको कॉपी से पहले या बाद में संपादित कर सकते हैं, यह सुनिश्चित करने के लिए कि नई वर्चुअल मशीन को निर्बाध रूप से जोड़ा जा सकता है। खैर, वहां आप जाएं। हैप्पी वर्चुअलाइजेशन।
चीयर्स।