Alain's Blog

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

LXC或云服务器安装KDE桌面环境,并使用XRDP远程桌面

2022年11月1日 5164点热度 14人点赞 4条评论

LXC或云服务器安装KDE桌面环境,并使用XRDP远程桌面

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

使用LXC安装KDE桌面,并使用RDP远程桌面进行登录。同时直通KVM到LXC,在LXC中安装Android Studio以及安卓模拟器进行Android应用程序的开发。理论上云服务器也支持KDE+RDP的远程桌面方式,但大部分不支持KVM(Android模拟器)。

前言

既然是All in one,那么我的需求是将我的一些开发工作也都放在这台主机上面进行的,我通过独立显卡直通的方式来使我的VM正常使用显示器,以作为游戏娱乐,办公开发等。但我依然有远程开发的需求,比如使用平板、旧的笔记本电脑进行便捷的代码修改,耗时的编译工作等等。

我的All in one做了大量的优化以及备份工作,使之具有更好的可靠性。如果仅仅只是为了家庭网络,不建议与我的方案相同。

需求

  1. 既然LXC与Proxmox VE Host共用内核以获得最大性能,那么我们能不能在LXC上安装桌面环境来进行远程开发?

    很显然这是显而易见且简单有效的方式。

  2. 因为大部分时候我构建的是Android应用,那么便有另一个需求,我们能不能在Proxmox VE的LXC里面直接使用kvm来运行Android模拟器?

    很显然这是显而易见且简单可行的方式。

  3. 理论上云服务器也是可以安装KDE跟XRDP进行远程桌面的,但是一般不会支持虚拟化技术

    很显然这是显而易见且简单可靠的方式。

测试环境

  1. Host: Proxmox VE(PVE) 7.x

  2. LXC Container: Debian 11

  3. Windows远程桌面工具

实施方案

LXC安装时的注意事项

  1. 取消非特权容器

    LXC取消非特权容器

  2. 我使用的是Debian11,你可以自由选择ubuntu, CentOS之类的

    LXC使用Debian11

  3. 选择特权容器的功能,我是一次性全部打勾了

    LXC特权容器功能

准备工作

启动并进入容器

  1. 把全部软件更新为最新版本

    apt-get update && apt-get dist-upgrade -y
  2. 解决乱码问题

    dpkg-reconfigure locales

    选择en_US.UTF-8

  3. 修改时区

    修改为香港时区

    timedatectl set-timezone Asia/Hong_Kong

    开启NTP时钟同步

    timedatectl set-ntp true

    查看是否正确

    timedatectl
  4. 关机 如果你需要"直通网卡",在桥接网卡的条件下,启动一次容器将减少很多麻烦的配置,所以我会在新建完LXC之后,先启动容器进行升级的操作,再进行配置文件的修改

    poweroff

修改LXC配置文件

PVE主机中修改

  1. 查看对应的驱动id

    # 显卡
    ls -l /dev/dri/
    # 一般核显为
    # crw-rw---- 1 root video  226,   0 Oct 16 19:51 card0
    # crw-rw---- 1 root render 226, 128 Oct 16 19:51 renderD128
    # 我们使用的是 226, 0 以及 226, 128
    #
    # kvm
    ls -l /dev/kvm
    # crw-rw---- 1 root kvm 10, 232 Nov  1 06:18 /dev/kvm
    # 我们使用的是 10, 232
  2. 编辑配置文件

    nano /etc/pve/lxc/108.conf

    写入以下代码

    # 将显卡"直通"给LXC,但是不能进行屏幕输出
    lxc.cgroup2.devices.allow: c 226:0 rwm
    lxc.cgroup2.devices.allow: c 226:128 rwm
    # 将/dev/kvm"直通"给LXC
    lxc.cgroup2.devices.allow: c 10:232 rwm
    lxc.autodev: 1
    lxc.hook.autodev: /var/lib/lxc/108/mount_hook.sh
    # 如果你"直通"网卡的需求,取消以下注释并进行适当修改
    # lxc.net.0.type: phys
    # lxc.net.0.link: enp7s0f1
    # lxc.net.0.ipv4.address: 192.168.1.108/24
    # lxc.net.0.ipv4.gateway: 192.168.1.100
    # lxc.net.0.flags: up
  3. 编写驱动挂载脚本

    nano /var/lib/lxc/108/mount_hook.sh

    写入以下代码

    mkdir -p ${LXC_ROOTFS_MOUNT}/dev/dri
    mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/card0 c 226 0
    mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/renderD128 c 226 128
    mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/kvm c 10 232

    加入运行权限

    chmod +x /var/lib/lxc/108/mount_hook.sh
  4. 如果你像我一样直通了网卡的话,请在PVE的管理页面中将桥接网卡删除

    LXC删除桥接网卡

LXC 安装核显驱动

我的核显为P630,以下安装方式未必适用于你,但一般适用于intel的核显

  1. 安装 gpg-agent

    apt-get install -y gpg-agent
  2. 获取密钥

    wget -qO - https://repositories.intel.com/graphics/intel-graphics.key |  apt-key add -
  3. 新增安装源

    echo "deb [trusted=yes arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main" > /etc/apt/sources.list.d/intel-graphics.list
  4. 安装驱动

    apt-get update && apt-get install -y intel-media-va-driver-non-free intel-gpu-tools vainfo
  5. 测试驱动是否正常

    vainfo

    类似以下截图

    测试驱动是否正常

LXC安装KDE桌面以及RDP远程桌面协议

  1. intel核显驱动源跟KDE冲突,所以我们需要先移除掉该源

    mv /etc/apt/sources.list.d/intel-graphics.list /etc/apt/sources.list.d/intel-graphics.list.bak
  2. 安装

    apt-get update && apt-get install task-kde-desktop xrdp -y
  3. 把xrdp加到ssl-cert组

    usermod -a -G ssl-cert xrdp

LXC RDP优化

请根据实际情况调整

  1. 回到PVE Host修改内核参数

    Host主机中,修改内核参数

    nano /etc/sysctl.conf

    追加以下内容

    # 8MB
    net.core.rmem_max=8388608
    # 8MB
    net.core.wmem_max=8388608

    使之生效

    sysctl -p
  2. LXC容器内修改XRDP配置文件

    nano /etc/xrdp/xrdp.ini

    找到tcp_send_buffer_bytes以及tcp_recv_buffer_bytes,默认情况下应该是被注释的,所以我们直接在其下方追加即可。

    # 4MB
    tcp_send_buffer_bytes=4194304
    # 4MB
    tcp_recv_buffer_bytes=4194304

    重启RDP

    systemctl restart xrdp

[可选]Debian11安装并配置OpenJDK 11环境

因为Android使用的是JAVA来开发,所以我也先安装一下OpenJDK

  1. 安装OpenJDK

    apt-get install openjdk-11-jdk -y
  2. 配置JAVA_HOME环境

    编辑profile文件

    nano /etc/profile

    写入以下代码

    # JAVA_HOME
    export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
    export PATH=$JAVA_HOME/bin:$PATH

    使之生效

    source /etc/profile

    检查

    echo $PATH

    测试

    java -version

[可选]将目标用户添加到kvm组

因为Android模拟器是使用KVM来运行的,而我远程登录一般不会使用Root账号,所以我将我的子账号添加到对应的用户组,以便我能够正常使用相应的功能

usermod -a -G kvm alain

完成部署

我们先关闭容器进行一次快照操作之后,准备进行最后的测试

poweroff

测试远程桌面

测试工具

Windows自带的远程桌面

Windows远程桌面

测试结果

  1. 弹出安全提示,直接连接即可,后续可以对SSL进行升级以解决此问题

    远程连接安全提示

  2. 正常登录远程主机

    我这是放久了,进入了登录界面,可能与你的不太一样

    KDE远程桌面

测试Android Studio以及Android模拟器

测试工具

Android Studio 2021.3.1 Patch 1

测试结果

安装Android Studio之后,正常启动Android模拟器

Android模拟器

挂载网络磁盘以及备份

  1. 可以参考我的另外两篇文章里面关于网络磁盘挂载的方式

    Proxmox VE(PVE) 自动快照;自动备份到NAS的SMB/NFS

    Proxmox VE(PVE) 7.x下,LXC中安装Jellyfin,开启硬转码等

  2. 既然使用了All in one,或许你也会想要有相应的NAS备份方案,在使用远程备份的同时,我还有本地的另一个USB硬盘作为备份使用

    群晖通过WebDAV备份到阿里云盘

标签: Android IDEA Linux Proxmox VE
最后更新:2022年11月16日

Alain

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

点赞
< 上一篇
下一篇 >

文章评论

  • lz00qs

    您好,请教一下您的图形环境支持硬件加速吗?为什么我安装了以后 GPU 加速好像不能正常工作,看视频会比较卡顿。

    2022年11月23日
    回复
    • Alain

      @lz00qs 我这里输入intel_gpu_top可以看到GPU的使用情况,是有在运行的,看视频卡顿要考虑远程桌面的影响

      2022年11月23日
      回复
      • lz00qs

        @Alain 我看了一下,网页播放视频的时候,intel_gpu_top 的 video 没有变化,请问您的也是这样吗?

        2022年11月26日
        回复
        • Alain

          @lz00qs 我用的自带的firefox,video是有动的,您参考下这个https://zhuanlan.zhihu.com/p/268401890看看是否有效

          2022年11月26日
          回复
  • 取消回复

    文章目录
    • 前言
    • 需求
    • 测试环境
    • 实施方案
      • LXC安装时的注意事项
      • 准备工作
      • 修改LXC配置文件
      • LXC 安装核显驱动
      • LXC安装KDE桌面以及RDP远程桌面协议
      • LXC RDP优化
      • [可选]Debian11安装并配置OpenJDK 11环境
      • [可选]将目标用户添加到kvm组
      • 完成部署
    • 测试远程桌面
      • 测试工具
      • 测试结果
    • 测试Android Studio以及Android模拟器
      • 测试工具
      • 测试结果
    • 挂载网络磁盘以及备份

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

    Theme Kratos Made By Seaton Jiang