ভার্চুয়ালবক্স, OVA ইম্পোর্ট এবং E_INVALIDARG 0x80070057 এরর
আপডেট: ৯ ডিসেম্বর, ২০২৫
হালোতে, আমার ভার্চুয়ালাইজেশন অভিযানে একটি নতুন সমস্যা সম্মুখীন হয়েছি। আমি আমার একটি লিনাক্স ভার্চুয়াল মেশিন এক্সপোর্ট করতে চেয়েছিলাম, যাতে সেটা অন্য হোস্টে ব্যবহার করা যায়। কাগজে, ফাংশনালিটি আছে ভার্চুয়ালবক্সে। File > Export Appliance। তারপর, আপনি ডিজায়ার্ড ভার্চুয়াল মেশিন বেছে নিন, কোন ফরম্যাট চান সেটা ডিসাইড করুন, MAC অ্যাড্রেস কনফিগার করুন, এবং ভার্চুয়ালবক্স ova ফাইল জেনারেট করতে দিন। টার্গেট হোস্টে, এই অ্যাপ্লায়েন্স ইম্পোর্ট করুন।
আমি এটি করার চেষ্টা করলাম এবং একটি এরর পেলাম। GUI বলল E_INVALIDARG 0x80070057, বেশি ডিটেইলস ছাড়া। ভার্চুয়ালবক্স ফোরামের টিকেটগুলো পড়ে, আমি জানলাম ইম্পোর্ট প্রসেসে ব্যর্থতার জন্য অনেক ভিন্ন সমস্যা থাকতে পারে। এই সম্ভাব্য সমস্যাগুলো একে একে সমাধান করার চেষ্টা না করে, আমি একটি ভিন্ন রুট বেছে নিলাম। OVA প্রসেস ছাড়া ম্যানুয়াল মেশিন ইম্পোর্ট। দেখিয়ে দিচ্ছি।
OVA শুধু একটি আর্কাইভ
টেকনিক্যালি, অ্যাপ্লায়েন্স হলো ভার্চুয়াল মেশিনের সকল ডেটা সুন্দরভাবে এক ফাইলে প্যাকেজ করা। ভিতরে আপনার ভার্চুয়াল ডিস্কস (এবং যেকোনো স্ন্যাপশট), ভার্চুয়াল মেশিন ম্যানিফেস্ট, ইত্যাদি থাকবে। সেখানে কোনো গ্রেট মিস্টারি নেই। ইম্পোর্ট প্রসেস শুধু এগুলো আনপ্যাক করে, কনফিগারেশন ফাইল (.vbox) পার্স করে, এবং যদি কোনো এরর থাকে যা সেটা রেজলভ করতে পারে না, যেমন ভার্চুয়াল সিডি ড্রাইভ পাথ বা শেয়ার্ড ফোল্ডার পাথ, তবে সেটা हाल্ট করবে।
তাই, আমরা একই কাজ ম্যানুয়ালি করতে পারি।
স্টেপ ১: আপনার ভার্চুয়াল মেশিনের একটি ক্লোন তৈরি করুন
কেন আপনি এটি করবেন তার কারণ নিচে: এটি আপনাকে শুধু লেটেস্ট স্ন্যাপশট ক্লোন করতে দেয়, যদি আপনি যেকোনো ব্যবহার করেন। এটি নতুন ভার্চুয়াল মেশিনকে ছোট করে দেয়। আপনার কম স্ন্যাপশটের চিন্তা করতে হবে, এবং ভার্চুয়াল মেশিন ডেটা নতুন হোস্টে কপি করার সময় সেগুলো একাউন্ট করতে হবে। কিন্তু এটি বাধ্যতামূলক নয়।
শুধু লেটেস্ট স্টেট কপি করার কারণ হলো এটি মেশিন ম্যানেজমেন্ট সিম্পল করে দেয়, এবং ট্রান্সফারের জন্য প্রয়োজনীয় ডেটার পরিমাণ কমায়। যদি আপনি ওভার-দ-নেটওয়ার্ক এক্সপোর্ট করেন, তবে এটা বড় পার্থক্য সৃষ্টি করতে পারে (এভেন অন LAN-এ)।

স্টেপ ২: পুরো ভার্চুয়াল মেশিন ফোল্ডার সেকেন্ড হোস্টে কপি করুন
যেকোনো ভার্চুয়ালবক্স ভার্চুয়াল মেশিন ফোল্ডারের স্ট্রাকচার নিম্নরূপ: 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 নামে একটি হার্ড ডিস্ক ব্যবহার করে, এবং এর সাথে দুটি স্ন্যাপশট জড়িত। আপনি আইডিয়া পেলেন।
ঠিক আছে, এই সকল ডেটা, পুরো ফোল্ডার, আপনার সেকেন্ড হোস্টে কপি করুন।
স্টেপ ৩: পাথ চেক করুন
ভার্চুয়াল মেশিন "ইম্পোর্ট" করার আগে, আপনাকে vbox ফাইলটি একটি টেক্সট এডিটরে খুলতে হবে, এবং যেকোনো "ফানি" পাথ খুঁজে বের করতে হবে। এতে অন্তর্ভুক্ত থাকবে যেকোনো মাউন্ট করা ISO ফাইল, যেকোনো শেয়ার্ড গেস্ট পাথ বা সিমিলার, যেকোনো জিনিস যা ফার্স্ট সিস্টেমে হার্ড-কোডেড থাকবে এবং সেকেন্ড সিস্টেমে অস্তিত্ব নাও থাকতে পারে। এইরকম যেকোনো এরর নতুন ভার্চুয়াল মেশিন অ্যাড করতে ব্যর্থ করাবে। OVA আর্কাইভগুলো ব্যবহার করার সময় এটি অপেক, কিন্তু ম্যানুয়ালি করার সময় আপনার ফুল ভিজিবিলিটি এবং কন্ট্রোল থাকে।
উদাহরণস্বরূপ, ধরা যাক আপনি দুটি সিস্টেমে ভিন্ন শেয়ার্ড গেস্ট পাথ ব্যবহার করেন। প্রাসঙ্গিক ডিক্লেরেশন খুঁজে বের করার সবচেয়ে সহজ উপায় হলো ফার্স্ট সিস্টেমে আপনি যে নির্দিষ্ট পাথটি ব্যবহার করেছেন সেটা সার্চ করা। চেক করুন কী বলেছে:
<SharedFolders>
<SharedFolder name="SHARED_FOLDER"
hostPath="G:\Virtual Machines\SHARED FOLDER"
writable="true"
autoMount="true"
autoMountPoint="SHPATH"/>
</SharedFolders>
এখানে, আমি G: ড্রাইভে সেট করা একটি পাথের উদাহরণ দিলাম (উইন্ডোজ)। কিন্তু সেকেন্ড সিস্টেমে এই পাথ অস্তিত্ব নাও থাকতে পারে, বা ভিন্ন লেটারের অধীনে সেট থাকতে পারে। তাই আপনাকে এটা পরিবর্তন করতে হবে, বলে দিয়ে:
hostPath="P:\Different path\SHARED FOLDER"
এবং যদি আপনার সেকেন্ড সিস্টেম লিনাক্স হয়, তবে এটি কわち আলাদা হতে পারে:
hostPath="/home/dedoimedo/Shared-folder"
এই হার্ড-কোডেড পাথগুলোর পাশাপাশি, আপনি এই সুযোগে যেকোনো অ더 সেটিংও অ্যাডজাস্ট করতে পারেন, যার মধ্যে মেমরি এলোকেশন, সিপিইউ কোরের সংখ্যা, নির্দিষ্ট গ্রাফিক্স অ্যাডাপ্টারের ব্যবহার, এবং আরও। কিন্তু একবারে একটা পরিবর্তন করাই ভালো, ভার্চুয়াল মেশিন অ্যাড করার চেষ্টা করুন, এবং দেখুন কোথাও এরর আসে কিনা।
যখন আপনি vbox ফাইলটি প্রয়োজন অনুযায়ী মডিফাই করলেন, সিম্পলি এটা ডাবল ক্লিক করুন। ডিফল্ট ইনস্টলেশন দিয়ে, উভয় উইন্ডোজ এবং লিনাক্সে, এই নির্দিষ্ট স্ট্রিং এবং ফাইল টাইপ ভার্চুয়ালবক্স হাইপারভাইজারের সাথে অ্যাসোসিয়েটেড থাকবে। যদি XML কনফিগারেশন বৈধ হয়, তবে ভার্চুয়াল মেশিন এখন আপনার লিস্টে দেখাবে। শেষ।
স্টেপ ৩: বিকল্প পদ্ধতি
যদি আপনি XML ফাইল এডিট করতে কমফরটেবল না হন, তবে আপনি নিচের পদ্ধতি अपना করতে পারেন:
- ভার্চুয়াল মেশিন ক্লোন করুন।
- এটির সেটিংস খুলুন (ভার্চুয়ালবক্স GUI এর মাধ্যমে)। যেকোনো হার্ড-কোডেড পাথ রিমুভ করুন, যেমন ISO ফাইল, শেয়ার্ড ফোল্ডার, ইত্যাদি।
- ভার্চুয়াল মেশিন নতুন ডেস্টিনেশনে কপি করুন।
- vbox ফাইলটি ডাবল ক্লিক করুন হাইপারভাইজারে অ্যাড করার জন্য।
- একবার আবার এর সেটিংস খুলুন, এবং নতুন পাথগুলো যোগ করুন, যেভাবে সেকেন্ড ডিভাইসে থাকা উচিত।
- ভার্চুয়াল মেশিন লঞ্চ করুন এবং আপনার কাজ করুন।
সতর্কতা এবং সম্ভাব্য লাইসেন্সিং সীমাবদ্ধতা
আপনি উপরে লক্ষ্য করেছেন হয়তো, আমি কপি/মাইগ্রেশন প্রসেসের জন্য একটি লিনাক্স ভার্চুয়াল মেশিন ব্যবহার করেছি। লিনাক্স, এবং নির্দিষ্টভাবে কুবুন্টু, কারণ এই লিনাক্স ডিস্ট্রিবিউশনে ব্যবহার सम्बन्धে কোনো সীমাবদ্ধতা নেই, না সিস্টেমের সংখ্যা, না "লাইসেন্স" এর সংখ্যা।
আপনি যদি এটি প্রপ্রায়েটরি অপারেটিং সিস্টেমের সাথে করেন, যেমন উইন্ডোজ, তবে আপনি সম্ভবত আপনার লাইসেন্স ডি-অ্যাক্টিভেট করে ফেলবেন হার্ডওয়ার পরিবর্তনের কারণে। অথবা আপনাকে নতুন একটা কেনতে হয়। যদি আপনি কিছু নির্দিষ্ট (পেড) প্রোগ্রাম ব্যবহার করেন যা একটি সিঙ্গল হোস্ট বা একটি সিঙ্গল রানিং ইন্সট্যান্সের জন্য লাইসেন্সড, তবে আপনাকে এটাও বিবেচনা করতে হবে, কারণ ভার্চুয়াল মেশিনের নতুন কপি তৈরি করা আপনার লাইসেন্স বা সেড সফটওয়্যারের টার্মস অফ ইউজের সাথে সমস্যা সৃষ্টি করতে পারে।
উপসংহার
যদি একটি অটোমেটেড, সুন্দরভাবে র্যাপ করা প্রসিডিউর আপনার জন্য কাজ না করে, তবে ম্যানুয়াল মেথড কাজ করতে পারে। আমি ফোল্ডার কপি + XML পরিবর্তন পদ্ধতিটি একাধিকবার টেস্ট করেছি, একাধিক ভার্চুয়াল মেশিনের সাথে, উইন্ডোজ এবং লিনাক্স অপারেটিং সিস্টেম থেকে এবং যেতে। ফলাফল চমৎকার। অবশ্য, আপনাকে এক-दো সেটিং অ্যাডজাস্ট করতে হতে পারে, কিন্তু তারপর, আপনি সেট। আপনার সফটওয়্যার লাইসেন্সিং সীমাবদ্ধতার মধ্যে থাকার শর্তে।
আশা করি এই টিউটোরিয়াল আপনার কাজে আসবে। স্পেসিফিক এরর কোড ডিবাগ করা 지루, কারণ প্রায় যেকোনো ইম্পোর্ট এরর একই কোড থ্রো করে, যখন স্পেসিফিক ওয়ার্কআরাউন্ডগুলো অনেক এবং ভিন্ন। ম্যানুয়াল কপি প্রসিডিউর রবাস্ট, কিন্তু আপনাকে কিছু জিনিস খেয়াল রাখতে হবে, মূলত আপনার কনফিগারেশনে হার্ড-কোডেড পাথগুলো। আপনি কপির আগে বা পরে এগুলো এডিট করতে পারেন, যাতে নতুন ভার্চুয়াল মেশিন স্মুথলি অ্যাড হয়। যাই হোক, শুভ ভার্চুয়ালাইজেশন।
চিয়ার্স।