मैं कई अतिथि OSes चलाने के लिए अपने लिनक्स मशीन को स्थापित करने की कोशिश कर रहा हूं, उनमें से एक विंडोज वीएम और दूसरा लिनक्स कंटेनर है। यहां लक्ष्य मुझे होस्ट सिस्टम को गड़बड़ करने से रोकने के लिए है, जबकि आधार ऑपरेटिंग सिस्टम को संचालित करने और होस्ट हार्डवेयर के साथ खेलने के लिए स्वतंत्र है। आखिरकार, कंटेनर में अपने डेस्कटॉप को चलाने के शीर्ष पर, मुझे ग्राफिक्स-त्वरित सिमुलेशन चलाने की उम्मीद है, क्योंकि डॉकर में ऐसे अच्छे गिट-जैसे कंटेनर निर्मित संस्करण हैं, जिनका उपयोग करना एक अच्छा विचार था। शायद libvirt LXC के साथ अच्छा होगा, लेकिन डॉकर के विशेषाधिकारित मोड से कंटेनर में डिवाइस को कॉन्फ़िगर नहीं करना आसान हो जाता है।
मैंने थोड़ा शोध किया है और पहले से ही कुछ उत्तरों के साथ आता हूं, लेकिन मुझे यह सब एक साथ रखने में परेशानी हो रही है।
एलएक्ससी में पृष्ठभूमि
LXC से X चलाने से मुझे यह देखने में मदद मिली कि मैं कंटेनर को कैसे कॉन्फ़िगर कर सकता हूं (यानी):
lxc.cgroup.devices.allow = c 226:0 rwm
और का उपयोग कर
mknod -m 666 dri/card0 c 226 0
होस्ट डिवाइस से कनेक्ट करने के लिए कंटेनर के अंदर।
डाक में काम करनेवाला मज़दूर
से CUDA - एक डोकर कंटेनर से GPU का उपयोग करते हुए , मैंने देखा कि मैं LXC बैकएंड साथ डोकर में काम करने के लिए एक ही सेटअप मिल सकती है।
यह मुझे दिखाई दिया कि यदि डॉक कंटेनर विशेषाधिकार प्राप्त मोड में चलाया जाता है, तो यह इस अतिरिक्त कॉन्फ़िगरेशन के बिना सामान्य रूप से GPU तक पहुंच सकता है। इसलिए, मैंने इसका परीक्षण करने के लिए एक बेस सिस्टम, ग्राफिक्स ड्राइवर, एक्सगॉर-सर्वर, एक्सगोर-एक्सिनिट और एक विंडो मैनेजर स्थापित किया।
पहला प्रयास
# startx
Cannot run from a console (or some message like that)
ठीक है, मुझे लगा कि मैं tty2 पर था।
# tty
/dev/console
यही मुझे उम्मीद नहीं थी।
# chvt 2
# tty
/dev/tty2
ठीक है, ऐसा लगता है जैसे कि काम किया। चलिए # startx
फिर कोशिश करते हैं। यह केंद्र में कर्सर के साथ, खिड़की प्रबंधक शुरू कर दिया। कोई माउस प्रतिक्रिया नहीं। कोई कीबोर्ड प्रतिक्रिया नहीं। चलो के साथ tty को बदलने की कोशिश करते हैं Ctrl-Alt+F3
। कोई जवाब नहीं। खैर, ऐसा लग रहा है कि मुझे ठंड को रिबूट करना होगा।
दूसरा प्रयास
# tty
/dev/console
# chvt 2
# tty
/dev/console
क्या? मैं इसे अब बदल नहीं सकते?
निरंतर
एक और समय की कोशिश करने के बाद, मुझे टीटीई बदलने के लिए मिला, और startx ने फिर से कंप्यूटर को फ्रीज कर दिया।
अब क्या?
तो, मैं अब एक भाव में हूं। मैं वास्तव में एक कंटेनर का उपयोग करने में सक्षम होना चाहता हूं - डॉकर को पसंद किया गया, libvirt के साथ LXC भी स्वीकार्य है - एक दुबला मेजबान ओएस रखते हुए मेरे दैनिक ऑपरेटिंग सिस्टम के रूप में चलाने के लिए।
क्या यहां विशेषाधिकार प्राप्त मोड के साथ डॉकर का उपयोग करना सबसे अच्छा है, या स्पष्ट एलएक्ससी बैकएंड का उपयोग करना और ऊपर सूचीबद्ध विकल्पों का प्रयास करना है?
मैं अपने विंडोज vm को प्रबंधित करने के लिए पहले से ही libvirt (संभवतः vagrav-libvirt के तहत) का उपयोग करने की योजना बना रहा हूं, इसलिए मेरे लिए इस मामले में libvirt या vagant-LXC का उपयोग करना उसी के बारे में होगा?
संपादित करें: एलएक्ससी बनाम डॉकर को पढ़ते हुए , मुझे यह महसूस होता है कि चूंकि डॉकर और डॉकटर कंटेनर एकल-अनुप्रयोग वातावरण के लिए हैं, शायद इसलिए मेरे दैनिक ऑपरेटिंग सिस्टम के रूप में चलाने के लिए डॉकर के बजाय एलएक्ससी का उपयोग करना सबसे अच्छा होगा। विचार?
संपादित करें: मुझे पता चला है कि, docker की तरह, एक lxc-device कमांड है जो मुझे cgroups और mknin चरणों को बायपास करने की अनुमति देता है। जबकि इससे पहले कि मैं अपने सिस्टम को शुरू करने और फ्रीज करने के लिए x प्राप्त करने में सक्षम था, अब यह केवल त्रुटियां है। शायद मैं अंततः इसका पता लगा सकता हूं, क्योंकि कोई भी व्यक्ति वहां से बाहर नहीं निकलता है।
अपडेट: मेरे पास माउस काम कर रहा है। अतिथि पर, मैंने xf86-input-mouse और xf86-input-keyboard स्थापित किया। मेजबान पर, मैंने निम्नलिखित भाग किया:
# lxc-device -n g1 add /dev/input/mice
# lxc-device -n g1 add /dev/dri/card0
# lxc-device -n g1 add /dev/dri/controlD64
# lxc-device -n g1 add /dev/dri/renderD128
# lxc-device -n g1 add /dev/fb0
# lxc-device -n g1 add /dev/tty2
काम करता है!
startx
के साथ exec twm
है, लेकिन पूरी बात मेरे नजरिए से जम गया। कीबोर्ड या माउस का कोई जवाब नहीं।