您尚未登录。

#1 2024-06-13 23:50:15

anlorsp
会员
注册时间: 2021-11-28
帖子: 43

在线卸载nvidia驱动模块

我的nvidia显卡是通过扩展坞连接至电脑的,所以我想能否在线卸载nvidia驱动模块,以达到热拔插n卡的效果。

我在arch wiki上看到相关介绍:https://wiki.archlinux.org/title/Extern … vidia_eGPU。然而,尽管我已经设置了__EGL_VENDOR_LIBRARY_FILENAMES环境变量,并且nvidia-smi也显示no process running,当我执行 rmmod nvidia_drm 时仍然提示module in use,并且我可以在nvidia-smi里面看到有1MiB的显存占用。我可以用 rmmod -f nvidia_drm 强制卸载,但是这有时候会导致gnome崩溃。即使有时候当时看上去很完美,事后关机的时候也会发现无法关机,关机时或者提示systemd-shutdown: waiting for process xxxx gnome-shell,或者就是显示很多杂乱的、互相重叠的代码,似乎显示没有正常工作。

我也根据https://www.reddit.com/r/Fedora/comment … ntel_igpu/尝试了设置nvidia_drm.modeset=0,无效。

我想问一下有没有办法可以比较完美地在线卸载nvidia驱动模块?

我的桌面环境是Gnome,显卡扩展坞通过雷电接口连接至电脑,电脑是intel核显。

离线

#2 2024-06-14 13:10:59

anlorsp
会员
注册时间: 2021-11-28
帖子: 43

Re: 在线卸载nvidia驱动模块

我尝试了一下在卸载内核模块前使用

# systemctl stop gdm

然后nvidia_drm内核模块就可以正常卸载了。看来是gdm占用了该内核模块。
不过在停止gdm之后,tty1会变成一个光标不停闪烁的界面,不能正常进入字符控制台,这是为什么呢?

离线

#3 2024-06-14 16:19:01

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,836
个人网站

Re: 在线卸载nvidia驱动模块

alt+f2 试试。

离线

#4 2024-06-14 20:35:35

anlorsp
会员
注册时间: 2021-11-28
帖子: 43

Re: 在线卸载nvidia驱动模块

依云 说:

alt+f2 试试。

切换到tty2是一种可行方案。

我现在采用的方案如下,首先在gnome里面注销,然后ctrl+alt+f2切换到tty2,然后source以下脚本(用source的原因是为了让logout语句生效,logout是为了避免之后关机的时候提示有其它用户未登出):

#!/usr/bin/zsh
sudo systemctl stop gdm
sudo rmmod nvidia_uvm
while true; do
    sudo rmmod nvidia_drm
    if [ $? -eq 0 ]; then
        break
    fi
    sleep 1
done
sudo rmmod nvidia_modeset
sudo rmmod nvidia
sudo systemctl start gdm
logout

之后gdm会在tty1启动,此时就可以移除外接显卡了。gnome现在支持自动热加载外接显卡,所以如果想要接回外接显卡,可以随时连接。可惜移除看起来还是需要经过一次注销,不过比起重启还是要快不少的。

离线

页脚