वर्चुअलाइजेशन पर यह तीसरा लेख है। और शायद सबसे कठिन। अब तक, हमारे पास VMware उत्पादों में DirectX समर्थन और VirtualBox में OpenGL समर्थन है, दोनों ही मामलों में केवल Windows मेहमानों के लिए उपलब्ध है। मेजबान मंच का चुनाव कोई मायने नहीं रखता था। लेकिन लिनक्स मेहमानों के बारे में क्या? पी>
मैंने सोचा कि यह होना नहीं था। लेकिन फिर, मैंने linux.com पर एक लेख पढ़ा, जिसमें दिखाया गया था कि कैसे VMGL नामक एप्लिकेशन का उपयोग करके Linux मेहमानों पर 3D का आनंद लिया जा सकता है। यह आशाजनक से अधिक लग रहा था। यह बहुत अच्छा लग रहा था; लेकिन यह भी मुश्किल लग रहा था। यह कोई महज 5-10 मिनट की हैकिंग नहीं थी। टास्क बहुत बड़ा था। इसलिए, मैंने यह देखने का निर्णय लिया है कि क्या वास्तव में ऐसा किया जा सकता है। पी>
और उत्तर है...
उत्तर है:जब आप कोई लेख/ट्यूटोरियल/गाइड/कैसे-कैसे देखते हैं तो उसमें "इसे काम करना चाहिए" और "ऑल यू हैड टू डू..." जैसे वाक्यांशों का उपयोग किया जाता है - चेतावनी दी जाए! आप बहुत परेशानी में हैं। पी>
मूल लेख, साथ ही लेखक के आवेदन दस्तावेज, लगभग 90% गंदे काम को ध्यान में रखने में विफल रहते हैं जो आपको अपने लक्ष्य के करीब पहुंचने के लिए करना होगा। इस ट्यूटोरियल में, मैं आपको वे सभी भयानक विवरण दिखाने जा रहा हूँ जो लिनक्स वर्चुअल मशीनों में आपके 3D को काम करने के लिए (शायद) शामिल हैं। पी.एस. आप पहले दो लेखों में अधिक पढ़ सकते हैं:
आभासी मशीनों में 3डी त्वरण - भाग 1:वीएमवेयर और डायरेक्टएक्स - ट्यूटोरियल
आभासी मशीनों में 3डी त्वरण - भाग 2:वर्चुअलबॉक्स और ओपनजीएल - ट्यूटोरियल
VMGL:OpenGL 3D एक्सेलेरेशन - अनकट वर्शन
हम VMware सर्वर से शुरुआत करेंगे और फिर VirtualBox पर इसे आजमाएंगे। पी>
इंस्टालेशन
संकुल को डाउनलोड करना और उन्हें स्थापित करना आसान है। वे RPM प्रारूप में हैं, इसलिए यदि आप डेबियन-आधारित डिस्ट्रोज़ (उबंटू की तरह) चला रहे हैं, तो आपको पहले एलियन पैकेज स्थापित करना होगा और RPM को DEBs में बदलना होगा। तो सबसे पहले, एलियन स्थापित करें:
sudo apt-get install एलियनफिर, RPM संकुल को DEB में बदलें:
एलियन -के पैकेज.आरपीएम पैकेज.डेबअंत में, उन्हें स्थापित करें:
आरपीएम -आई पैकेज.आरपीएमया
dpkg -i package.deb
वास्तविक VMGL संकुल के लिए सामान्य नाम बदलें और उन्हें स्थापित करें, एक बार मेजबान पर और एक अतिथि पर। पी>
ध्यान दें:आरपीएम/डीईबी स्थापित करते समय, आप कोई (दृश्यमान) त्रुटि नहीं देखेंगे। हालाँकि, स्रोतों का उपयोग करके स्थापित करने का प्रयास पूरी तरह से गड़बड़ साबित हुआ। आपको सभी बिल्ड-एसेंशियल पैकेज - जीसीसी, मेक, कर्नेल सोर्स, कर्नेल हेडर - प्लस कई अन्य, जैसे कि इमेक, पायथन और ओपनग्ल हेडर सहित, निर्भरताओं की एक बहुतायत को पूरा करना होगा। पी>
दुर्भाग्य से, लेखक आपको आवश्यक निर्भरताओं की पूरी सूची देने के लिए परेशान नहीं होता है, इसलिए आपको अनुमान लगाना होगा, परीक्षण और त्रुटि से, आपको क्या चाहिए या क्या नहीं। पी>
और स्रोत पूरी तरह टूटा हुआ लगता है:
पी>
पी>
और उबंटू अतिथि पर:
पी>
यह काफी संभावना है कि आप इस स्तर पर हार मान लेंगे। लेकिन अगर आपने RPM/DEB पैकेज का उपयोग किया है, तो आप सोच सकते हैं कि सब कुछ काम कर गया, इसलिए आप आगे बढ़ें ...
मॉड्यूल लोड करें
आपका अगला कदम xorg.conf फ़ाइल को बदलना है। इस तरह एक खंड जोड़ें:
अनुभाग "मॉड्यूल"लोड "vmglext"
अंतअनुभाग
परिवर्तनों को प्रभावी करने के लिए अतिथि X विंडो (Ctrl + Alt + Backspace) को पुनरारंभ करें। पी>
Xvnc सर्वर प्रारंभ करें
अगला, अतिथि में, संशोधित Xvnc सर्वर लॉन्च करें जो हमारे लिए सभी जादुई OpenGL टनलिंग करने वाला है। पी>
आह, यहाँ पेचीदा हिस्सा आता है। चूंकि लेखक ने किसी अज्ञात कारण से सर्वर के एक प्राचीन संस्करण का उपयोग किया था, सिवाय इसके कि उन्होंने अपने विश्वविद्यालय में जो कुछ भी उपयोग किया था, उसे छोड़कर, यह आधुनिक वितरणों पर काम करने में विफल हो जाएगा, क्योंकि यह उन फ़ाइलों और फ़ोल्डरों के स्थान को मान लेता है जो मौजूद नहीं हैं आधुनिक वितरण पर। पी>
SUSE 11.0 और Ubuntu 8.10 दोनों पर, सर्वर को बिना किसी त्रुटि के चलाने के लिए मुझे काफी हैकिंग करनी पड़ी। आपको बहुत सी त्रुटियाँ मिलेंगी, कुछ इस तरह:
पी>
ऐसा तब होता है जब 2003 पैकेज का उपयोग एप्लिकेशन बनाने के लिए किया जाता है। सौभाग्य से, समाधान "सरल" है। तो, समस्या को ठीक करने के लिए:
rgb.txt डाउनलोड करें
यह हमारी पहली गलती है। फ़ाइल को इंटरनेट पर कहीं खोजें (इसे google करें)। इसे डाउनलोड करें और इसे वहां रखें जहां पैकेज इसे खोजने की उम्मीद करता है। फ़ाइल में ही, किसी भी खाली लाइन को हटा दें, क्योंकि वे सिंटैक्स त्रुटियां फेंक देंगे। पी>
फ़ाइल को वहां रखें जहां Xvnc सर्वर इसकी अपेक्षा करता है - या बेहतर, इसे /etc/X11/rgb.txt के अंतर्गत रखें और सांकेतिक लिंक बनाएं:
सीडी /usr/X11R6/lib/X11सुडो एलएन -एस /usr/share/X11/rgb.txt
सीडी /यूएसआर/शेयर/X11
सुडो एलएन -एस /etc/X11/rgb.txt
तो ऐसा दिखता है:
बदसूरत लग रहा है, और यह है! पी>
आपका अगला कदम उन सभी लापता फोंट के लिए भी प्रतीकात्मक लिंक बनाना है। पी> सीडी /usr/X11R6/lib/X11/fonts
सुडो एलएन -एस /usr/share/fonts/X11/100dpi
सुडो एलएन -एस /usr/share/fonts/X11/75dpi
सुडो ln -s /usr/share/fonts/X11/encodings
सुडो ln -s /usr/share/fonts/X11/misc
सुडो एलएन -एस /usr/share/fonts/X11/Type1
sudo ln -s /usr/share/fonts/X11/util
और फिर आपको मिलता है:
अब, जब आप Xvnc सर्वर शुरू करते हैं, तब भी आपको त्रुटियाँ मिलेंगी, लेकिन इस बार, यह काम करेगा:
पी>
अब, होस्ट पर, vncviewer चलाएँ। कहने की जरूरत नहीं है, अतिथि के पास एक आईपी पता होना चाहिए जो मेजबान से पहुंच योग्य हो। जिसका अर्थ है कि आपको अतिथि वर्चुअल मशीनों के लिए या तो ब्रिजेड या NAT नेटवर्किंग की आवश्यकता है। पी> vncviewer अतिथि-आईपी-पता:1
यह इस प्रकार दिखेगा:
पी>
अतिथि पर, GLSTUB निर्यात करें:
निर्यात GLSTUB =अतिथि-आईपी-पता:बंदरगाहहमारे मामले में, हम देखते हैं कि GLSTUB पोर्ट को 7001 पर इंगित करता है। और हमारा अतिथि IP पता 192.168.34.129 है, इसलिए हम GLSTUB को इस तरह निर्यात करेंगे:
निर्यात GLSTUB=192.168.34.129:7001और अब, जादू! सब कुछ काम करना चाहिए। पी>
उम, केवल यह नहीं है। Glxinfo चलाने से vmglext ड्राइवर उपयोग में नहीं दिखता है और सुझाव के अनुसार glxgears चलाना पहले की तरह ही निराशाजनक प्रदर्शन दिखाता है। टूटे हुए पैकेजों को देखते हुए जो आश्चर्य की बात नहीं है। पी>
VirtualBox में सब कुछ फिर से करें
मैंने सोचा था कि NAT के साथ VMware सर्वर और इसका मालिकाना कोड मुद्दा था। इसलिए मैंने उबंटु अतिथि के साथ वर्चुअलबॉक्स ओएसई संस्करण चलाने वाले उबंटू होस्ट का उपयोग करके एक ही चाल की कोशिश की। मैंने यह काम करने के लिए ब्रिजिंग नेटवर्किंग को भी कॉन्फ़िगर किया है। पी>
जबकि ब्रिज्ड नेटवर्किंग को कॉन्फ़िगर करना विशेष रूप से विषय से संबंधित नहीं है, यहाँ आदेशों का सुंदर सेट है जिसे आपको मेजबान और अतिथि संचार प्राप्त करने के लिए चलाना होगा। अधिक विवरण के लिए, आप पढ़ना चाहेंगे:
वर्चुअलबॉक्स - सामुदायिक उबुंटू प्रलेखन
तो यहाँ मैंने क्या किया है (हो सकता है कि आपकी आवश्यकताओं/कॉन्फ़िगरेशन को सटीक रूप से प्रतिबिंबित न करे):
1. होस्ट पर ब्रिज उपयोगिताओं को स्थापित करें
पहला कदम ब्रिज उपयोगिताओं को स्थापित करना है, ताकि हम अपने नेटवर्क इंटरफेस को ब्रिज कर सकें और आईपी पते साझा कर सकें। पी> sudo apt-get install ब्रिज-बर्तन
2. नेटवर्क स्क्रिप्ट में ब्रिज की घोषणा करें
ब्रिज उपयोगिताओं के स्थापित होने के बाद, आपको इसे नेटवर्क कॉन्फ़िगरेशन फ़ाइल में घोषित करना होगा। डेबियन-आधारित सिस्टम पर, जैसा कि यहां दिखाया गया है, कॉन्फ़िगरेशन को एक फ़ाइल में रखा जाता है, /etc/network/interfaces. RedHat-आधारित डिस्ट्रोज़ ने प्रत्येक नेटवर्क एडेप्टर के लिए अलग-अलग कॉन्फ़िगरेशन स्क्रिप्ट का उपयोग किया। पी>
पी.एस. कृपया अपनी पसंद के स्थिर IP पते का उपयोग करें। पी> सुडो जीएडिट /आदि/नेटवर्क/इंटरफेस
उपरोक्त फ़ाइल में जोड़ें:
ऑटो बीआर0
iface br0 inet स्थिर
पता 192.168.3.100
नेटमास्क 255.255.255.0
गेटवे 192.168.3.1
ब्रिज_पोर्ट्स eth0 vbox0
3. वर्चुअलबॉक्स के लिए वर्चुअल नेटवर्क एडॉप्टर घोषित करें
यह वर्चुअलबॉक्स को आपके br0 ब्रिज का उपयोग करने की अनुमति देगा:
सूडो जीएडिट /etc/vbox/interfacesउपरोक्त फ़ाइल में जोड़ें:
vbox0 <आपका उपयोगकर्ता नाम> br0
4. नेटवर्क और वर्चुअलबॉक्स ड्राइवरों को पुनः प्रारंभ करें
कॉन्फ़िगरेशन फ़ाइलों में परिवर्तन जोड़े जाने के बाद, परिवर्तनों को प्रभावी करने के लिए हमें नेटवर्क सेवा और वर्चुअलबॉक्स दोनों को पुनरारंभ करना होगा। पी> सुडो सेवा नेटवर्किंग पुनरारंभ करें
सुडो /etc/init.d/virtualbox-ose पुनरारंभ करें
5. सही अनुमतियां प्राप्त करने के लिए इधर-उधर फाइल हैक करें
आपको नेटवर्क टनलिंग उपकरणों की अनुमति बदलने की आवश्यकता हो सकती है ताकि वर्चुअलबॉक्स भी उनका उपयोग कर सके। यह इस प्रकार किया जाता है:
सुडो चोउन रूट:vboxusers /dev/net/tunसुडो चामोद 666 /dev/net/tun
6. vbox0 वर्चुअल एडेप्टर
का उपयोग करने के लिए अतिथि को कॉन्फ़िगर करेंयह प्रासंगिक वर्चुअल मशीन के लिए सेटिंग मेनू तक पहुंचकर, होस्ट मशीन पर किया जाता है। यहाँ एक सुंदर स्क्रीनशॉट है:
पी>
7. अतिथि को सक्रिय करें और स्थिर IP पता निर्दिष्ट करें
यह पता उसी सबनेट का होना चाहिए जैसे हमारा ब्रिज। दूसरे शब्दों में, बस अंतिम ऑक्टेट को एक से बढ़ाएं। पी> sudo ifconfig <डिवाइस>
अनकट संस्करण की शुरुआत में वापस जाएं और पूरे सेटअप को फिर से चलाएं। और फिर, यह काम नहीं करेगा. जादू? पी>
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. It will happen. 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. पी>
प्रोत्साहित करना। पी>
हमारे मामले में:
सुडो ifconfig eth3 192.168.3.101 ऊपर 8. हमारे द्वारा पहले किए गए सभी चरणों को दोहराएं
निष्कर्ष