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

180 天前
 nozer

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

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

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

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

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

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

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

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

1306 次点击
所在节点    Linux
5 条回复
chenxytw
180 天前
彻底无感知,不从 BIOS 屏蔽的话,最多就是做到卸载驱动,intel 核显驱动是 i915 这个内核模块。
povsister
179 天前
核显本质也是 pcie 设备,理论上你可以从内核屏蔽掉。搜一下如何屏蔽指定 pcie 设备吧
liyafe1997
178 天前
NVIDIA 驱动的那个 prime 不是可以设置 nvidia only 吗?
liyafe1997
178 天前
噢不对,那个应该屏蔽不了 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 使该设备在系统中不可用。
nozer
113 天前
感谢楼上。 屏蔽 pci 设备是可以的。 但是屏蔽了核显的 PCI 后,独显也不工作了。 只在 TTY 时有画面输出。到启动 SDDM 的时候,画面一直是卡在 TTY 上面。

感觉这跟系统没关系了可能。

因该是双显卡工作模式需要核显去做某些特殊工作导致的。

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

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

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

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

© 2021 V2EX