यह वर्चुअलाइजेशन पर तीसरा लेख है। और शायद सबसे कठिन। अब तक, हमें VMware उत्पादों में DirectX समर्थन और VirtualBox में OpenGL समर्थन मिला है, दोनों ही मामलों में केवल विंडोज गेस्ट के लिए उपलब्ध। होस्ट प्लेटफॉर्म की पसंद मायने नहीं रखती थी। लेकिन लिनक्स गेस्ट के बारे में क्या?
मुझे लगा कि यह होने वाला नहीं है। लेकिन फिर, मैंने linux.com पर एक लेख पढ़ा, जिसमें दिखाया गया था कि VMGL नामक एक एप्लिकेशन का उपयोग करके लिनक्स गेस्ट पर 3D का आनंद कैसे लिया जा सकता है। यह आशाजनक से कहीं अधिक लग रहा था। यह बहुत अच्छा लग रहा था; लेकिन यह मुश्किल भी लग रहा था। यह केवल 5-10 मिनट की हैकिंग नहीं थी। कार्य बड़ा था। इसलिए, मैंने यह देखने का फैसला किया कि क्या यह वास्तव में किया जा सकता है।
और उत्तर है...
उत्तर है: जब आप एक लेख/ट्यूटोरियल/गाइड/हाउ-टू देखते जो "यह काम करना चाहिए" और "आपको बस इतना करना है..." जैसे वाक्यांशों का उपयोग करता है - चेतावनी दीजिए! आप बड़ी मुसीबत में हैं।
मूल लेख, साथ ही लेखक के एप्लिकेशन दस्तावेज़, उस 90% गंदे काम को ध्यान में रखने में विफल रहते हैं जो आपको अपने लक्ष्य के करीब पहुंचने के लिए करना होगा। इस ट्यूटोरियल में, मैं आपको उन सभी गंभीर विवरणों को दिखाने जा रहा हूं जो लिनक्स वर्चुअल मशीनों में 3D को काम करने में (शायद) शामिल हैं। P.S. आप पहले दो लेखों में अधिक पढ़ सकते हैं:
वर्चुअल मशीनों में 3D त्वरण - भाग 1: VMware और DirectX - ट्यूटोरियल
वर्चुअल मशीनों में 3D त्वरण - भाग 2: VirtualBox और OpenGL - ट्यूटोरियल
VMGL: OpenGL 3D त्वरण - अनकट संस्करण
हम VMware सर्वर से शुरू करेंगे और फिर VirtualBox पर भी यही कोशिश करेंगे।
इंस्टॉलेशन
पैकेज डाउनलोड करना और इंस्टॉल करना आसान है। वे RPM प्रारूप में हैं, इसलिए यदि आप डेबियन-आधारित डिस्ट्रो (जैसे Ubuntu) चला रहे हैं, तो आपको पहले 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 इंस्टॉल करते समय, आपको कोई (दृश्यमान) त्रुटि दिखाई नहीं देगी। हालांकि, स्रोतों का उपयोग करके इंस्टॉल करने की कोशिश करना एक पूर्ण गड़बड़ साबित हुई। आपको ढेर सारी निर्भरताओं को पूरा करना होगा, जिसमें सभी बिल्ड-एसेंशियल पैकेज - gcc, make, कर्नेल स्रोत, कर्नेल हेडर - और कई अन्य शामिल हैं, जैसे imake, python और opengl हेडर।
दुर्भाग्य से, लेखक आपको आवश्यक निर्भरताओं की पूरी सूची देने की जहमत नहीं उठाता, इसलिए आपको परीक्षण और त्रुटि से अनुमान लगाना होगा कि आपको क्या चाहिए या नहीं चाहिए।
और स्रोत पूरी तरह से टूटा हुआ प्रतीत होता है:
और Ubuntu गेस्ट पर:
इस स्तर पर आप हार मानने की संभावना रखते हैं। लेकिन यदि आपने RPM/DEB पैकेज का उपयोग किया है, तो आप सोच सकते हैं कि सब कुछ ठीक हो गया, इसलिए आप आगे बढ़ते हैं...
मॉड्यूल लोड करें
आपका अगला कदम xorg.conf फ़ाइल को बदलना है। इस तरह का एक खंड जोड़ें:
Section "Module" Load "vmglext" EndSection
परिवर्तनों को प्रभावी करने के लिए गेस्ट X विंडोज को पुनरारंभ करें (Ctrl + Alt + Backspace)।
Xvnc सर्वर शुरू करें
अगला, गेस्ट में, संशोधित Xvnc सर्वर लॉन्च करें जो हमारे लिए सभी जादुई OpenGL टनलिंग करने वाला है।
आह, यहां मुश्किल हिस्सा आता है। चूंकि लेखक ने सर्वर के एक पुराने संस्करण का उपयोग किया था, किसी अज्ञात कारण से, सबसे अधिक संभावना है कि उन्होंने अपने विश्वविद्यालय में जो कुछ भी इस्तेमाल किया था, वह आधुनिक वितरण पर काम नहीं करेगा, क्योंकि यह फ़ाइलों और फ़ोल्डरों के स्थानों को मानता है जो आधुनिक वितरण पर मौजूद नहीं हैं।
SUSE 11.0 और Ubuntu 8.10 दोनों पर, मुझे सर्वर को बिना किसी त्रुटि के चलाने के लिए काफी हैकिंग करनी पड़ी। आपको बहुत सारी त्रुटियां मिलेंगी, कुछ इस तरह:
यह वही होता है जब 2003 के पैकेज एप्लिकेशन बनाने के लिए उपयोग किए जाते हैं। सौभाग्य से, समाधान "सरल" है। तो, समस्या को ठीक करने के लिए:
rgb.txt डाउनलोड करें
यह हमारी पहली त्रुटि है। फ़ाइल को इंटरनेट पर कहीं खोजें (इसे गूगल करें)। इसे डाउनलोड करें और वहां रखें जहां पैकेज को इसे खोजने की उम्मीद है। फ़ाइल में ही, किसी भी खाली लाइन को हटा दें, क्योंकि वे सिंटैक्स त्रुटियां फेंक देंगे।
फ़ाइल को वहां रखें जहां 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
तो यह ऐसा दिखता है:
बदसूरत लगता है, और यह है!
आपका अगला कदम उन सभी लापता फोंट के लिए भी प्रतीकात्मक लिंक बनाना है।
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
और फिर आपको मिलता है:
अब, जब आप Xvnc सर्वर शुरू करते हैं, तब भी आपको त्रुटियां मिलेंगी, लेकिन इस बार, यह काम करेगा:
अब, होस्ट पर, vncviewer चलाएं। कहने की जरूरत नहीं, गेस्ट के पास एक IP एड्रेस होना चाहिए जो होस्ट से पहुंच योग्य हो। जिसका मतलब है कि आपको गेस्ट वर्चुअल मशीनों के लिए या तो ब्रिज्ड या NAT नेटवर्किंग की आवश्यकता है।
vncviewer guest-ip-address:1
यह इस तरह दिखेगा:
गेस्ट पर, GLSTUB निर्यात करें:
export GLSTUB=guest-ip-address:port
हमारे मामले में, हम देखते हैं कि GLSTUB पोर्ट 7001 की ओर इशारा करता है। और हमारा गेस्ट IP एड्रेस 192.168.34.129 है, इसलिए हम GLSTUB को इस तरह निर्यात करेंगे:
export GLSTUB=192.168.34.129:7001
और अब, जादू! सब कुछ काम करना चाहिए।
उम, केवल यह काम नहीं करता। glxinfo चलाने से vmglext ड्राइवर उपयोग में नहीं दिखता और सुझाव के अनुसार glxgears चलाने से पहले जैसा ही निराशाजनक प्रदर्शन दिखाता है। जो आश्चर्य की बात नहीं है, टूटे हुए पैकेजों को देखते हुए।
VirtualBox में सब कुछ फिर से करें
मुझे लगा कि VMware सर्वर अपने NAT और मालिकाना कोड के साथ समस्या थी। इसलिए मैंने वही तरकीब आजमाई, Ubuntu होस्ट का उपयोग करके, VirtualBox OSE संस्करण चला रहा, Ubuntu गेस्ट के साथ। मैंने ब्रिज्ड नेटवर्किंग भी कॉन्फ़िगर किया ताकि यह काम करे।
हालांकि ब्रिज्ड नेटवर्किंग कॉन्फ़िगर करना हाथ में विषय से विशेष रूप से संबंधित नहीं है, यहां उन सुंदर कमांड का सेट है जिन्हें आपको होस्ट और गेस्ट को संचार करने के लिए चलाना होगा। अधिक विवरण के लिए, आप पढ़ना चाह सकते हैं:
VirtualBox - कम्युनिटी Ubuntu दस्तावेज़ीकरण
तो यहां मैंने क्या किया (आपकी आवश्यकताओं/कॉन्फ़िगरेशन को सटीक रूप से प्रतिबिंबित नहीं कर सकता):
1. होस्ट पर ब्रिज यूटिलिटीज़ इंस्टॉल करें
पहला कदम ब्रिज यूटिलिटीज़ इंस्टॉल करना है, ताकि हम अपने नेटवर्क इंटरफेस को ब्रिज कर सकें और IP एड्रेस साझा कर सकें।
sudo apt-get install bridge-utils
2. नेटवर्क स्क्रिप्ट में ब्रिज घोषित करें
ब्रिज यूटिलिटीज़ इंस्टॉल होने के बाद, आपको इसे नेटवर्क कॉन्फ़िगरेशन फ़ाइल में घोषित करना होगा। डेबियन-आधारित सिस्टम पर, जैसा कि यहां प्रदर्शित किया गया है, कॉन्फ़िगरेशन एक ही फ़ाइल, /etc/network/interfaces में रखे जाते हैं। RedHat-आधारित डिस्ट्रो प्रत्येक नेटवर्क एडाप्टर के लिए अलग-अलग कॉन्फ़िगरेशन स्क्रिप्ट का उपयोग करते थे।
P.S. कृपया अपनी पसंद के एक स्थिर IP एड्रेस का उपयोग करें।
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
3. VirtualBox के लिए वर्चुअल नेटवर्क एडाप्टर घोषित करें
यह VirtualBox को आपके br0 ब्रिज का उपयोग करने की अनुमति देगा:
sudo gedit /etc/vbox/interfaces उपरोक्त फ़ाइल में जोड़ें: vbox0 <your user name> br0
4. नेटवर्क और VirtualBox ड्राइवर पुनरारंभ करें
कॉन्फ़िगरेशन फ़ाइलों में परिवर्तन जोड़े जाने के बाद, हमें परिवर्तनों को प्रभावी करने के लिए नेटवर्क सेवा और VirtualBox दोनों को पुनरारंभ करने की आवश्यकता है।
sudo service networking restart sudo /etc/init.d/virtualbox-ose restart
5. यहां और वहां एक फ़ाइल हैक करें ताकि सही अनुमतियां मिलें
आपको नेटवर्क टनलिंग डिवाइस की अनुमति बदलने की आवश्यकता हो सकती है ताकि VirtualBox भी उनका उपयोग कर सके। यह इस तरह किया जाता है:
sudo chown root:vboxusers /dev/net/tun sudo chmod 666 /dev/net/tun
6. गेस्ट को vbox0 वर्चुअल एडाप्टर का उपयोग करने के लिए कॉन्फ़िगर करें
यह होस्ट मशीन पर किया जाता है, संबंधित वर्चुअल मशीन के लिए सेटिंग्स मेनू तक पहुंचकर। यहां एक प्यारा स्क्रीनशॉट है:
7. गेस्ट को पावर ऑन करें और स्थिर IP एड्रेस असाइन करें
यह पता हमारे ब्रिज की तरह उसी सबनेट से संबंधित होना चाहिए। दूसरे शब्दों में, बस अंतिम ऑक्टेट को एक से बढ़ाएं।
sudo ifconfig <device> <ip address> up हमारे मामले में: sudo ifconfig eth3 192.168.3.101 up
8. पहले किए गए सभी चरणों को दोहराएं
अनकट संस्करण की शुरुआत पर वापस जाएं और पूरे सेटअप को फिर से चलाएं। और फिर, यह काम नहीं करेगा। जादू?
निष्कर्ष
जैसा कि यह पता चला है, लिनक्स वर्चुअल मशीनों पर 3D त्वरण का आनंद लेना 99.999995% उपयोगकर्ताओं से परे है, जिसमें मेरे जैसे जानकार गीक्स भी शामिल हैं। परियोजना, जाहिरा तौर पर किसी की PhD, एक सच्चे अकादमिक कार्य की तरह महसूस होती है: यह आधी-अधूरी है और सामान्य लोगों द्वारा अनुपयोगी है।
जो मुझे हैरान करता है, वह यह दावा है कि "आप सभी सेट हो जाएंगे" केवल कुछ मामूली हैक के बाद, जैसे कि हम ताजा सुबह की ओस के कप की बात कर रहे हों। और पांच मिनट का हैक 3-4 घंटे की पीड़ा में बदल जाता है। पृथ्वी पर कोई 6 साल पुराने Xvnc संस्करण का उपयोग कार्य के लिए क्यों करेगा?
हालांकि, मुझे लगता है कि जो बात मुझे सबसे ज्यादा परेशान करती है, वह यह है कि किसी ने वास्तव में इतने घटिया स्थिति में एक उत्पाद जारी किया। शर्म की बात है। खैर, सब कुछ खो नहीं गया है। हमारे पास 3 में से 2 काम कर रहे थे। विंडोज गेस्ट में VMware का DirectX समर्थन और विंडोज गेस्ट में VirtualBox का OpenGL समर्थन रत्न साबित हुए।
लेकिन शोक न करें! VMware और Sun वर्चुअलाइजेशन उद्योग में बड़े शॉट हैं। यह केवल समय की बात है जब 3D त्वरण लिनक्स उपयोगकर्ताओं के लिए लिनक्स गेस्ट चलाने के लिए एक खुशहाल वास्तविकता बन जाएगी।
जब सभी चीजों को ध्यान में रखा जाता है, तो लिनक्स होस्ट/लिनक्स गेस्ट 3D त्वरण की आवश्यकता कम महत्वपूर्ण लगती है। विंडोज उपयोगकर्ता शायद केवल विंडोज का उपयोग करेंगे। यदि और जब उन्हें लिनक्स की आवश्यकता होगी, तो वे सबसे अधिक संभावना डुअल-बूट करेंगे। लिनक्स उपयोगकर्ता सबसे अधिक संभावना विंडोज गेस्ट चाहेंगे, ताकि वे उन विरासत अनुप्रयोगों का उपयोग कर सकें जिनकी उन्हें आवश्यकता है, और इसके लिए उनके पास पहले से ही एक समाधान (या दो) है। लिनक्स-इन-लिनक्स वर्चुअलाइजेशन एक दुष्ट विचार है, लेकिन यह ज्यादातर लोगों के लिए प्राथमिकता नहीं है। यह होगा। मेरे शब्दों पर ध्यान दें।
इसे समेटने के लिए, आइए समीक्षा करें कि हमने अब तक क्या किया। हमने इस लेख श्रृंखला में कुछ मूल्यवान सबक सीखे। हमने सीखा कि VMware सर्वर और VirtualBox का उपयोग कैसे करें ताकि हम अपने विंडोज गेस्ट में 3D त्वरण का आनंद ले सकें। हमने रास्ते में कुछ और अच्छे हैक और ट्रिक्स सीखे। सबसे महत्वपूर्ण बात, हमने सीखा कि डेस्कटॉप वर्चुअलाइजेशन निरंतर विकास में है, जो हमें हमारे लक्ष्यों और इच्छाओं में आगे ले जा रहा है।
चीयर्स।