我有以下设置:
- 配备 GPU(PCIe 上的 AMD RX 6900 XT GPU)和 iGPU(集成 GPU,例如 Intel UHD Graphics)的 PC,
- 每个 GPU 都连接到一个显示器,因此基本上是双 GPU + 双显示器设置,
- Linux Debin 12 主机,
- 为方便起见,假设 AMD GPU 的 id 为 pci-0000_03_00_0,而 iGPU 的 id 为 pci-0000_00_02_0。
- 我只有一个没有任何桌面环境(甚至没有 X11)的裸 Linux,因为我正在使用的程序非常耗资源。
我希望 iGPU(主 GPU,在 BIOS 上设置)成为显示 Linux 主机输出内容的主 GPU,而另一个 GPU 显示利用该 GPU 显示内容的任何程序(我计划为此 GPU 进行挖掘或 AI 工作)。
╔━━━━━━━━━━━━━━━━━━━━━━━━━╗
║ ║
║ ║
║ Monitor 1 ║
║ ║
║ ║
║ ┏━━━━┓║
╚━━━━━━━━━━━━━━━━━━━┫HDMI┣╝
┗━━┳━┛
┃ ┏━━━━━━━━━━━━┓
┃ ┏━┫ PC ┣━━━━━━━━━━━━┓
┃ ┃ ┗━━━━━━━━━━━━┛ ┃
╔━━━━━━━━━━━━━━━━━━━━━━━━━╗ ┃ ┃ ┃
║ ║ ┃ ┏━━━┻━━━━┓ ┃
║ ║ ┗━━━━━━━┫ iGPU ┣ ┃
║ Monitor 2 ║ ┃ ┏━━┛ ┃
║ ║ ┗━━━┳━┛ ┃
║ ┏━╨━━┓ ┏━━━┻━━━━━┓ ┃
╚━━━━━━━━━━━━━━━━━━━━━━━┃HDMI┃━━━━━━━┫ AMD GPU ┃ ┃
┗━━━━┛ ┃ ┏━━━┛ ┃
┗━━━┳━┛ ┃
┏━━━┻━━━━━┓ ┃
┏━━━━━━━━━━━━━━━━┳━━━━━━━━┃ USB Hub ┃━━━━━━━━━━━━━━━━━━━━━┛
┏━━━━━━━━┻━━━━━━━━━┓ ┃ ┗━━━━━━━━━┛
┃┏┓┏┓┏┓┏┓┏┓ ┏┓┏┓┃ ┏━╋━┓
┃┏┓┏┓┏┓┏┓┏┓ ┏┓ ┏┓┏┓┃ ┃ ┃
┃┏┓┏━━━━┓┏┓┏┓┏┓┏┓┏┓┃ ┗━━━┛
┗━━━━━━━━━━━━━━━━━━┛
在当前设置下,只有连接到 iGPU 的第一个显示器显示输出,而连接到 AMD GPU 的第二个显示器仅显示带有光标的空白屏幕。
我尝试使用
DRI_PRIME=pci-0000_03_00_0 ./my_script.sh
没有成功。我甚至尝试使用 virsh 分离我的 AMD GPU,如下所示:
sudo virsh nodedev-detach pci_0000_00_02_0 && DRI_PRIME=pci-0000_03_00_0 ./my-script.sh
也没有成功。上述操作导致第一个显示器完全空白,而第二个显示器没有任何变化(只有闪烁的光标)。
我也尝试摆弄帧缓冲区,例如
echo /dev/urandom | sudo tee /dev/fb[x]
(x 为帧缓冲区的数量;0-1)也无济于事。结果仍然只影响第一台显示器,而不影响第二台。
有什么想法我可以如何实现这个概念?
答案1
我认为我可以使用 linux multiseat 来实现我的目标。来源:https://www.lightofdawn.org/wiki/wiki.cgi/LinuxMultiSeat