GNU/Linux >> Belajar Linux >  >> Linux

Linux - LXC; menyebarkan gambar dengan X11 sekecil mungkin

ya dimungkinkan untuk menjalankan lingkungan desktop X11 lengkap di dalam wadah LXC.

Saat ini, saya melakukan ini di Arch Linux. Saya tidak akan mengatakan ini "ringan" karena saya belum mencoba menghapus hal-hal dari penginstalan pengelola paket standar, tetapi saya dapat memastikan bahwa ini bekerja dengan sangat baik.

Anda harus menginstal driver kernel apa pun di HOST dan juga di wadah. Hal-hal seperti driver grafis (saya menggunakan nvidia). Anda harus membuat node perangkat di dev dapat diakses di dalam wadah dengan mengonfigurasi container.conf Anda untuk mengizinkannya. Anda kemudian perlu memastikan bahwa node perangkat tersebut dibuat di dalam container (yaitu mknod).

Jadi, untuk menjawab pertanyaan Anda:YA itu berhasil. Jika saya dapat membantu lebih lanjut atau memberikan detail lebih lanjut, beri tahu saya.

--- informasi tambahan disediakan ---

Dalam wadah saya.../etc/inittab dimulai pada run level 5 dan meluncurkan "slim"Slim dikonfigurasi untuk menggunakan 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

Saya tidak menggunakan tampilan X kedua pada vt saya saat ini, tetapi tampilan yang sama sekali berbeda (saya dapat beralih di antara banyak tampilan ini menggunakan CTRL+ALT+Fn).

Jika Anda tidak menggunakan slim, Anda dapat menggunakan konstruksi seperti ini untuk memulai X di vt lain:

 /usr/bin/startx -- :10 vt10

Itu akan memulai X pada display :10 dan meletakkannya di vt10 (CTRL+ALT+F10). Ini tidak perlu cocok tapi menurut saya akan lebih rapi jika cocok.

Anda memerlukan konfigurasi penampung untuk menyediakan perangkat yang relevan, seperti ini:

 # 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

Dan Anda perlu membuat perangkat di wadah Anda:

 # 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

Saya juga mengonfigurasi perangkat input secara manual (karena kami tidak memiliki udev incontainer)

 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

Di atas ada dalam file /etc/X11/xorg.conf.d/10-input.conf

Tidak yakin apakah semua itu akan membantu, tapi semoga berhasil!


Ya, Anda bisa melakukannya. Anda juga dapat menggunakan lxc.mount.entry sehingga Anda tidak perlu menjalankan skrip inisialisasi di dalam wadah dengan semua mknod commands. Jadi konfigurasi wadah lxc harus berisi sesuatu seperti ini:

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

Untuk mengonfigurasi perangkat input untuk X, Anda dapat menggunakan evdev , yang sangat berguna jika Anda tidak dapat menggunakan xf86-input-keyboard pengemudi. Sejak jumlah persisnya event* entri dalam file konfigurasi (mis. /usr/share/X11/xorg.conf.d/10-lxc-input.conf ) akan bergantung pada apa yang ada di /dev/input/ penampung Anda, Anda dapat menggunakan skrip untuk membuatnya:

#!/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

Ini seharusnya cukup agar X berfungsi:

/usr/bin/startx -- :0 vt07

Anda juga dapat mengaktifkan audio, baik meneruskan /dev/snd, atau menyiapkan pulseaudio melalui tcp atau soket.


Linux
  1. Siapkan Wadah Linux dengan LXC di Ubuntu 16.04

  2. Perintah JQ di Linux dengan Contoh

  3. Linux – Lxc; Menyebarkan Gambar Dengan X11 Terkecil Mungkin?

  1. Di balik layar dengan wadah Linux

  2. Linux – Mengapa Linux Tidak Mengizinkan Saya Bermain Dengan /dev/dsp?

  3. Kemungkinan untuk membatalkan shutdown di Linux?

  1. Instal Linux dengan LVM

  2. Cara Membuat dan Meluncurkan Kontainer Linux LXC dengan Perintah LXC

  3. Kemungkinan untuk menggunakan .dll di Linux