Proxmox VE 云桌面实战 ③ - 打造属于自己的Linux云电脑 - Fedora篇
前言
这是云桌面的第三篇,Windows云电脑大家听过很多,可你有曾想过,Linux搭配Desktop Environment也能打造云电脑,本文将介绍如何在Fedora 38上使用Sunshine搭建云桌面服务。
虚拟机配置
虚拟机配置如下,hostpci0为P40 vGPU,mDev型号为GRID-P40-8Q,hostpci1为82599 SR-IOV网卡,由于需要安装NVIDIA驱动,创建EFI磁盘时不勾选预注册密钥
一项。
安装Fedora
从ISO启动,因为这是虚拟镜像,选择Install Fedora 38
选择语言后继续,配置安装源,如图所示,这里使用清华源
选择软件,这里我选择Fedora Workstation,如果喜欢别的DE也可以选择其他的
进行分区,这里使用Btrfs分区
添加一个300M分区,挂载点/boot/efi
添加Swap(可选)
添加Btrfs卷,大小为剩下的所有,名称为@
,如图所示
在数据
中添加/home
挂载点,名称为@home
,如图所示
随后开始安装,喝杯☕️吧!
安装NVIDIA GRID驱动
{% note color:green 提示 本文所用驱动为GRID 16.0,版本为535.54.03 %}
确保系统最新
sudo dnf update
如果升级了内核,需要重启
reboot
安装依赖
sudo dnf install kernel-devel kernel-headers gcc make dkms acpid libglvnd-glx libglvnd-opengl libglvnd-devel pkgconfig
禁用nouveau
nouveau是开源nvidia驱动,它与grid驱动冲突,必须禁用它
编辑/etc/modprobe.d/blacklist-nouveau.conf
:
blacklist nouveau
编辑/etc/default/grub
:
在GRUB_CMDLINE_LINUX=”…”
中添加rd.driver.blacklist=nouveau
和nvidia-drm.modeset=1
,如下所示:
GRUB_CMDLINE_LINUX="rhgb quiet rd.driver.blacklist=nouveau nvidia-drm.modeset=1"
更新grub配置:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
删除nouveau驱动:
sudo dnf remove xorg-x11-drv-nouveau
备份旧initramfs:
sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
生成initramfs:
sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)
重启到多用户模式
sudo systemctl set-default multi-user.target
reboot
安装驱动
sudo -i
chmod +x ./NVIDIA-Linux-x86_64-535.54.03-grid.run
./NVIDIA-Linux-x86_64-535.54.03-grid.run
安装32位兼容库
注册为DKMS模块,这样内核更新后驱动会重新编译以自动适配新内核
我们需要手动生成X配置文件,选择No
重启到图形模式
sudo systemctl set-default graphical.target
reboot
激活vGPU许可
sudo curl --insecure -X GET https://<fastapi-dls-ip>/client-token -o /etc/nvidia/ClientConfigToken/client_configuration_token.tok
sudo systemctl restart nvidia-gridd
可以执行以下命令查看是否生效:
[rickg@clouddesktop ~]$ nvidia-smi -q | grep "License"
vGPU Software Licensed Product
License Status : Licensed (Expiry: 2028-7-18 9:24:33 GMT)
安装Sunshine
添加rpmfusion
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
安装Sunshine
前往GitHub Release页面下载Sunshine
{% link https://github.com/LizardByte/Sunshine/releases/ %}
sudo dnf install ./sunshine-fedora-38-amd64.rpm
添加udev规则
Sunshine需要uinput的权限才能创建鼠标和虚拟手柄事件
echo 'KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"' | \
sudo tee /etc/udev/rules.d/85-sunshine.rules
随后重启
reboot
配置GDM
由于X的权限问题,以用户身份运行的Sunshine无法访问GDM登录界面,因此需要配置GDM自动登录。
[root@clouddesktop ~]$ xrandr --display :0
Authorization required, but no authorization protocol specified. Can't open display :0
禁用Wayland
笔者需要自定义X配置文件,而GDM默认在Wayland上运行,因此需要禁用Wayland,使GDM在Xorg上运行。
编辑/etc/gdm/custom.conf
,去除WaylandEnable=false
的注释:
# GDM configuration storage
[daemon]
# Uncomment the line below to force the login screen to use Xorg
WaylandEnable=false
[security]
[xdmcp]
[chooser]
[debug]
# Uncomment the line below to turn on debugging
#Enable=true
配置自动登录
在[daemon]
下添加AutomaticLoginEnable=true
和AutomaticLogin=user
,其中user
为用户名:
# GDM configuration storage
[daemon]
# Uncomment the line below to force the login screen to use Xorg
WaylandEnable=false
AutomaticLoginEnable=true
AutomaticLogin=rickg
[security]
[xdmcp]
[chooser]
[debug]
# Uncomment the line below to turn on debugging
#Enable=true
配置Xorg
编辑/etc/X11/xorg.conf
:
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
EndSection
Section "Monitor"
Identifier "Monitor0"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GRID P40-8Q"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
BoardName即GPU型号,BusID根据实际情况来,执行lspci | grep VGA
:
[rickg@clouddesktop ~]$ lspci | grep VGA
00:01.0 VGA compatible controller: Device 1234:1111 (rev 02)
01:00.0 VGA compatible controller: NVIDIA Corporation GP102GL [Tesla P40] (rev a1)
可以看到vGPU的ID是01:00.0,BusID则为"PCI:1:0:0"
连接到VM
重启VM,可以看到PVE VNC端画面定在了开机画面的最后,这是因为输出已经指向vGPU内建的虚拟显示器
SSH连接到VM,启动Sunshine服务
systemctl enable --now --user sunshine
访问https://<vm-ip>:47990/
,进入WebUI
首次配置用户名密码
可以看到启用了NVENC硬件编码
打开Moonlight,连接,配对,云桌面就在眼前:
可以看到GPU是在工作的:
如果网络环境好的话,云桌面体验下来还是非常流畅的
参考资料
Fedora 38/37/36 NVIDIA Drivers Install Guide :: If Not True Then False (if-not-true-then-false.com)
你的文章让我心情愉悦,真是太棒了!http://www.boyahy.com
你的文章让我感受到了快乐,每天都要来看一看。http://www.518zsc.com