我有一台 HP DL380G9 服务器,安装了两个独立的 nvidia 显卡,运行内核为 2.6.32-573 的 RHEL 6。两张卡具有相同的芯片组 (NV117) 但型号不同。 K620(插槽 5 地址 88:00.0)、K2200(插槽 4 地址 84:00.0)。 K2200 是 Linux 输出 plymouth 和 boot 消息的选定卡。
即使清除了 CMOS 和 BIOS 设置,交换卡也会导致 HP 服务器 BIOS 出现页面错误。换回卡即可解决问题。 BIOS 中没有用于选择主独立显卡的选项。 Linux 似乎会选择 PCI 总线地址最低的显卡。
是否有内核命令行选项或其他配置文件可以为 X11 之前的默认显示选择不同的显卡?
答案1
我最终发现这是通过一个名为 vga 仲裁器的内核功能完成的。无论 BIOS 将哪个 VGA 适配器用作主要适配器,最终都会被标记为“bootvga”设备。通过使用不需要的 VGA 适配器的存根驱动程序,可以强制 VGA 仲裁器选择并使用下一个 VGA 适配器。使用lspci -nn | grep VGA
将此参数添加到内核命令行来检索 pci 设备 IDpci-stub.ids=0000:0000
当我迁移到 RHEL 7 时,我将使用这个禁用的适配器进行 pci 直通。请记住,Nvidia 显卡还包含音频设备,并且最终与 VGA 设备位于同一 IOMMU 组中。两个 pci 设备 ID 都需要存根。
答案2
答案3
我遇到了一个奇怪的情况,一个客户购买的服务器的 efi 驱动程序编写得很差,并且板载 vga 端口输出一个非常乱码的控制台。我尝试了各种补救措施,最后决定使用 GPU 进行视频输出。不幸的是,Pci-stub 并没有强制帧缓冲区不再使用板载芯片 - 它只是用 EFI VGA 取代它:
cat /proc/fb
0 EFI VGA
1 nouveaufb
为了强制视频传输到nouveaufb
,您需要禁用efifb
ANDstub
板载设备。附加到grub
(使用您的设备 ID 代替我的设备 ID):
pci-stub.ids=8086:0412 video=efifb:off
Mkconfig 你的 grub 文件
grub2-mkconfig -o /etc/grub2-efi.cfg
很快!您的视频控制台现在正在输出到 nouveau:
cat /proc/fb
0 nouveaufb