কম্পিউটার টিউটোরিয়াল

লিনাক্স ভার্চুয়াল মেশিনে ৩ডি এক্সিলারেশন সক্ষম করা: VMGL-এর সাথে গভীর যাত্রা

এটি ভার্চুয়ালাইজেশনে তৃতীয় আর্টিকেল। এবং সম্ভবত সবচেয়ে কঠিনটি। এতক্ষণে, আমরা VMware প্রোডাক্টসে ডায়রেক্টএক্স (DirectX) সাপোর্ট এবং VirtualBox-এ ওপেনজিএল (OpenGL) সাপোর্ট পেয়েছি, দুটি কেসেই শুধু উইন্ডোজ গেস্টের জন্য উপলব্ধ। হোস্ট প্ল্যাটফর্মের পছন্দ কঠিনতামূলক ছিল না। কিন্তু লিনাক্স গেস্টের ক্ষেত্রে কী?

আমি মনে করতাম এটি সম্ভব নয়। কিন্তু তারপর, আমি linux.com-এ একটি আর্টিকেল পড়লাম, যেখানে দেখানো হয়েছিল ৩ডি লিনাক্স গেস্টে উপভোগ করা যায়, VMGL নামে একটি অ্যাপ্লিকেশন ব্যবহার করে। এটি খুব আশাজনক লাগল। এটি দারুণ লাগল; কিন্তু এটি কঠিনও লাগল। এটি কোনো ৫-১০ মিনিটের হ্যাকিং নয়। কাজটি বড় ছিল। তাই, আমি দেখতে চাইলাম এটি আসলে করা যায় কিনা।

এবং উত্তর হলো ...

উত্তর হলো: যখন আপনি একটি আর্টিকেল/টিউটোরিয়াল/গাইড/হাও-টু দেখেন যা "it should work" (এটি কাজ করা উচিত) এবং "all you have to do is ..." (আপনার শুধু করতে হবে...) এর মতো ফ্রেজ ব্যবহার করে—সতর্ক থাকুন! আপনি অনেক ঝামেলায় পড়বেন।

মূল আর্টিকেলটি, সেইসাথে লেখকের অ্যাপ্লিকেশন ডকুমেন্টেশন, প্রায় ৯০% গাঁয়ে কাজগুলো উপেক্ষা করে যা আপনাকে করতে হবে আপনার লক্ষ্যের কাছাকাছি আসতে। এই টিউটোরিয়ালে, আমি আপনাকে সব গ্রিসলি ডিটেইল দেখাব যা জড়িত (হয়তো) আপনার লিনাক্স ভার্চুয়াল মেশিনে ৩ডি কাজ করার জন্য। পি.এস. আপনি প্রথম দুটি আর্টিকেলে আরও পড়তে পারেন:

৩ডি এক্সিলারেশন ইন ভার্চুয়াল মেশিনস - পার্ট ১: VMware & DirectX - টিউটোরিয়াল

৩ডি এক্সিলারেশন ইন ভার্চুয়াল মেশিনস - পার্ট ২: VirtualBox & OpenGL - টিউটোরিয়াল

VMGL: ওপেনজিএল ৩ডি এক্সিলারেশন - আনকাট ভার্সন

আমরা VMware Server-এ শুরু করব এবং তারপর VirtualBox-এ একই চেষ্টা করব।

ইনস্টলেশন

প্যাকেজগুলো ডাউনলোড ও ইনস্টল করা সহজ। সেগুলো RPM ফরম্যাটে, তাই আপনি যদি ডেবিয়ান-ভিত্তিক ডিস্ট্রো (যেমন উবুন্টু) চালান, আপনাকে প্রথমে এলিয়েন (alien) প্যাকেজ ইনস্টল করতে হবে এবং RPM-গুলো DEB-তে রূপান্তর করতে হবে। তাই প্রথমে, এলিয়েন (alien) ইনস্টল করুন:

sudo apt-get install alien

তারপর, RPM প্যাকেজগুলো DEB-তে রূপান্তর করুন:

alien -k package.rpm package.deb

অবশেষে, সেগুলো ইনস্টল করুন:

rpm -i package.rpm

অথবা

dpkg -i package.deb

জেনেরিক নামগুলো আসল VMGL প্যাকেজগুলোর সাথে প্রতিস্থাপন করুন এবং সেগুলো ইনস্টল করুন, একবার হোস্টে এবং একবার গেস্টে।

দ্রষ্টব্য: RPM/DEB ইনস্টল করার সময় আপনি কোনো (দৃশ্যমান) এরর দেখবেন না। যাইহোক, সোর্স ব্যবহার করে ইনস্টল করার চেষ্টা সম্পূর্ণ গুলগুলি ছিল। আপনাকে প্রচুর ডিপেন্ডেন্সি সatify করতে হবে, যার মধ্যে সব বিল্ড-এসেনশিয়াল প্যাকেজ—gcc, make, কার্নেল সোর্স, কার্নেল হেডার—প্লাস অনেক অন্যগুলো, যেন ইমেক (imake), পাইথন (python) এবং ওপেনজিএল (OpenGL) হেডার।

দুর্ভাগ্যবশত, লেখক আপনাকে প্রয়োজনীয় ডিপেন্ডেন্সির একটি সম্পূর্ণ তালিকা দেন না, তাই আপনাকে অনুমান করতে হবে, ট্রায় অ্যান্ড এরর (trial and error) দিয়ে, আপনি কী প্রয়োজন হয়তে পারে বা নাও হতে পারে।

এবং সোর্সটি সম্পূর্ণ ভাঙা मालूम पड़ছে:

এবং উবুন্টু গেস্টে:

এটি খুব সম্ভব আপনি এই স্টেজে হার মানবেন। কিন্তু আপনি যদি RPM/DEB প্যাকেজগুলো ব্যবহার করেন, আপনি মনে করতে পারেন সবকিছু কাজ করল, তাই আপনি এগিয়ে যান...

মডিউল লোড করুন

আপনার পরবর্তী ধাপ হলো xorg.conf ফাইলটি পরিবর্তন করা। এমন একটি সেকশন যোগ করুন:

Section "Module"
Load "vmglext"
EndSection

গেস্ট এক্স উইন্ডোজ (X windows) রিস্টার্ট করুন (Ctrl + Alt + Backspace) পরিবর্তনগুলো ইফেক্টIVE হওয়ার জন্য।

Xvnc সার্ভার স্টার্ট করুন

পরবর্তী, গেস্টে, মডিফাইড Xvnc সার্ভারটি লঞ্চ করুন যা সাপPOSEDLY আমাদের জন্য সকল ম্যাজিক্যাল ওপেনজিএল টানেলিং (tunneling) করবে।

আহ, এখানে ট্রিকি পার্টটি আসে। যেহেতু লেখক সার্ভারের একটি পুরনো ভার্সন ব্যবহার করেছিল, অজানা কোনো কারণের জন্য, সবচেয়ে সম্ভবত সে তার বিশ্ববিদ্যালয়ে যা ব্যবহার করত, এটি আধুনিক ডিস্ট্রিবিউশনসে ফেইল করবে, কারণ এটি ফাইল এবং ফোল্ডার লোকেশন অনুমান করে যা আধুনিক ডিস্ট্রিবিউশনসে উপস্থিত নয়।

সюз ১১.০ (SUSE 11.0) এবং উবুন্টু ৮.১০ (Ubuntu 8.10) উভয়েই, আমাকে কয়েকটা হ্যাকিং করতে पড়ল সার্ভারটি কোনো এরর ছাড়া চালানোর জন্য। আপনি অনেক এরর পাবেন, এমনঃ

লিনাক্স ভার্চুয়াল মেশিনে ৩ডি এক্সিলারেশন সক্ষম করা: VMGL-এর সাথে গভীর যাত্রা

এটি ঘটে যখন ২০০৩ সালের প্যাকেজগুলো অ্যাপ্লিকেশন তৈরি করতে ব্যবহার করা হয়। خوشখবর, সমাধান "সহজ"। তাই, সমস্যাটি ফিক্স করতে:

rgb.txt ডাউনলোড করুন

এটা আমাদের প্রথম এরর। কোথাও ইন্টারনেটে ফাইলটি খুঁজে বের করুন (google it)। ডাউনলোড করুন এবং সেখানে রাখুন যেখানে প্যাকেজটি খুঁজে পাওয়ার আশা করে। ফাইলটিতে, যেকোনো খালি লাইন ডিলিট করুন, কারণ সেগুলো সিনট্যাক্স এরর থ্রো করবে।

ফাইলটি সেখানে রাখুন যেখানে Xvnc সার্ভার আশা করে—অথবা ভালো, /etc/X11/rgb.txt-এ রাখুন এবং সিম্বলিক লিংক তৈরি করুন:

cd /usr/X11R6/lib/X11
sudo ln -s /usr/share/X11/rgb.txt
cd /usr/share/X11
sudo ln -s /etc/X11/rgb.txt

এটা এরকম দেখাবে:

লিনাক্স ভার্চুয়াল মেশিনে ৩ডি এক্সিলারেশন সক্ষম করা: VMGL-এর সাথে গভীর যাত্রা

দেখতে খারাপ, এবং এটি খারাপই!

আপনার পরবর্তী ধাপ হলো সেই মিসিং ফন্টগুলোর জন্যও সিম্বলিক লিংক তৈরি করা।

cd /usr/X11R6/lib/X11/fonts
sudo ln -s /usr/share/fonts/X11/100dpi
sudo ln -s /usr/share/fonts/X11/75dpi
sudo ln -s /usr/share/fonts/X11/encodings
sudo ln -s /usr/share/fonts/X11/misc
sudo ln -s /usr/share/fonts/X11/Type1
sudo ln -s /usr/share/fonts/X11/util

এবং তারপর আপনি পাবেন:

লিনাক্স ভার্চুয়াল মেশিনে ৩ডি এক্সিলারেশন সক্ষম করা: VMGL-এর সাথে গভীর যাত্রা

এখন, যখন আপনি Xvnc সার্ভার স্টার্ট করবেন, আপনি এখনও এরর পাবেন, কিন্তু এইবার, এটি কাজ করবে:

এখন, হোস্টে, vncviewer রান করুন। 말할 প্রয়োজন নেই, গেস্টের একটি আইপি ঠিকানা থাকতে হবে যা হোস্ট থেকে পৌঁছানো যায়। এর মানে আপনাকে গেস্ট ভার্চুয়াল মেশিনের জন্য ব্রিজড (bridged) বা NAT নেটওয়ার্কিং প্রয়োজন।

vncviewer guest-ip-address:1

এটি এরকম দেখাবে:

গেস্টে, GLSTUB এক্সপোর্ট করুন:

export GLSTUB=guest-ip-address:port

আমাদের কেসে, আমরা দেখতে পাচ্ছি GLSTUB পয়েন্ট করছে পোর্ট ৭০০১-এ। এবং আমাদের গেস্ট আইপি ঠিকানা ১৯২.১৬৮.৩৪.১২৯, তাই আমরা GLSTUB এক্সপোর্ট করব এরকম:

export GLSTUB=192.168.34.129:7001

এবং এখন, ম্যাজিক! সবকিছু কাজ করা উচিত।

উম, শুধু এটি কাজ করে না। glxinfo রান করলে vmglext ড্রাইভার ইন ইউজ দেখায় না এবং glxgears রান করলে (যেমন সুপারিশ করা হয়েছে) একই ভয়াবহ পারফরম্যান্স দেখায় যেন আগে ছিল। যা আশচর্য নয়, ভাঙা প্যাকেজগুলো বিবেচনায় নিলে।

VirtualBox-এ সবকিছু পুনরায় করুন

আমি মনে করেছিলাম VMware Server-এ NAT এবং এর প্রоприয়েটরি কোডই সমস্যা। তাই আমি একই ট্রিকটি চেষ্টা করলাম, উবুন্টু হোস্ট ব্যবহার করে, VirtualBox OSE এডিশন রান করে, উবুন্টু গেস্টের সাথে। আমি ব্রিজড নেটওয়ার্কিংও কনফিগার করলাম এটি কাজ করার জন্য।

ব্রিজড নেটওয়ার্কিং কনফিগার করা যেহেতু সরাসরি টপিকের সাথে সম্পর্কিত নয়, এখানে সেই সুন্দর কমান্ড সেটটি দেওয়া হলো যা আপনাকে হোস্ট এবং গেস্ট কমিউনিকেশন করার জন্য রান করতে হবে। আরও ডিটেইলস জন্য, আপনি পড়তে পারেন:

VirtualBox - Community Ubuntu Documentation

এখানে আমি যা করলাম (আপনার প্রয়োজন/কনফিগারেশনকে সঠিকভাবে প্রতিফলিত নাও করতে পারে):

১. হোস্টে ব্রিজ ইউটিলিটিজ ইনস্টল করুন

প্রথম ধাপ হলো ব্রিজ ইউটিলিটিজ ইনস্টল করা, যাতে আমরা আমাদের নেটওয়ার্ক ইন্টারফেস ব্রিজ করতে পারি এবং আইপি ঠিকানা শেয়ার করতে পারি।

sudo apt-get install bridge-utils

২. নেটওয়ার্ক স্ক্রিপ্টসে ব্রিজ ডিক্লেয়ার করুন

ব্রিজ ইউটিলিটিজ ইনস্টল হওয়ার পর, আপনাকে নেটওয়ার্ক কনফিগারেশন ফাইলে সেটি ডিক্লেয়ার করতে হবে। ডেবিয়ান-ভিত্তিক সিস্টেমে, যেমন এখানে ডেমোন্স্ট্রেট করা হয়েছে, কনফিগারেশনগুলো একটি একক ফাইলে থাকে, /etc/network/interfaces। রেডহ্যাট-ভিত্তিক ডিস্ট্রোগুলো প্রতিটি নেটওয়ার্ক অ্যাডাপ্টার আলাদা কনফিগারেশন স্ক্রিপ্ট ব্যবহার করে।

পি.এস. দয়া করে আপনার নিজের পছন্দের স্ট্যাটিক আইপি ঠিকানা ব্যবহার করুন।

sudo gedit /etc/network/interfaces

উপরের ফাইলে যোগ করুন:

auto br0
iface br0 inet static
address 192.168.3.100
netmask 255.255.255.0
gateway 192.168.3.1
bridge_ports eth0 vbox0

৩. VirtualBox-র জন্য ভার্চুয়াল নেটওয়ার্ক অ্যাডাপ্টার ডিক্লেয়ার করুন

এটি VirtualBox-কে আপনার br0 ব্রিজ ব্যবহার করতে দেবে:

sudo gedit /etc/vbox/interfaces

উপরের ফাইলে যোগ করুন:

vbox0 <your user name> br0

৪. নেটওয়ার্ক এবং VirtualBox ড্রাইভার রিস্টার্ট করুন

কনফিগারেশন ফাইলগুলোতে পরিবর্তনগুলো যোগ হওয়ার পর, আমাদের নেটওয়ার্ক সার্ভিস এবং VirtualBox উভয়েই রিস্টার্ট করতে হবে পরিবর্তনগুলো ইফেক্টIVE হওয়ার জন্য।

sudo service networking restart
sudo /etc/init.d/virtualbox-ose restart

৫. একটি ফাইল হ্যাক করুন সঠিক পারমিশনের জন্য

আপনাকে নেটওয়ার্ক টানেলিং ডিভাইসের পারমিশন পরিবর্তন করতে হতে পারে যাতে VirtualBox সেগুলো ব্যবহার করতে পারে। এটি করা হয় এরকম:

sudo chown root:vboxusers /dev/net/tun
sudo chmod 666 /dev/net/tun

৬. গেস্টকে vbox0 ভার্চুয়াল অ্যাডাপ্টার ব্যবহার করার জন্য কনফিগার করুন

এটি হোস্ট মেশিনে করা হয়, প্রাসঙ্গিক ভার্চুয়াল মেশিনের Settings মেনু অ্যাক্সেস করে। এখানে একটি সুন্দর স্ক্রিনশট:

৭. গেস্ট পাওয়ার অন করুন এবং স্ট্যাটিক আইপি ঠিকানা অ্যাসাইন করুন

এই ঠিকানাটি আমাদের ব্রিজের মতো একই সাবনেটে থাকা উচিত। অন্য কথায়, সাদা লাস্ট অক্টেট বাড়ান।

sudo ifconfig <device> <ip address> up

আমাদের কেসে:

sudo ifconfig eth3 192.168.3.101 up

৮. আগে যা যা করলাম সেটি সব আবার রিপিট করুন

আনকাট ভার্সনের শুরুতে ফিরে যান এবং পুরো সেটআপ আবার রান করুন। এবং আবার, এটি কাজ করবে না। ম্যাজিক?

উপসংহার

যেহেতু দেখা যাচ্ছে, লিনাক্স ভার্চুয়াল মেশিনে ৩ডি এক্সিলারেশন উপভোগ করা ৯৯.৯৯৯৯৯৫% ইউজারের বাইরে, আমার মতো জ্ঞানী গিকদেরও। প্রজেক্টটি, যা কাউকে কাউকে PhD-র মনে হয়, একটি সত্যি একাডেমিক কাজের মত লাগে: এটি অর্ধ-সমাপ্ত এবং সাধারণ মানুষের জন্য অনবহবযোগ্য।

যা আমাকে বিমুখ করে, সেটি হলো দাবি যে "you should all be set" (আপনারা সব সেট হওয়া উচিত) শুধু কিছু মাইনর হ্যাকের পর, যেন আমরা সকালের তাজা ডাওর কাপের কথা বলছি। এবং পাঁচ মিনিটের হ্যাক গিয়ে ৩-৪ ঘন্টার মাইসারি बन গেছে। পৃথিবীতে কেন কেউ ৬ বছর পুরনো Xvnc ভার্সন ব্যবহার করবে এই টাস্কের জন্য?

যাইহোক, আমি মনে করি যা আমাকে সবচেয়ে বেশি বিরক্ত করে, সেটি হলো কেউ আসলে এমন একটি জর্জর অবস্থায় একটি প্রোডাক্ট রিলিজ করেছে। লজ্জাজনক। ভালো, সব কিছু হারায়নি। আমাদের ৩টি কাজে ২টি কাজ করল। VMware-র উইন্ডোজ গেস্টে ডায়রেক্টএক্স (DirectX) সাপোর্ট এবং VirtualBox-র উইন্ডোজ গেস্টে ওপেনজিএল (OpenGL) সাপোর্ট জেমের মত ছিল।

কিন্তু দুঃখ করবেন না! VMware এবং Sun ভার্চুয়ালাইজেশন ইন্ডাস্ট্রি বড় শটস। এটি কেবল সময়ের বিষয় যেন ৩ডি এক্সিলারেশন লিনাক্স ইউজারদের জন্য যারা লিনাক্স গেস্ট চালায় একটি সুখদ বাস্তবতা বने।

সব কিছু বিবেচনা করলে, লিনাক্স হোস্ট/লিনাক্স গেস্ট ৩ডি এক্সিলারেশনের প্রয়োজনীয়তা কম গুরুত্বপূর্ণ মনে হয়। উইন্ডোজ ইউজাররা সম্ভবত শুধু উইন্ডোজ ব্যবহার করবে। যদি এবং যখন তাদের লিনাক্স প্রয়োজন হবে, তারা সবচেয়ে সম্ভবত ডুয়াল-বুট করবে। লিনাক্স ইউজাররা সবচেয়ে সম্ভবত উইন্ডোজ গেস্ট চান, যাতে তারা তাদের প্রয়োজনীয় লিগ্যাসি অ্যাপ্লিকেশনগুলো ব্যবহার করতে পারে, এবং এর জন্য তাদের ইতিমধ্যে একটি সমাধান (বা দুটি) আছে। লিনাক্স-ইন-লিনাক্স ভার্চুয়ালাইজেশন একটি wicket আইডিয়া, কিন্তু অধিকাংশ মানুষের জন্য এটি প্রায়োরিটি নয়। এটি হবে। আমার কথা মনে রাখুন।

এটা শেষ করতে, চলুন রিভিউ করি আমরা এতক্ষণে কী করেছি। আমরা এই আর্টিকেল সিরিজে কিছু মূল্যবান পাঠ শিখেছি। আমরা শিখেছি কিভাবে VMware Server এবং VirtualBox ব্যবহার করব যাতে আমরা আমাদের উইন্ডোজ গেস্টে ৩ডি এক্সিলারেশন উপভোগ করতে পারি। আমরা রাস্তায় আরও কিছু কুল হ্যাক ও ট্রিক শিখেছি। সবচেয়ে গুরুত্বপূর্ণ, আমরা শিখেছি ডেস্কটপ ভার্চুয়ালাইজেশন தொடரন্তর বিবর্তমান হচ্ছে, আমাদের লক্ষ্য ও কামনায় আমাদের আরও آگলে নিয়ে যাচ্ছে।

চিয়ার্স।


  1. ভিএমওয়্যার কনভার্টার (VMware Converter) দিয়ে সমস্যারহিত ভিএম রূপান্তর

  2. ধাপে ধাপে গাইড: VMware Server-এ ভার্চুয়াল মেশিন ক্লোন করা

  3. ভার্চুয়ালবক্সে ৩ডি এক্সিলারেশন মাস্টার করুন: উইন্ডোজ VM-এ OpenGL সক্ষম করুন

  4. VMware VM-এ DirectX দিয়ে ৩ডি এক্সিলারেশন অপ্টিমাইজ করা - টিউটোরিয়াল পার্ট ১