如果一台显示器接入多个信号源,在 Linux 中如何彻底屏蔽掉其中一个信号源?

8 天前
 nozer

情况是这样: 我台式机电脑,intel cpu + nvidia 独显。

上面安装了 hackintosh 和 Linux 双系统。

因为 hackintosh 无法使用 nvidia 显卡,所以我选择用 intel 核显驱动。 但是 Linux 还是正常使用 Nvidia 显卡。

为了不在每次启动的时候都跑到主板里面去切换显卡,我选择核显作为第一显卡,独显同时启用。

很不错,hackintosh 和 Linux 都能正常引导和显示。

现在的情况是这样: 我的显示器接了两条输入线,一条接核显、一条接独显。 在 Hackintosh 上面,独显不工作,所以 ok 。

但是在 Linux 上面,独显和核显都可以工作,这样的在我的显示器设置里面就可以看到两个屏幕。 本来这也没有啥关系,我可以将连接核显的监视器禁用掉。 但是,就算我禁用之后也总会有这里那里小问题,有点烦。

所以来问问,有没有大佬知道: 如何在 Linux 上面彻底屏蔽掉那个连接核显的监视器(不止禁用,我想的是让 xrandr 和系统设置都无法感知他的存在)?

866 次点击
所在节点    Linux
4 条回复
chenxytw
8 天前
彻底无感知,不从 BIOS 屏蔽的话,最多就是做到卸载驱动,intel 核显驱动是 i915 这个内核模块。
povsister
8 天前
核显本质也是 pcie 设备,理论上你可以从内核屏蔽掉。搜一下如何屏蔽指定 pcie 设备吧
liyafe1997
7 天前
NVIDIA 驱动的那个 prime 不是可以设置 nvidia only 吗?
liyafe1997
7 天前
噢不对,那个应该屏蔽不了 INTEL 核显输出。可以尝试把 intel 核显驱动彻底干掉,加到 blacklist 里面,或者甚至彻底屏蔽掉核显的 PCIE 设备,问了下 ChatGPT:

是的,Linux 可以通过加内核参数来屏蔽某个 PCIe 设备,使其在启动时不加载相应的驱动程序。具体操作步骤如下:

1. **获取 PCI 设备的 ID**:
使用`lspci`命令来查看系统中的 PCI 设备列表,并找到你想屏蔽的设备的 ID (一般包括厂商 ID 和设备 ID )。

```sh
lspci -nn
```

输出示例:
```
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (7) I219-V [8086:15be] (rev 10)
```

在这个示例中,设备 ID 为`8086:15be`。

2. **编辑 Grub 配置文件**:
编辑 Grub 配置文件,添加内核参数来屏蔽设备。具体操作步骤如下:

- 打开 Grub 配置文件:
```sh
sudo nano /etc/default/grub
```

- 在`GRUB_CMDLINE_LINUX`行中添加`pci-stub.ids=厂商 ID:设备 ID`参数。例如:
```sh
GRUB_CMDLINE_LINUX="... pci-stub.ids=8086:15be ..."
```

3. **更新 Grub 配置**:
保存并关闭文件后,更新 Grub 配置以应用更改。

```sh
sudo update-grub
```

4. **重启系统**:
重启系统使更改生效。

```sh
sudo reboot
```

通过上述步骤,系统在启动时会将指定的 PCI 设备分配给`pci-stub`驱动程序,而不是加载其特定的驱动程序。这 effectively 使该设备在系统中不可用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1051724

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX