将Ubuntu设置为不使用独显渲染桌面
系统版本:ubuntu24.04
起因是nvidia的50系列显卡经常出现GSP崩溃的问题导致掉卡,如果桌面环境绑定在独显上,那么在独显设备丢失的同时,Xorg渲染的桌面也会跟着一起挂掉。
目前虽然无法彻底解决掉卡问题,但至少先保证桌面环境可以存活,然后再研究怎么恢复显卡的问题。
操作方法
查询当前显示设备:
bash
lspci -nn | grep -E "VGA|3D"
07:00.0 VGA compatible controller [0300]: ASPEED Technology, Inc. ASPEED Graphics Family [1a03:2000] (rev 41)
18:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2b85] (rev a1)
c3:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2b85] (rev a1)
决定使用非独显设备进行渲染,记住它的地址:07:00.0
新建配置文件
bash
sudo vi /etc/X11/xorg.conf.d/10-aspeed.conf
输入内容,其中07:00.0的地址被翻译为PCI:7:0:0:
bash
Section "ServerFlags"
Option "AutoAddGPU" "off"
Option "DontVTSwitch" "false"
EndSection
Section "Device"
Identifier "ASPEED_Device"
Driver "modesetting"
BusID "PCI:7:0:0"
Option "PrimaryGPU" "yes"
EndSection
Section "Screen"
Identifier "ASPEED_Screen"
Device "ASPEED_Device"
DefaultDepth 24
EndSection
Section "ServerLayout"
Identifier "Default_Layout"
Screen "ASPEED_Screen"
EndSection
重启
bash
sudo reboot
运行nvida-smi,发现里面已经不包含Xorg相关进程。
解除句柄占用
上面所做的只是使得Xorg不再占用nvidia的计算能力,在nvidia显卡设备丢失时,不会导致桌面挂掉,但桌面程序依然占用着显卡的句柄,因此,在没有彻底关闭桌面时,无法使用一些命令强制刷新Pcle连接,影响显卡的恢复。
使用命令查看占用显卡的进程:
bash
sudo fuser -v /dev/nvidia*
可以发现其中仍然存在着Xorg的程序。
如果要更进一步,彻底使得Xorg完全无视nvidia显卡并且不占用任何句柄,需要修改grub开机引导的相关参数。
编辑 Grub:
bash
sudo vim /etc/default/grub
在GRUB_CMDLINE_LINUX_DEFAULT的值引号内的末尾加入nvidia_drm.modeset=0,注意要与前面已有的参数用空格隔开。
更新并刷新引导:
bash
sudo update-grub
sudo update-initramfs -u
重新启动:
bash
sudo reboot
此时,再运行
bash
sudo fuser -v /dev/nvidia*
发现占用显卡的进程里面已经没有Xorg的进程。