Alain's Blog

  1. 首页
  2. 虚拟机
  3. Proxmox VE
  4. 正文

Proxmox VE(PVE) LXC使用显示器

2025年1月5日 820点热度 14人点赞 0条评论

转载请注明出处,本文仅用于学习交流,不对之处,恳请指正 ,部分图片摘取网络,如有侵权请联系

通过X11来使Proxmox VE(PVE)的LXC容器能够直接使用宿主机屏幕,特别适合需要将核显共享给多个虚拟机或者LXC容器时候。

宿主机安装X Server

  1. 主机上安装Xorg

    你可以记录下安装的软件,方便后面不需要的时候删除

    apt-get update && apt-get install xorg -y
  2. 修改LXC配置文件,将X11的套接字传递给容器

    # 注意,只读
    lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,ro,create=dir

挂载USB键鼠(推荐)

  1. 列出USB

    lsusb
  2. 大概输出如下

    ...
    Bus 001 Device 013: ID 046d:c52f Logitech, Inc. Unifying Receiver
    Bus 001 Device 012: ID 3554:fa09 CX 2.4G Wireless Receiver
    ...
  3. 那么对应的位置如下

    /dev/bus/usb/001/012
    /dev/bus/usb/001/013
  4. 所以我们修改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桌面

根据你自己的喜欢安装桌面环境

  1. KDE 桌面环境
```bash
apt-get update && apt-get install task-kde-desktop -y
# 可选安装XRDP远程桌面
# apt-get install xrdp -y
# usermod -a -G ssl-cert xrdp
```
  1. 创建一个用户来使用桌面环境

    adduser alain # 注意你的用户名
  2. 切换到目标用户并启动KDE桌面

    su - alain # 注意你的用户名
    export DISPLAY=:0
    startplasma-x11

远程桌面的参考:

LXC或云服务器安装KDE桌面环境

钩子

每次启动都执行一次是不可能的,太麻烦了

  1. 创建钩子目录

    mkdir -p /var/lib/vz/snippets
  2. 编写钩子脚本

    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

标签: Proxmox VE
最后更新:2025年1月5日

Alain

看了我的文,就是我的人,点个赞再走成不成

点赞
< 上一篇

文章评论

取消回复

文章目录
  • 宿主机安装X Server
    • 挂载USB键鼠(推荐)
    • LXC 挂载显卡、网卡与KVM(可选)
    • 启动服务
  • 容器安装X11 Client
    • 安装显卡驱动(可选)
    • 安装KDE桌面
  • 钩子
  • 声音

COPYRIGHT © 2022 Alain's Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang