Ubuntu22.04 使用核显显示+独显工作+风扇声音过大的缓解办法

在使用教程安装好ubuntu22.04的显卡驱动后,在使用过程中发现2个问题。

问题1:当我运行pmemd.cuda,可以使得显卡使用率高达98%。但是这同样带来一个问题,显卡的温度会升高,导致显卡风扇狂转,声音太吵。

问题2:从开机后显卡就一直有/usr/lib/xorg/Xorg在运行。虽然只用了100MB左右,但是这无疑加重了显卡的负担。

Ubuntu22.04 使用核显显示+独显工作+风扇声音过大的缓解办法_第1张图片

首先想要解决问题1:

    刚开始发现除了把工作站换个独立房间外,没有别的办法。但我还需要用这台机器做显示,就想再试试其他办法。

   发现可以通过NVIDIA X Server Settings 的 Thermal Settings,设置Enable GPU Fan Settings,手动设置风扇的转速。那么这样就可以曲线救国,可以把空调打开,室内温度保持冷一些,然后风扇转速设定为可以接受的范围。

解决问题2:

(1)首先使用  prime-select query

查询目前的显卡使用模式,一般是on-demand模式,即混合模式。此时的显示器接口是插在独显上的。

(2)然后使用  sudo prime-select intel

将显卡模式切换为Intel,即核显模式,等待命令行执行完毕。

(3)然后关机,并将显示器插口接到主板上,然后开机

(4)重启后使用nvidia-smi会出现如下错误:

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

(5)  执行 sudo prime-select on-demand,重新将模式设置为on-demand模式,发现nvidia-smi可以使用了!并且没有进程占用,输出如下:

Ubuntu22.04 使用核显显示+独显工作+风扇声音过大的缓解办法_第2张图片

!!!然而,在我重启后发现使用的还是N卡。。。。。

折腾无果后,

    我尝试在上述第(4)步时,把驱动注册进入内核sudo dkms install -m nvidia -v 535.104.05 ,然而结果还是一样。然后我决定直接在这一步重装显卡,并参考该链接,看看问题能不能解决。于是令人无语(习以为常)的事情发生了。。。

    首先重新安装之前下载好的驱动程序.sh,直接报 ERROR: An error occurred while performing the step: "Building kernel modules" 的错误。于是参考该链接,想着删除高版本的内核,让低版本生效,但是我删除最高版本时,报删除失败。。。于是人开始方了,我想如果此时重启,那么如果还是按照这个最高版本的内核启动,如果是删除了部分文件(虽然是刚开始就报failed了,应该没有删除文件),那么岂不是无法正常启动?于是我尝试先恢复刚才删除的内核——好在显示重装成功。

    此时我发现了这个链接,可以在启动的时候设置进入grub页面,然后手动选择启动的内核版本。如果是这样,那岂不是我安装多少个内核都没问题啦,也可以放心更新,毕竟可以随时切换!(内核更新后把老驱动注册进入新的内核;如果需要重装老驱动,那么就先切换到与该驱动程序对应的内核,安装成功后再切换到新内核,然后再把驱动注册进新内核;如果需要装新驱动,那么直接使用最新的内核即可(这个还需要验证)

具体过程如下,

    我的系统内核本来是下面这样的,刚开始的时候我推测最低版本6.2.0-26是当时下载的NVIDIA显卡的对应内核版本。但是它deinstall了
mrc@mrc-Precision-3660:~/Downloads$ sudo dpkg --get-selections |grep linux-image
linux-image-6.2.0-26-generic            deinstall
linux-image-6.2.0-33-generic            install
linux-image-6.2.0-34-generic            install

    于是我执行下面这个命令将其重新安装
sudo apt-get install linux-image-6.2.0-26-generic

    为了更稳妥,我直接执行sudo apt-get upgrade linux-image-generic,执行这个命令可以安装最新的内核

    两条命令都执行完之后是这样的:

mrc@mrc-Precision-3660:~$ sudo dpkg --get-selections |grep linux-image
linux-image-5.15.0-86-generic            install
linux-image-6.2.0-26-generic            install
linux-image-6.2.0-33-generic            install
linux-image-6.2.0-34-generic            install
linux-image-generic                install
 

    因此,我可以一个一个内核试一下,找出哪个版本是和我当前的显卡驱动程序.sh是对应的。

    首先,使用6.2.0-26后报这个错误:

  ERROR: Unable to find the kernel source tree for the currently running kernel.  Please make sure you have installed the kernel source files for your
  kernel and that they are properly configured; on Red Hat Linux systems, for example, be sure you have the 'kernel-source' or 'kernel-devel' RPM     
  installed.  If you know the correct kernel source files are installed, you may specify the kernel source path with the '--kernel-source-path'
  command line option
    解决该问题:sudo apt-get install linux-headers-$(uname -r)      参考

    然而,通过上述命令解决后还是不行。

    然后换 linux-image-5.15.0-86-generic,

    还是碰到上述”kernel source tree“的错误,但是通过sudo apt-get install linux-headers-$(uname -r)   可以解决!  

    这说明我的显卡驱动程序 NVIDIA-Linux-x86_64-535.104.05.run 的对应内核版本为: linux-image-5.15.0-86-generic

  安装到最后出现   ERROR: Unable to load the 'nvidia-drm' kernel module.,但是网上查了一下,说到这之后其实没问题,其实驱动已经安装好了。(最后我发现只要我切换到使用独显显示:sudo prime-select nvidia,驱动就可以正常安装,搞不懂为什么)

总结:

(1)不要轻易删除显卡驱动或者系统内核

(2)如果删除了驱动,需要重装。此时有两种解决办法:

  • 一种是更新系统内核到最新版,然后下载最新版显卡驱动(应该是对应的,不过这种方式我没有试)
  • 另一种方式是启动时,在grub界面选择当时下载的驱动程序.sh 所对应的系统内核版本(进入grub需要电脑在身边才能看;如果电脑不在身边,需要更改grub配置文件中的内核启动顺序,方法自行百度),然后正常安装。最好是在安装驱动的时候就记住驱动与系统内核的对应信息,以便不时之需。

(3)如果不小心卸载了系统内核,趁着有网络赶紧下载回来。反正可以随时切换内核,为什么要卸载呢,留着呗。。。

参考:

https://blog.csdn.net/qq_41983842/article/details/129131044

https://blog.csdn.net/liuyang_xyz/article/details/120684134

https://blog.csdn.net/u011304615/article/details/70919711

你可能感兴趣的:(Linux,linux,ubuntu)