主要视频卡通常可以在BIOS中设置(选项主要VGA卡),它将是系统使用的第一张卡。
我的问题是如何以编程方式识别(使用shell脚本和实用程序更可取)我的两张显卡中哪一张是主卡?
编辑:我希望我不必详细说明为什么我需要这个,因为它有点复杂,但我会解释下面的问题。
我有一个配置向导,允许动态配置LiveCD中的多系统系统,有两个独立的显示器,键盘和鼠标,我的向导以这种方式工作:
问题是:如果我在主显卡中启动第一个Xorg,一切正常,但如果我在二级卡中启动第一个Xorg,则会发生以下情况:
传球1,2和3有效,但在第3传球结束时,当第一个座位的Xorg关闭时,第二个座位的Xorg闪烁并且不回来,只显示一个空白屏幕在顶部有一个 _ 光标,第一个座位的桌面加载,但我没有在第二个座位看到向导屏幕,如果我执行 kill,第一个Xorg就会回来-HUP ,我需要再次从它开始 ui 。
所以,这就是为什么我需要在启动Xorg之前识别主显卡(抱歉我以前没有提到过)。我在不同的计算机上测试了这个系统,使用不同的视频卡,行为是一样的。我还在Ubuntu 12.04( raring 发行版的软件包)中测试了内核和Xorg的持续软件包。
答案 0 :(得分:0)
假设X11正在运行,您可以假设主卡是Xorg
使用的卡...那么您可以尝试
ls -l /proc/$(pidof X)/fd |grep /dev/dri
在我的系统Debian / Sid / x86-64上使用Linux 3.12内核(在Intel3770K上有一个Nvidia卡也有它的VGA)我得到了/dev/dri/card0
等等......
但是你应该解释为什么你在问什么以及你想要解决什么问题....为什么这对你很重要?
我完全不确定Linux是否有像BIOS知道的主显卡的概念。
可能hwinfo
告诉你有关图形卡的所有信息。
答案 1 :(得分:0)
Linux中有几个命令行工具可以从BIOS中提供人类可读的信息。也许你可以在那里找到你的视频板,看看哪个是主要的。从我在输出中看到的,看起来并不像是#34;这是主视频",但我确实看到了很多信息。当视频卡A是主要时,您可以将该信息输出到文件,当B是主要时,再次将这些信息输出到文件,然后比较这两个文件,看看是否存在差异。
我使用的命令是dmidecode
:
sudo dmidecode | less
如果你看一下手册页:
man dmidecode
您会注意到程序员提供了一些其他类似工具,例如biosdecode
和vpddecode
。
从那些您了解到/ dev / mem设备可以获得BIOS信息的人。虽然你需要是root用户才能阅读它,但如果你知道地址(我不知道)那么你可以进去,然后根据需要偷看和戳戳,找出哪个视频卡被定义为哪个信息的位置主要视频卡。
运行dmidecode,我的主板有一些细节:
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Supermicro
Product Name: X9SCI/X9SCA
Version: 1.01
Serial Number: ZM25U44192
Asset Tag: To be filled by O.E.M.
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: To be filled by O.E.M.
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
这里有一个视频条目:
Handle 0x000E, DMI type 10, 6 bytes
On Board Device Information
Type: Video
Status: Enabled
Description: To Be Filled By O.E.M.
然后另一个条目看起来像这样:
Handle 0x0036, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard IGD
Type: Video
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:02.0
它也可能是您需要从BIOS使用的闪存中读取的内容。这是通过flashrom(您可能需要安装)完成的:
sudo flashrom --programmer internal --read my-flash.bin
在我的情况下,我的计算机上的ROM是2Gb的数据。非常大。但是,您可以确定您要查找的信息存在于该数据块中,因为这是BIOS保存数据的唯一方法,这些数据将在计算机关闭时保持不变。
答案 2 :(得分:0)
我找到了一种方法,当它们来自不同的供应商或至少具有不同的名称时,如何检查主 GPU。
在 KDE 中转到信息中心,然后打开图形 -> OpenGL。在Direct Rendering (GLX) 和Direct Rendering (EGL) 中,您可以看到一个Driver 块。您可以在那里看到供应商和设备。它将命名主要的 GPU。
此外,您可以通过运行
以编程方式获取Vendor值
glxinfo | grep "OpenGL vendor string" | cut -f2 -d":" | xargs
。
我猜这个方法会在 kde 切换到 vulkan 进行渲染时停止工作(在 kde 6 中)。但目前我不知道另一种确定主 gpu 的方法。