当前位置: 首页>>技术教程>>正文


xorg – 无需重启即可在 nvidia-current 和 nouveau 之间切换?

, ,

问题描述

是否可以在 Nvidia 的 BLOB 和 Nouveau 视频驱动程序 on-the-fly 之间切换?

我想我需要能够:

  1. [✓] 卸载 nvidia

  2. [✓] 卸载新派

  3. [✕] 卸载nouveau后恢复控制台*

  4. [✓] 交换 xorg.conf 文件

  5. [✓] 小心列入黑名单

  6. [✓] 处理 libglx.so

*) 在与#nouveau 的人聊了几句之后,使用当前的 Ubuntu 设置(内置 vesafb)似乎很难甚至不可能。我试图让它与 uvesafb 一起工作,但现在答案中的脚本可以满足我的需求。

最佳回答

我现在有两个切换驱动程序的脚本,xorg.conf,处理黑名单和 libglx,所以答案是:是的,这是可能的。

黑名单适用于 /etc/modprobe.d/ 中包含 blacklist nvidiablacklist nouveau 的一个文件。我还用虚拟对象替换了 /lib/nvidia-current/modprobe.conf,否则 nvidia 驱动程序总是会在 /etc/modprobe.d/ 中创建一个链接,将 nouveau 列入黑名单。

切换到新潮:

 #!/bin/bash
 stop gdm

 rmmod nvidia

 sed -i "s/nouveau/nvidia/" /etc/modprobe.d/blacklist-nvidia-nouveau.conf

 update-alternatives --set gl_conf /usr/lib/mesa/ld.so.conf
 ldconfig

 modprobe nouveau

 cp /etc/X11/xorg.conf{.nouveau,}

 start gdm

执行之后,我有 nouveau 运行和一个工作控制台 (nouveaufb)。

切换到英伟达:

#!/bin/bash
stop gdm

echo 0 > /sys/class/vtconsole/vtcon1/bind
rmmod nouveau
rmmod ttm
rmmod drm_kms_helper
rmmod drm

sed -i "s/nvidia/nouveau/" /etc/modprobe.d/blacklist-nvidia-nouveau.conf

update-alternatives --set gl_conf /usr/lib/nvidia-current/ld.so.conf
ldconfig

modprobe nvidia-current

cp /etc/X11/xorg.conf{.nvidia,}

start gdm

→ Nvidia 驱动程序正在运行,唯一的问题是:卸载 nouveau 驱动程序后,控制台无法使用。我需要一种方法来重置它或加载另一个帧缓冲区,但由于 vesafb 已编译到内核中,我不知道该怎么做。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12287.html,未经允许,请勿转载。