এটি ভার্চুয়ালাইজেশনের তৃতীয় নিবন্ধ। এবং সম্ভবত সবচেয়ে কঠিন এক। এখন পর্যন্ত, আমাদের ভিএমওয়্যার পণ্যগুলিতে ডাইরেক্টএক্স সমর্থন এবং ভার্চুয়ালবক্সে ওপেনজিএল সমর্থন রয়েছে, উভয় ক্ষেত্রেই শুধুমাত্র উইন্ডোজ অতিথিদের জন্য উপলব্ধ। হোস্ট প্ল্যাটফর্মের পছন্দ কোন ব্যাপার না. কিন্তু লিনাক্স গেস্টদের কি হবে?
আমি ভেবেছিলাম এটি হওয়ার কথা নয়। কিন্তু তারপরে, আমি linux.com-এ একটি নিবন্ধ পড়েছি, যেখানে দেখানো হয়েছে যে ভিএমজিএল নামক একটি অ্যাপ্লিকেশন ব্যবহার করে লিনাক্স অতিথিদের কীভাবে 3D উপভোগ করা যায়। এটা প্রতিশ্রুতি চেয়ে বেশি লাগছিল. এটা দারুণ লাগছিল; কিন্তু এটা কঠিন লাগছিল. এটি নিছক 5-10 মিনিটের হ্যাকিং ছিল না। কাজটা অনেক বড় ছিল। সুতরাং, আমি সিদ্ধান্ত নিয়েছি যে এটি সত্যিই করা যায় কিনা।
এবং উত্তর হল...
উত্তরটি হল:আপনি যখন একটি নিবন্ধ/টিউটোরিয়াল/গাইড/কিভাবে করতে দেখেন যেটি "এটি কাজ করা উচিত" এবং "আপনাকে যা করতে হবে তা হল..."-এর মতো বাক্যাংশ ব্যবহার করে - সতর্ক করুন! আপনি অনেক ঝামেলার মধ্যে আছেন।
মূল নিবন্ধ, সেইসাথে লেখকের অ্যাপ্লিকেশন ডকুমেন্টেশন, প্রায় 90% নোংরা কাজকে বিবেচনা করতে ব্যর্থ হয় যা আপনাকে কেবলমাত্র আপনার লক্ষ্যের কাছাকাছি যাওয়ার জন্য করতে হবে। এই টিউটোরিয়ালে, আমি আপনাকে লিনাক্স ভার্চুয়াল মেশিনে আপনার 3D কাজ করার সাথে জড়িত (হয়তো) সমস্ত ভয়াবহ বিবরণ দেখাতে যাচ্ছি। পুনশ্চ. আপনি প্রথম দুটি নিবন্ধে আরও পড়তে পারেন:
ভার্চুয়াল মেশিনে 3D ত্বরণ - পার্ট 1:VMware এবং DirectX - টিউটোরিয়াল
ভার্চুয়াল মেশিনে 3D ত্বরণ - পার্ট 2:ভার্চুয়ালবক্স এবং ওপেনজিএল - টিউটোরিয়াল
VMGL:OpenGL 3D ত্বরণ - আনকাট সংস্করণ
আমরা VMware সার্ভার দিয়ে শুরু করব এবং তারপর VirtualBox-এ একই চেষ্টা করব।
ইনস্টলেশন
প্যাকেজগুলি ডাউনলোড করা এবং সেগুলি ইনস্টল করা সহজ। এগুলি RPM ফর্ম্যাটে রয়েছে, তাই আপনি যদি ডেবিয়ান-ভিত্তিক ডিস্ট্রোস চালান (যেমন উবুন্টু), আপনাকে প্রথমে এলিয়েন প্যাকেজ ইনস্টল করতে হবে এবং RPMগুলিকে DEB-তে রূপান্তর করতে হবে। তাই প্রথমে এলিয়েন ইনস্টল করুন:
sudo apt-get install alienতারপর, RPM প্যাকেজগুলিকে DEB:
-এ রূপান্তর করুন alien -k package.rpm package.debঅবশেষে, তাদের ইনস্টল করুন:
rpm -i package.rpmবা
dpkg -i package.deb
প্রকৃত ভিএমজিএল প্যাকেজগুলির জন্য জেনেরিক নামগুলি প্রতিস্থাপন করুন এবং সেগুলি ইনস্টল করুন, একবার হোস্টে এবং একটি অতিথিতে৷
দ্রষ্টব্য:RPM/DEB ইনস্টল করার সময়, আপনি কোন (দৃশ্যমান) ত্রুটি দেখতে পাবেন না। যাইহোক, উত্স ব্যবহার করে ইনস্টল করার চেষ্টা একটি সম্পূর্ণ জগাখিচুড়ি প্রমাণিত. আপনাকে সমস্ত বিল্ড-অত্যাবশ্যক প্যাকেজ সহ প্রচুর নির্ভরতা পূরণ করতে হবে - gcc, make, kernel source, kernel headers - এছাড়াও imake, python এবং opengl হেডারের মতো আরও অনেকগুলি।
দুর্ভাগ্যবশত, লেখক আপনাকে প্রয়োজনীয় নির্ভরতার একটি সম্পূর্ণ তালিকা দিতে বিরক্ত করেন না, তাই আপনাকে পরীক্ষা এবং ত্রুটি দ্বারা অনুমান করতে হবে, আপনার কী প্রয়োজন বা নাও হতে পারে।
এবং উত্সটি একেবারে ভেঙে গেছে বলে মনে হচ্ছে:
এবং উবুন্টু অতিথির উপর:
এই পর্যায়ে আপনি হাল ছেড়ে দেওয়ার সম্ভাবনা রয়েছে। কিন্তু আপনি যদি RPM/DEB প্যাকেজগুলি ব্যবহার করেন, তাহলে আপনি ভাবতে পারেন যে সবকিছু কাজ করেছে, তাই আপনি এগিয়ে যান...
মডিউল লোড করুন
আপনার পরবর্তী পদক্ষেপ হল xorg.conf ফাইলটি পরিবর্তন করা। এই মত একটি বিভাগ যোগ করুন:
বিভাগ "মডিউল""vmglext" লোড করুন
শেষ বিভাগ
পরিবর্তনগুলি কার্যকর করার জন্য গেস্ট এক্স উইন্ডোজ (Ctrl + Alt + ব্যাকস্পেস) পুনরায় চালু করুন।
Xvnc সার্ভার শুরু করুন
এরপরে, গেস্টে, পরিবর্তিত Xvnc সার্ভারটি চালু করুন যা আমাদের জন্য সমস্ত জাদুকরী OpenGL টানেলিং করার কথা।
আহ, এখানে চতুর অংশ আসে. যেহেতু লেখক সার্ভারের একটি প্রাচীন সংস্করণ ব্যবহার করেছেন, একটি অজানা কারণে, সম্ভবত তিনি তার বিশ্ববিদ্যালয়ে যা ব্যবহার করেছেন তা ব্যতীত, এটি আধুনিক বিতরণে কাজ করতে ব্যর্থ হবে, কারণ এটি ফাইল এবং ফোল্ডারগুলির অবস্থান অনুমান করে যা উপস্থিত নেই আধুনিক বিতরণের উপর।
SUSE 11.0 এবং Ubuntu 8.10 উভয় ক্ষেত্রেই, সার্ভারটি কোনো ত্রুটি ছাড়াই চালানোর জন্য আমাকে বেশ কিছুটা হ্যাকিং করতে হয়েছিল। আপনি অনেক ত্রুটি পাবেন, এরকম কিছু:
অ্যাপ্লিকেশন তৈরি করতে 2003 প্যাকেজ ব্যবহার করা হলে এটি ঘটে। ভাগ্যক্রমে, সমাধানটি "সহজ।" সুতরাং, সমস্যাটি সমাধান করতে:
rgb.txt ডাউনলোড করুন
এটা আমাদের প্রথম ভুল. ইন্টারনেটে কোথাও ফাইলটি খুঁজুন (এটি গুগল করুন)। এটি ডাউনলোড করুন এবং যেখানে প্যাকেজ এটি খুঁজে পাওয়ার আশা করে সেখানে এটি রাখুন৷ ফাইলের মধ্যেই, কোনো খালি লাইন মুছে ফেলুন, কারণ তারা সিনট্যাক্স ত্রুটিগুলি ফেলে দেবে।
ফাইলটি যেখানে Xvnc সার্ভার আশা করে সেখানে রাখুন - বা আরও ভাল, এটিকে /etc/X11/rgb.txt এর অধীনে রাখুন এবং প্রতীকী লিঙ্ক তৈরি করুন:
cd/usr/X11R6/lib/X11sudo ln -s /usr/share/X11/rgb.txt
cd/usr/share/X11
sudo ln -s /etc/X11/rgb.txt
তাই এটি এই মত দেখায়:
দেখতে কুৎসিত, এবং এটা!
আপনার পরবর্তী পদক্ষেপ হল সেই সমস্ত অনুপস্থিত ফন্টগুলির জন্য প্রতীকী লিঙ্ক তৈরি করা।
cd/usr/X11R6/lib/X11/fontssudo 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
এবং তারপর আপনি পাবেন:
এখন, যখন আপনি Xvnc সার্ভার শুরু করবেন, তখনও আপনি ত্রুটি পাবেন, কিন্তু এবার, এটি কাজ করবে:
এখন, হোস্টে, vncviewer চালান। বলা বাহুল্য, অতিথির একটি আইপি ঠিকানা থাকা উচিত যা হোস্টের কাছ থেকে পৌঁছানো যায়। যার মানে গেস্ট ভার্চুয়াল মেশিনের জন্য আপনার হয় ব্রিজড বা NAT নেটওয়ার্কিং প্রয়োজন।
vncviewer গেস্ট-আইপি-ঠিকানা:1এটি এভাবে দেখাবে:
অতিথিতে, GLSTUB রপ্তানি করুন:
এক্সপোর্ট GLSTUB=অতিথি-আইপি-ঠিকানা:পোর্টআমাদের ক্ষেত্রে, আমরা দেখতে পাই যে GLSTUB 7001-এ পোর্ট নির্দেশ করে। এবং আমাদের গেস্ট আইপি অ্যাড্রেস হল 192.168.34.129, তাই আমরা GLSTUB এভাবে রপ্তানি করব:
GLSTUB=192.168.34.129:7001 এক্সপোর্ট করুনএবং এখন, জাদু! সবকিছু কাজ করা উচিত.
উম, শুধুমাত্র এটা না. glxinfo চালনা করা vmglext ড্রাইভার ব্যবহারে দেখায় না এবং প্রস্তাবিত glxgears চালনা পূর্বের মত একই অস্বাভাবিক কর্মক্ষমতা দেখায়। ভাঙা প্যাকেজ বিবেচনা করে যা আশ্চর্যজনক নয়।
ভার্চুয়ালবক্সে সবকিছু পুনরায় করুন
আমি ভেবেছিলাম NAT সহ VMware সার্ভার এবং এর মালিকানা কোড সমস্যা ছিল। তাই আমি একই কৌশল চেষ্টা করেছি, একটি উবুন্টু হোস্ট ব্যবহার করে, ভার্চুয়ালবক্স ওএসই সংস্করণ চালানো, উবুন্টু অতিথির সাথে। আমি এই কাজটি করতে ব্রিজড নেটওয়ার্কিং কনফিগার করেছি।
ব্রিজড নেটওয়ার্কিং কনফিগার করার সময় হাতে থাকা বিষয়ের সাথে বিশেষভাবে সম্পর্কিত নয়, এখানে হোস্ট এবং অতিথিদের সাথে যোগাযোগ করার জন্য আপনাকে চালাতে হবে এমন সুন্দর কমান্ডের সেট। আরো বিস্তারিত জানার জন্য, আপনি পড়তে চাইতে পারেন:
ভার্চুয়ালবক্স - কমিউনিটি উবুন্টু ডকুমেন্টেশন
তাই আমি যা করেছি তা এখানে (আপনার চাহিদা/কনফিগারেশন ঠিক প্রতিফলিত নাও হতে পারে):
1. হোস্টে ব্রিজ ইউটিলিটি ইনস্টল করুন
প্রথম ধাপ হল ব্রিজ ইউটিলিটি ইনস্টল করা, যাতে আমরা আমাদের নেটওয়ার্ক ইন্টারফেসগুলি ব্রিজ করতে পারি এবং আইপি ঠিকানাগুলি ভাগ করতে পারি।
sudo apt-get install bridge-utils2. নেটওয়ার্ক স্ক্রিপ্টে ব্রিজ ঘোষণা করুন
ব্রিজ ইউটিলিটিগুলি ইনস্টল করার পরে, আপনাকে নেটওয়ার্ক কনফিগারেশন ফাইলে এটি ঘোষণা করতে হবে। ডেবিয়ান-ভিত্তিক সিস্টেমে, এখানে দেখানো হয়েছে, কনফিগারেশনগুলি একটি একক ফাইলে রাখা হয়, /etc/network/interfaces। RedHat-ভিত্তিক ডিস্ট্রোস প্রতিটি নেটওয়ার্ক অ্যাডাপ্টারের জন্য পৃথকভাবে পৃথক কনফিগারেশন স্ক্রিপ্ট ব্যবহার করে।
পুনশ্চ. আপনার নিজের পছন্দের একটি স্ট্যাটিক আইপি ঠিকানা ব্যবহার করুন.
sudo gedit /etc/network/interfacesউপরের ফাইলে যোগ করুন:
স্বয়ংক্রিয় br0
iface br0 inet স্ট্যাটিক
ঠিকানা 192.168.3.100
নেটমাস্ক 255.255.255.0
গেটওয়ে 192.168.3.1
bridge_ports eth0 vbox0
3. ভার্চুয়ালবক্সের জন্য ভার্চুয়াল নেটওয়ার্ক অ্যাডাপ্টার ঘোষণা করুন
এটি ভার্চুয়ালবক্সকে আপনার br0 ব্রিজ ব্যবহার করার অনুমতি দেবে:
sudo gedit /etc/vbox/interfacesউপরের ফাইলে যোগ করুন:
vbox0 <আপনার ব্যবহারকারীর নাম> br0
4. নেটওয়ার্ক এবং ভার্চুয়ালবক্স ড্রাইভার পুনরায় চালু করুন
কনফিগারেশন ফাইলগুলিতে পরিবর্তনগুলি যোগ করার পরে, পরিবর্তনগুলি কার্যকর করার জন্য আমাদের নেটওয়ার্ক পরিষেবা এবং ভার্চুয়ালবক্স উভয়ই পুনরায় চালু করতে হবে।
sudo পরিষেবা নেটওয়ার্কিং পুনরায় চালু করুনsudo /etc/init.d/virtualbox-ose পুনরায় চালু করুন
5. সঠিক অনুমতি পেতে এখানে এবং সেখানে একটি ফাইল হ্যাক করুন
আপনাকে নেটওয়ার্ক টানেলিং ডিভাইসের অনুমতি পরিবর্তন করতে হতে পারে যাতে ভার্চুয়ালবক্সও সেগুলি ব্যবহার করতে পারে। এটি এইভাবে করা হয়:
sudo chown root:vboxusers/dev/net/tunsudo chmod 666 /dev/net/tun
6. vbox0 ভার্চুয়াল অ্যাডাপ্টার ব্যবহার করতে গেস্ট কনফিগার করুন
প্রাসঙ্গিক ভার্চুয়াল মেশিনের সেটিংস মেনু অ্যাক্সেস করে হোস্ট মেশিনে এটি করা হয়। এখানে একটি সুন্দর স্ক্রিনশট:
7. গেস্টকে পাওয়ার করুন এবং স্ট্যাটিক আইপি অ্যাড্রেস বরাদ্দ করুন
এই ঠিকানাটি আমাদের সেতুর মতো একই সাবনেটের অন্তর্গত হওয়া উচিত। অন্য কথায়, কেবল শেষ অক্টেটকে এক দ্বারা বৃদ্ধি করুন।
sudo ifconfigআমাদের ক্ষেত্রে:
sudo ifconfig eth3 192.168.3.101 আপ
8. আমরা পূর্বে করা সমস্ত পদক্ষেপের পুনরাবৃত্তি করুন
আনকাট সংস্করণের শুরুতে ফিরে যান এবং পুরো সেটআপটি আবার চালান। এবং আবার, এটা কাজ করবে না. জাদু?
উপসংহার
As it turns out, enjoying 3D acceleration on Linux virtual machines is beyond 99.999995% of users, including knowledgeable geeks like me. The project, apparently someone's PhD, does feel like a true academic work:it's half-finished and it's unusable by normal people.
What beats me, though, is the claim that "you should all be set" after only a few minor hacks, as if we're talking cups of fresh morning dew. And the five-minute hack turns out to be 3-4 hours of misery. Why, on Earth, would someone use a 6-year old version of the Xvnc for the task?
However, I think what really annoys me the most is the fact someone actually released a product in such a shabby state. A shame. Well, not all is lost. We've had 2 out 3 working. VMware support for DirectX in Windows guests and VirtualBox support for OpenGL in Windows guests proved to be gems.
But lament not! VMware and Sun are big shots in the virtualization industry. It is only a matter of time before 3D acceleration becomes a happy reality for Linux users running Linux guests.
When all things are taken into consideration, the need for Linux host / Linux guest 3D acceleration seems less important. Windows users will probably only use Windows. If and when they need Linux, they will most likely dual-boot. Linux users will most likely want Windows guests, so they can use the legacy applications they need, and for this they already have a solution (or two). The Linux-in-Linux virtualization is a wicked idea, but it is not a priority with most people. এটা ঘটবে. Mark my words.
To wrap it up, let's review what we did so far. We learned a few valuable lessons in this series of articles. We learned how to use VMware Server and VirtualBox so that we can enjoy 3D acceleration in our Windows guests. We learned a few more cool hacks and tricks along the way. Most importantly, we learned that desktop virtualization is in continuous evolution, taking us further in our goals and desires.
চিয়ার্স।