GNU/Linux >> Linux の 問題 >  >> Linux

Linux - LXC;可能な限り最小の X11 でイメージをデプロイする

はい、LXC コンテナ内で完全な X11 デスクトップ環境を実行できます。

現在、これを Arch Linux で行っています。標準のパッケージマネージャーのインストールから何かを取り除こうとしているところまで行っていないので、「軽い」とは言いませんが、非常にうまく機能することを確認できます.

コンテナーだけでなく、ホストにもカーネル ドライバーをインストールする必要があります。グラフィックドライバーなど(私はnvidiaを使用しています)。 container.conf を許可するように構成して、コンテナー内で dev のデバイス ノードにアクセスできるようにする必要があります。次に、これらのデバイス ノードがコンテナー内に作成されていることを確認する必要があります (つまり、mknod)。

それで、あなたの質問に答えるために:はい、それはうまくいきます。さらに詳しい情報を提供できる場合は、お知らせください。

--- 提供される追加情報 ---

私のコンテナーでは.../etc/inittab は実行レベル 5 で開始し、「slim」を起動します。Slim は 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 で 2 つ目の X ディスプレイを使用していませんが、まったく別の X ディスプレイを使用しています (CTRL + ALT + Fn を使用してこれらの多くを切り替えることができます)。

Slim を使用していない場合は、次のような構成を使用して別の vt で X を開始できます:

 /usr/bin/startx -- :10 vt10

これにより、ディスプレイ :10 で X が開始され、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 ファイルに記述

役に立つかどうかわかりませんが、頑張ってください!


はい、できます。 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

X の入力デバイスを構成するには、evdev を使用できます。 、これは xf86-input-keyboard を使用できない場合に特に便利です 運転者。 event* の正確な数 構成ファイルのエントリ (例:/usr/share/X11/xorg.conf.d/10-lxc-input.conf ) はコンテナの /dev/input/ にあるものによって異なります。スクリプトを使用してコンテナを生成できます:

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

/dev/snd を渡すか、tcp またはソケット経由で pulseaudio をセットアップして、オーディオを有効にすることもできます。


Linux
  1. Linuxコンテナの舞台裏

  2. Linux –Linuxで/dev / dspを遊ばせないのはなぜですか?

  3. LXC コマンドを使用して LXC Linux コンテナを作成および起動する方法

  1. Ubuntu16.04でLXCを使用してLinuxコンテナをセットアップする

  2. LinuxでのJQコマンドと例

  3. Linux で .dll を使用可能

  1. LVMを使用してLinuxをインストールする

  2. Linux – Lxc;可能な限り最小のX11でイメージをデプロイしますか?

  3. Linuxでシャットダウンを中止することは可能ですか?