लिनक्स - एलएक्ससी; सबसे संभव X11 के साथ छवियों को तैनात करना


19

क्या वर्तमान में X11 क्षमताओं के साथ LXC कंटेनरों को सेटअप करना संभव है? मैं सबसे हल्का उपलब्ध X11 कंटेनर (मेमोरी-वार), हार्डवेयर त्वरण प्लस के लिए आगे देख रहा हूं लेकिन आवश्यक नहीं।

यदि यह वर्तमान में संभव नहीं है, या आसानी से उपलब्ध है, तो क्या यह ज्ञात है कि इसे समर्थन देने के लिए कार्यक्षमता को अभी तक लागू करने की आवश्यकता क्या है?

जवाबों:


15

हाँ, LXC कंटेनर के अंदर एक पूर्ण X11 डेस्कटॉप वातावरण चलाना संभव है।

अभी, मैं आर्क लिनक्स पर ऐसा करता हूं। मैं यह नहीं कहूंगा कि यह "प्रकाश" है क्योंकि मैं मानक पैकेज प्रबंधक स्थापित से सामान निकालने की कोशिश नहीं कर रहा हूं, लेकिन मैं यह पुष्टि कर सकता हूं कि यह बहुत अच्छी तरह से काम करता है।

आपको HOST पर किसी भी कर्नेल ड्राइवरों को कंटेनर में स्थापित करना होगा। ग्राफिक्स ड्राइवर के रूप में ऐसी चीजें (मैं एनवीडिया का उपयोग करता हूं)। आपको अपने कंटेनर में डिवाइस को अंदर तक पहुंचाने के लिए अपने कंटेनर को कॉन्फ़िगर करना होगा। फिर आपको यह सुनिश्चित करने की आवश्यकता है कि उन डिवाइस नोड्स कंटेनर (यानी mknod) के अंदर बनाए गए हैं।

तो, आप सवाल का जवाब देने के लिए: हाँ यह काम करता है। अगर मैं कोई और मदद कर सकता हूं या अधिक जानकारी प्रदान कर सकता हूं तो कृपया मुझे बताएं।

--- अतिरिक्त जानकारी प्रदान की ---

मेरे कंटेनर में ... / etc / inittab रन लेवल 5 में शुरू होता है और vt09 का उपयोग करने के लिए "स्लिम" स्लिम को लॉन्च किया जाता है:

 # Path, X server and arguments (if needed)
 # Note: -xauth $authfile is automatically appended
 default_path        /bin:/usr/bin:/usr/local/bin
 default_xserver     /usr/bin/X
 xserver_arguments   -nolisten tcp vt09

मैं अपने वर्तमान वीटी पर एक दूसरे एक्स डिस्प्ले का उपयोग नहीं कर रहा हूं, लेकिन एक पूरी तरह से अलग (मैं सीटीईएल + एएलटी + एफएन का उपयोग करके इस के कई के बीच स्विच कर सकता हूं)।

यदि आप स्लिम का उपयोग नहीं कर रहे हैं, तो आप किसी अन्य vt पर X शुरू करने के लिए इस तरह के निर्माण का उपयोग कर सकते हैं:

 /usr/bin/startx -- :10 vt10

यह X को डिस्प्ले पर शुरू करेगा: 10 और इसे vt10 (CTRL + ALT + F10) पर डालें। इनका मिलान करने की जरूरत नहीं है, लेकिन मुझे लगता है कि अगर यह ऐसा होता है, तो यह बकवास है।

आपको संबंधित उपकरणों को उपलब्ध कराने के लिए अपने कंटेनर कॉन्फिगरेशन की आवश्यकता है, जैसे:

 # XOrg Desktop
 lxc.cgroup.devices.allow = c 4:10 rwm    # /dev/tty10 X Desktop
 lxc.cgroup.devices.allow = c 195:* rwm  # /dev/nvidia Graphics card
 lxc.cgroup.devices.allow = c 13:* rwm   # /dev/input/* input devices

और आपको अपने कंटेनर में उपकरण बनाने की आवश्यकता है:

 # display vt device
 mknod -m 666 /dev/tty10 c 4 10

 # NVIDIA graphics card devices
 mknod -m 666 /dev/nvidia0 c 195 0
 mknod -m 666 /dev/nvidiactl c 195 255

 # input devices
 mkdir  /dev/input           # input devices
 chmod 755 /dev/input
 mknod -m 666 /dev/input/mice c 13 63 # mice

मैंने मैन्युअल रूप से इनपुट उपकरणों को कॉन्फ़िगर किया है (क्योंकि हमारे पास कंटेनर में udev नहीं है)

 Section "ServerFlags"
         Option "AutoAddDevices" "False"
 EndSection

 Section "ServerLayout"
     Identifier     "Desktop"
     InputDevice    "Mouse0" "CorePointer"
     InputDevice    "Keyboard0" "CoreKeyboard"
 EndSection

 Section "InputDevice"
     Identifier "Keyboard0"
     Driver "kbd"
     Option "XkbLayout" "gb"
 EndSection

 Section "InputDevice"
     Identifier "Mouse0"
     Driver "mouse"
     Option "Protocol" "auto"
     Option "Device" "/dev/input/mice"
     Option "ZAxisMapping" "4 5 6 7"
 EndSection

ऊपर एक फ़ाइल /etc/X11/xorg.conf.d/10-input.conf में जा रहा है

यकीन नहीं होता कि इसमें से कोई मदद करेगा, लेकिन सौभाग्य!


मैं इस nouveau के साथ काम करने में सक्षम नहीं था, या nouveau + vesa के साथ। कोई सुराग? क्या मुझे मालिकाना चालक का उपयोग करना होगा?
रॉबिन ग्रीन

मैं मालिकाना ड्राइवर का उपयोग कर रहा हूं। मैंने कुछ और कोशिश नहीं की है। क्या आप आर्कलिनक्स पर हैं? मैंने HOST पर xorg-xserver और nvidia स्थापित किए और कंटेनर के अंदर भी। मैं तब परीक्षण करने के लिए कंटेनर के अंदर xterm और twm स्थापित कर सकता हूं, कह सकता हूं। मेरा रोजमर्रा का डेस्कटॉप OpenBox के आसपास कॉन्फ़िगर किया गया है और एक कंटेनर के अंदर रहता है।
स्टारफ्री

मैं फेडोरा पर हूँ। आप इसे कैसे परख रहे हैं? मैंने जो कोशिश की वह स्क्रीन पर कंटेनर के अंदर एक एक्स सर्वर चला रहा था: 1, जो शानदार तरीके से विफल हो गया (मेजबान एक्स की मृत्यु हो गई)।
रॉबिन ग्रीन

रॉबिन, मैंने आपके लिए अधिक विवरण के साथ मूल उत्तर अपडेट किया है।
स्टार फेरी

2

हां, आप यह कर सकते हैं। आप यह भी उपयोग कर सकते हैं lxc.mount.entryकि आपको सभी mknodकमांड के साथ कंटेनर के अंदर इनिशियलाइज़ेशन स्क्रिप्ट को चलाने की आवश्यकता नहीं है । तो lxc कंटेनर के कॉन्फिग में कुछ इस तरह होना चाहिए:

lxc.cgroup.devices.allow = c 4:7 rwm
lxc.mount.entry = /dev/tty7 dev/tty7 none bind,optional,create=file
lxc.cgroup.devices.allow = c 4:8 rwm
lxc.mount.entry = /dev/tty8 dev/tty8 none bind,optional,create=file
lxc.cgroup.devices.allow = c 10:63 rwm
lxc.mount.entry = /dev/vga_arbiter dev/vga_arbiter none bind,optional,create=file
lxc.cgroup.devices.allow = c 13:* rwm
lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir
lxc.cgroup.devices.allow = c 29:0 rwm
lxc.mount.entry = /dev/fb0 dev/fb0 none bind,optional,create=file
# /dev/dri/card0 AMD Graphics card
lxc.cgroup.devices.allow = c 226:0 rwm 
lxc.cgroup.devices.allow = c 226:64 rwm
lxc.cgroup.devices.allow = c 226:128 rwm
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
#lxc.cgroup.devices.allow = c 195:* rwm  # /dev/nvidia Graphics card
#lxc.mount.entry = /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
#lxc.mount.entry = /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
#lxc.cgroup.devices.allow = c 116:* rwm
#lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir

एक्स के लिए इनपुट उपकरणों को कॉन्फ़िगर करने के लिए, आप उपयोग कर सकते हैं evdev, जो विशेष रूप से उपयोगी है यदि आप xf86-input-keyboardड्राइवर का उपयोग नहीं कर सकते हैं । चूंकि event*कॉन्फ़िगरेशन फ़ाइल (जैसे /usr/share/X11/xorg.conf.d/10-lxc-input.conf) में प्रविष्टियों की सटीक संख्या इस बात पर निर्भर करेगी कि आपके कंटेनर / देव / इनपुट / में क्या है, आप एक स्क्रिप्ट का उपयोग कर सकते हैं:

#!/bin/bash
cat >/usr/share/X11/xorg.conf.d/10-lxc-input.conf << _EOF_
Section "ServerFlags"
     Option "AutoAddDevices" "False"
EndSection
_EOF_

cd /dev/input
for input in event*
do
cat >> /usr/share/X11/xorg.conf.d/10-lxc-input.conf <<_EOF_
Section "InputDevice"
    Identifier "$input"
    Option "Device" "/dev/input/$input"
    Option "AutoServerLayout" "true"
    Driver "evdev"
EndSection
_EOF_
done

यह काम करने के लिए X के लिए पर्याप्त होना चाहिए:

/usr/bin/startx -- :0 vt07

आप ऑडियो को सक्षम भी कर सकते हैं, या तो पासिंग / देव / snd, या tcp या सॉकेट के माध्यम से pulseaudio सेट कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.