问题描述
是否可以在 Nvidia 的 BLOB 和 Nouveau 视频驱动程序 on-the-fly 之间切换?
我想我需要能够:
-
[✓] 卸载 nvidia
-
[✓] 卸载新派
-
[✕] 卸载nouveau后恢复控制台*
-
[✓] 交换 xorg.conf 文件
-
[✓] 小心列入黑名单
-
[✓] 处理 libglx.so
*) 在与#nouveau 的人聊了几句之后,使用当前的 Ubuntu 设置(内置 vesafb)似乎很难甚至不可能。我试图让它与 uvesafb 一起工作,但现在答案中的脚本可以满足我的需求。
最佳回答
我现在有两个切换驱动程序的脚本,xorg.conf,处理黑名单和 libglx,所以答案是:是的,这是可能的。
黑名单适用于 /etc/modprobe.d/
中包含 blacklist nvidia
或 blacklist 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 已编译到内核中,我不知道该怎么做。