目的是将一些 GUI 应用程序(主要为 Kodi 和 Retroplayer)容器化并从主机启动它们。由于应用程序的性质,我需要音频支持和 GPU 加速,并且不能有延迟或额外的延迟。
我希望将整个桌面环境容器化,并保持主机没有桌面环境,但不确定是否可行。
有人能给我指出关于如何设置带有音频和英特尔 GPU 加速的 LXC 2.0 容器的文档方向吗?
我知道至少可以将 GUI 应用程序容器化并在主机桌面环境中启动它们,因为我见过人们实现这一点的示例。但只能找到 LXC 1.0 的文档,当然不适用于 2.0。
答案1
我尚不确定如何在无头服务器中完全容器化显示管理器。
对于在容器中运行带有音频的 GUI 应用程序,这教程对我有用。以下是步骤摘要。请注意,我在 Ubuntu 18.04.1 上使用 LXD 3.5(Snap)。
1. 将以下内容保存到名为lxdguiprofile.txt
:
config:
environment.DISPLAY: :0
raw.idmap: both 1000 1000
user.user-data: |
#cloud-config
runcmd:
- 'sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf'
- 'echo export PULSE_SERVER=unix:/tmp/.pulse-native | tee --append /home/ubuntu/.profile'
packages:
- x11-apps
- mesa-utils
- pulseaudio
description: GUI LXD profile
devices:
PASocket:
path: /tmp/.pulse-native
source: /run/user/1000/pulse/native
type: disk
X0:
path: /tmp/.X11-unix/X0
source: /tmp/.X11-unix/X0
type: disk
mygpu:
type: gpu
name: gui
used_by:
2. 将配置文件添加到您的 LXD 实例:
lxc profile create gui
cat lxdguiprofile.txt | lxc profile edit gui
3. 将配置文件应用到容器:
lxc profile add "$container" gui
lxc restart "$container"
就是这样!要测试你的 GUI,请执行以下命令:
# Login to the ubuntu user in the container.
lxc exec "$container" -- su ubuntu -l
# This should show an animation of gears if all is well.
glxgears
# This command shows the audio setup info.
pactl info
请注意,在我的设置中,gui 仅在ubuntu
容器内的默认用户下有效。我不确定为什么,但可以调整步骤以允许其他容器用户访问 gui。我在运行硬件加速应用程序(例如 WineHQ 或 Steam)时也遇到了麻烦。