นักเทียบท่า - วิธีการเรียกใช้ x สก์ท็อปในภาชนะบรรจุหรือไม่?


10

ฉันพยายามตั้งค่าเครื่องลีนุกซ์ของฉันให้ใช้งานระบบปฏิบัติการ guest หลายระบบหนึ่งในนั้นคือ Windows VM และอีกหนึ่งคอนเทนเนอร์ Linux เป้าหมายที่นี่คือการป้องกันไม่ให้ฉันทำระบบโฮสต์ในขณะที่มีอิสระในการใช้งานระบบปฏิบัติการพื้นฐานและเล่นกับฮาร์ดแวร์โฮสต์ ในที่สุดบนรันเดสก์ท็อปของฉันในคอนเทนเนอร์ฉันหวังว่าจะเรียกใช้การจำลองด้วยกราฟิกเร่งความเร็ว ฯลฯ เนื่องจาก Docker มีเวอร์ชันในตัวที่คล้ายกับคอมไพล์เช่นคอมไพล์มันจึงเป็นความคิดที่ดีที่จะใช้มัน บางที libvirt อาจทำได้ดีเช่นเดียวกับ LXC แต่โหมดสิทธิพิเศษของนักเทียบท่าช่วยให้ไม่ต้องกำหนดค่าอุปกรณ์กับคอนเทนเนอร์

ฉันทำวิจัยเล็กน้อยและได้คำตอบสองสามข้อแล้ว แต่ฉันมีปัญหาในการรวมมันเข้าด้วยกัน

พื้นหลังใน LXC

การรัน X จาก LXCช่วยให้ฉันเห็นว่าฉันสามารถกำหนดค่าคอนเทนเนอร์ด้วย (เช่น) ได้อย่างไร:

lxc.cgroup.devices.allow = c 226:0 rwm

และการใช้

mknod -m 666 dri/card0 c 226 0

ภายในคอนเทนเนอร์เพื่อเชื่อมต่อกับอุปกรณ์โฮสต์

นักเทียบท่า

จากcuda - การใช้ GPU จากตู้เทียบท่าฉันเห็นว่าฉันสามารถตั้งค่าแบบเดียวกันให้ทำงานใน Docker ด้วยแบ็กเอนด์ LXC

ปรากฏว่าสำหรับฉันถ้าหากนักเทียบท่าทำงานในโหมดที่ได้รับสิทธิพิเศษมันสามารถเข้าถึง GPU ได้โดยไม่ต้องมีการกำหนดค่าเพิ่มเติม ดังนั้นฉันจึงใช้ระบบฐานติดตั้งไดรเวอร์กราฟิก, xorg-server, xorg-xinit และผู้จัดการหน้าต่างเพื่อทดสอบมัน

ครั้งแรกลอง

# 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

อะไร? ฉันเปลี่ยนมันไม่ได้เหรอ?

อย่างต่อเนื่อง

หลังจากลองอีกครั้งฉันจะเปลี่ยน tty แล้ว startx ก็แช่แข็งคอมพิวเตอร์อีกครั้ง

เกิดอะไรขึ้น

ดังนั้นตอนนี้ฉันอยู่ที่ทางตัน ฉันต้องการใช้คอนเทนเนอร์ - ซึ่งเป็นที่ต้องการของนักเทียบท่า LXC กับ libvirt ก็ยอมรับได้ - ให้ทำงานเป็นระบบปฏิบัติการรายวันของฉันในขณะที่รักษาระบบปฏิบัติการแบบโฮสต์แบบลีน

เป็นการดีที่สุดที่จะใช้ Docker ด้วยโหมดสิทธิพิเศษที่นี่หรือใช้แบ็กเอนด์ LXC ที่ชัดเจนและลองตัวเลือกที่ระบุไว้ด้านบน

ฉันวางแผนที่จะใช้ libvirt (อาจอยู่ภายใต้ vagrant-libvirt) เพื่อจัดการ Windows vm ของฉันดังนั้นฉันจะใช้ libvirt หรือ LXC คนจรจัดในกรณีนี้ได้หรือไม่

แก้ไข: การอ่านLXC กับ Dockerฉันรู้สึกว่าตั้งแต่ Docker และ Docker container นั้นมีความหมายสำหรับสภาพแวดล้อมของแอปพลิเคชันเดี่ยวบางทีมันจะเป็นการดีที่สุดถ้าใช้ LXC แทนที่จะเป็น Docker เพื่อใช้เป็นระบบปฏิบัติการประจำวันของฉัน คิด?

แก้ไข: ฉันค้นพบแล้วว่าเช่นเดียวกับนักเทียบท่ามีคำสั่ง lxc-device ซึ่งอนุญาตให้ฉันข้ามขั้นตอน cgroups และ mknod ได้ ในขณะที่ก่อนที่ฉันจะได้รับ 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

Works!


ฉันค่อนข้างมั่นใจว่า LXC เป็นสิ่งที่ฉันต้องการใช้ไม่ใช่นักเทียบท่า น่าเสียดายที่มันค่อนข้างยากที่จะค้นหาเอกสารที่เป็นปัจจุบันเกี่ยวกับการผูก tty เฉพาะกับคอนเทนเนอร์เพื่อให้ฉันสามารถรัน X ทั้งโฮสต์และแขกของฉันใช้ systemd ในขณะที่เอกสารทั้งหมดที่เกี่ยวข้องกับ / etc / inittab ไม่มีใครรู้วิธีการทำงานกับภาชนะบรรจุ LXC อย่างถูกต้องเพื่อให้พวกเขา "เจ้าของ" tty ในโฮสต์หรือไม่
Paul

เมื่อฉันให้ LXC กับ tty ของตัวเองและกำหนดการ์ดวิดีโอให้ฉันลองstartxด้วยexec twmแต่สิ่งทั้งหมดนั้นแข็งจากมุมมองของฉัน ไม่มีการตอบสนองต่อแป้นพิมพ์หรือเมาส์
พอล

unix.stackexchange.com/questions/18003/linux-lxc-deploying-images-with-tiniest-possible-x11 ดูเหมือนว่าจะมีคำตอบที่เกี่ยวข้อง ฉันคิดว่าฉันต้องส่งต่อห่วงโซ่ / dev / อินพุต ฉันจะลองดู
พอล

ดูเหมือนว่าunix.stackexchange.com/questions/18003/…มีคำตอบตามที่irclog.perlgeek.de/crimsonfu/2015-03-23#i_10327389
Philip Durbin

ฉันคิดว่าฉันแยกคีย์บอร์ดออกแล้ว แต่ตอนนี้มันไม่ทำงานอีกครั้ง
Paul

คำตอบ:


1

คำถามนี้มีคำตอบที่ฉันต้องการ แน่นอนฉันใช้lxc-deviceแทนคำจำกัดความของ cgroup ในไฟล์ปรับแต่ง อย่างไรก็ตามในกรณีของฉันฉันได้รับแป้นพิมพ์เพื่อทำงานใน X เท่านั้นหากฉันเริ่มต้นด้วย tty อื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.