转载请注明出处,本文仅用于学习交流,不对之处,恳请指正 ,部分图片摘取网络,如有侵权请联系
通过X11来使Proxmox VE(PVE)的LXC容器能够直接使用宿主机屏幕,特别适合需要将核显共享给多个虚拟机或者LXC容器时候。
宿主机安装X Server
-
主机上安装Xorg
你可以记录下安装的软件,方便后面不需要的时候删除
apt-get update && apt-get install xorg -y
-
修改LXC配置文件,将X11的套接字传递给容器
# 注意,只读 lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,ro,create=dir
挂载USB键鼠(推荐)
-
列出USB
lsusb
-
大概输出如下
... Bus 001 Device 013: ID 046d:c52f Logitech, Inc. Unifying Receiver Bus 001 Device 012: ID 3554:fa09 CX 2.4G Wireless Receiver ...
-
那么对应的位置如下
/dev/bus/usb/001/012 /dev/bus/usb/001/013
-
所以我们修改LXC配置文件,直接挂载上去
lxc.cgroup2.devices.allow: c 189:* rwm lxc.mount.entry: /dev/bus/usb/001/012 dev/bus/usb/001/012 none bind,optional,create=file lxc.mount.entry: /dev/bus/usb/001/013 dev/bus/usb/001/013 none bind,optional,create=file
LXC 挂载显卡、网卡与KVM(可选)
如果有富余的显卡、网卡可用,再好不过了,当然你也可以把你的声卡挂载进去
参考 修改LXC配置文件
启动服务
实际上,我们应该使用钩子来启动,这里只是为了测试
切换用户
su - alain
启动X Server
startx
startx
会卡住,所以你需要新的窗口来运行以下命令
export DISPLAY=:0
xhost +local:
容器安装X11 Client
安装软件
# 其中dbus-x11是必须的
apt-get update && apt install x11-apps dbus-x11 -y
安装显卡驱动(可选)
挂载显卡之后才需要安装
参考 LXC 安装核显驱动
安装KDE桌面
根据你自己的喜欢安装桌面环境
- KDE 桌面环境
```bash
apt-get update && apt-get install task-kde-desktop -y
# 可选安装XRDP远程桌面
# apt-get install xrdp -y
# usermod -a -G ssl-cert xrdp
```
-
创建一个用户来使用桌面环境
adduser alain # 注意你的用户名
-
切换到目标用户并启动KDE桌面
su - alain # 注意你的用户名 export DISPLAY=:0 startplasma-x11
远程桌面的参考:
钩子
每次启动都执行一次是不可能的,太麻烦了
-
创建钩子目录
mkdir -p /var/lib/vz/snippets
-
编写钩子脚本
nano -p /var/lib/vz/snippets/startx.sh
写入以下代码
#!/bin/bash PID_FILE="/tmp/lxc-x11.pid" LOG_FILE="/var/log/lxc-x11.log" LXC_USER="alain" # 注意你的用户名 export DISPLAY=:0 lxcid=$1 status=$2 if [ "$status" == "pre-start" ]; then startx >>$LOG_FILE 2>&1 & echo $! >$PID_FILE fi if [ "$status" == "post-start" ]; then while [ -z "$(pgrep -f Xorg)" ]; do sleep 1 done sleep 3 xhost +local: LXC_CMD="su - $LXC_USER -c 'export DISPLAY=$DISPLAY && startplasma-x11'" lxc-attach -n "$lxcid" -- bash -c "$LXC_CMD" >>$LOG_FILE 2>&1 & fi if [ "$status" == "post-stop" ]; then kill $(cat $PID_FILE) kill $(pgrep -f Xorg) xhost -local: rm -f $PID_FILE fi
声音
我暂时用不上,有空再补上
你可以挂载你的声卡,也可以使用pulseaudio
文章评论