让 Xorg 同时忽略 nouveau 和 nVIDIA?

ein*_*lum 6 xorg nvidia display nouveau

我有一个带有板载(on-CPU)图形的系统:

(--) intel(0): Integrated Graphics Chipset: Intel(R) HD Graphics 4000
Run Code Online (Sandbox Code Playgroud)

和 nVIDIA GTX 650 Ti。板载图形为我的显示器供电,GPU 用于其他用途 (CUDA)。现在,我想让我的 Xorg 完全忽略我的卡,而不是探测它或任何东西 - 不尝试使用 nVIDIA 的驱动程序或 nouveau 驱动程序。(因此它不会抱怨驱动程序问题,也不会加载内核模块等)

那可能吗?

笔记:

  • 模块必须仍然存在,至少 nVIDIA 模块必须是可加载的(我只是希望X不要尝试这样做)。
  • 我已经尝试将 nouveau in 列入黑名单/etc/modprobe.d/,但没有帮助。

gro*_*mal -1

您可以将内核模块列入黑名单。内核不会加载列入黑名单的模块。Xorg 将不会尝试自动检测硬件。

例如,您可以添加一个nonvidiavideo.conf包含/etc/modprobe.d/以下内容的调用文件(文件名并不重要,只需以 结尾即可.conf):

blacklist nouveau
Run Code Online (Sandbox Code Playgroud)

nouveau如果您的模块将驱动程序视为先决条件,则可能需要扩展该文件,例如:

blacklist nouveau
blacklist nvidia-dkms
Run Code Online (Sandbox Code Playgroud)

(为了示例的目的,我编造了另一个模块的名称。)基本上,如果另一个模块对其有依赖关系,则将模块列入黑名单是行不通的,您需要将整个依赖链列入黑名单。nvidia/可能没有依赖链,nouveau因为它们是非常特定的模块。但是,要查找具有nouveau依赖项的模块,您可以执行以下操作:

depmod -n | grep nouveau | egrep -v '^alias'
Run Code Online (Sandbox Code Playgroud)

(这也会打印模块本身,当两个模块出现在同一行时会显示依赖关系。)


我尝试的另一个选择是强制 Xorg 使用英特尔卡作为屏幕。将以下内容添加到文件中(例如nonvidia.conf,名称并不重要)/etc/X11/xord.conf.d/

Section "Device"
    Identifier  "Intel Card"
    Driver      "intel"
EndSection

Section "Device"
    Identifier  "Nvidia Card"
    Driver      "nouveau"
EndSection

Section "Screen"
    Identifier  "My Screen"
    Device      "Intel Card"
EndSection
Run Code Online (Sandbox Code Playgroud)

如果您知道您的卡所在的位置,您还可以BusID "PCI:..."向“设备”部分添加一个参数(但这不是必需的,Xorg 应该能够从驱动程序中找出答案)。

重要的是Device“Screen”的参数指向Identifier“Device”的参数。

如果您有两个屏幕,这可能不起作用。

(免责声明:这是未经测试的代码,我没有带有两个显卡的机器来测试它,抱歉。)