我怎样才能找到我系统上正在使用的视频驱动程序?

我想尝试一个不同的视频显示驱动程序,但我不确定我当前正在使用哪个。有什么简单的方法可以查看我的系统当前使用的驱动程序?
7个回答

运行lshw -c video,并查找带有"configuration"的行。加载的驱动程序以"driver="为前缀。示例输出:
  *-display
       description: VGA兼容控制器
       product: Core处理器集成图形控制器
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 02
       width: 64位
       clock: 33MHz
       capabilities: vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:45 memory:fd000000-fd3fffff memory:d0000000-dfffffff ioport:1800(size=8)
如果您想获取有关加载的驱动程序的更多信息,请运行modinfomodinfo i915的输出:
filename:       /lib/modules/2.6.35-24-generic/kernel/drivers/gpu/drm/i915/i915.ko
license:        GPL and additional rights
description:    Intel Graphics
author:         Tungsten Graphics, Inc.
license:        GPL and additional rights
... stripped information for saving space ...
depends:        drm,drm_kms_helper,video,intel-agp,i2c-algo-bit
vermagic:       2.6.35-24-generic SMP mod_unload modversions 

请注意,modinfo 命令适用于文件名和别名,而不是模块名称。大多数模块的模块名称和文件名相同,但也有例外情况。其中之一就是 nvidia
另一种使用这些命令以显示驱动程序文件名的方法是:
modinfo -F filename `lshw -c video | awk '/configuration: driver/{print $2}' | cut -d= -f2`

当加载时,命令lsmod将显示已加载的nvidia模块。 modinfo nvidia会出错。为什么?因为没有名为“nvidia”的模块,它只是一个别名。要解析别名,可以使用modprobe --resolve-alias nvidia。或者要在一个命令中获取完整的modinfo信息:
modinfo $(modprobe --resolve-alias nvidia)

1谢谢 - 你知道是否有办法将返回的字符串与提供更长描述的数据库(或列表等)进行匹配吗? - belacqua
使用modinfo命令。如果您想获取有关i915驱动程序的更多信息,请运行:modinfo i915 - Lekensteyn
4"modinfo nvidia_current" 对我来说不起作用。然而,"lshw -c video" 显示了我的驱动程序细节,如nvidia。 - Ubuntuser
1我的笔记本电脑有两张显卡:一张是集成的英特尔显卡,另一张是Radeon HD 6xxx。这两张显卡都有驱动程序,所以在这些命令中都会显示出来。但这并不能告诉我X11实际使用的是哪一张显卡,对吧? - naught101
6@naught101 在/var/log/Xorg.0.log中查找。正在使用的卡片标有一个星号:(--) PCI:*(0:0:2:0) ... - Lekensteyn
虽然lshw报告说该程序必须以root权限运行,但它仍然能够报告显卡信息。因此,细节被省略了,但这些对于了解驱动程序并不重要。 - Lekensteyn
对于从谷歌搜索而来的 Debian(或其他)用户,可以通过 apt(或类似工具)安装 lshw - Eric
我有两个作者,'Intel Corporation'和'Tungsten Graphics, Inc'。这是什么意思呢?我在这里运行的是Intel的驱动程序吗? - Hassan
@Hassan 你应该看一下这个名字,“i915”是Intel图形驱动程序。据说Tungsten Graphics是最初的开发者之一,但硬件来自Intel。 - Lekensteyn
9当我运行sudo lshw -c video命令时,"configuration"一栏显示"latency=0",而且没有任何关于驱动程序的条目。我已经成功重新安装了英特尔驱动程序多次,并在重新启动之间进行了操作,但无论如何,lshw都不显示任何驱动程序信息。 - user340048
在哪里可以阅读i915驱动程序的版本?我想知道它是否支持Vulkan。 - Hrvoje T
@HrvojeT 内核驱动程序似乎不负责Vulkan支持,显然Mesa库需要支持它。请参阅https://01.org/linuxgraphics/blogs/jekstrand/2016/open-source-vulkan-drivers-intel-hardware - Lekensteyn
1所以,总之:fnameORalias=$(lshw -c video 2> /dev/null | awk '/configuration: driver/{print $2}' | cut -d= -f2); { fname=$(modprobe --resolve-alias $fnameORalias); [ "$fname" == "$fnameORalias" ] && echo "$fname" && modinfo $fnameORalias 2> /dev/null; } || { modprobe --resolve-alias $fnameORalias; modinfo $(modprobe --resolve-alias $fnameORalias); } - kavadias
5我的显示器上只显示“配置:延迟=0”,没有列出任何驱动程序。我该如何找到它?编辑:好的,这是因为nomodeset选项导致的。 - vir us

你可以使用以下命令查看当前使用的vga内核驱动程序:
lspci -nnk | egrep -i --color 'vga|3d|2d' -A3 | grep 'in use'

ATI / AMD显卡的示例输出:
  • 如果使用开源的Radeon驱动程序:
  • 正在使用的内核驱动程序:radeon
    
  • 如果使用专有的Fglrx驱动程序:
  • 正在使用的内核驱动程序:fglrx_pci
    
完整输出与 lspci -nnk | grep -i vga -A3
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Mobility Radeon HD 2400 [1002:94c9]
    Subsystem: Toshiba America Info Systems Device [1179:ff00]
    Kernel driver in use: fglrx_pci
    Kernel modules: fglrx, radeon

你可以使用 lspci -nnk | grep -i vga -A3 | grep 'Kernel modules' 命令查看可用的内核模块。
Kernel modules: fglrx, radeon

注意:这并不适用于每种情况!
对于SiS 65x/M650/740 PCI/AGP VGA显示适配器,没有“正在使用的内核驱动程序”行:
lspci -nnk | grep -i vga -A2
01:00.0 VGA compatible controller [0300]: Silicon Integrated Systems [SiS] 65x/M650/740 PCI/AGP VGA Display Adapter [1039:6325]
    Subsystem: ASUSTeK Computer Inc. Device [1043:1612]
    Kernel modules: sisfb

而且可用的sisfb内核模块并不是加载的驱动程序,因为lsmod | grep sisfb没有输出(sisfb被列入黑名单)。在这种情况下,sudo lshw -c video | grep Konfiguration也无法工作。输出结果如下:

   Konfiguration: latency=0

没有任何驱动程序信息。

8对于使用“标准”Linux工具的解决方案给予+1(在这里在Fedora上完美运行)。 - 4levels
4我如果同时看到in use的话,i915和nouveau怎么办?我怎样知道X使用的是哪一个? - akostadinov
+1 我正在尝试获取在 lubuntu 系统上使用的视频驱动程序名称:你的 lspci | grep 直接将我引导到那里。Lekensteyn 提议使用的 lshwubuntu 上可以工作,但无法在 lubuntu 上检测到模块文件的名称。 - Antonio Molinaro
要获取有关每个显卡使用的驱动程序的简洁信息,请尝试以下命令:lspci -nnk | grep -i vga -A3 | grep -e 'in use' -e VGA该命令将显示类似以下内容:00:02.0 显示适配器 [0300]: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller [8086:0416] (rev 06) 正在使用的内核驱动程序:i915 01:00.0 显示适配器 [0300]: NVIDIA Corporation GK106GLM [Quadro K2100M] [10de:11fc] (rev a1) 正在使用的内核驱动程序:nvidia - brewmanz

hwinfo --gfxcard

寻找以“ Driver:”开头的行。 您可能需要先安装hwinfo软件包。

到目前为止,我看到的最好的信息在“nouveau”维基中。它还可以帮助非NVIDIA显卡: https://nouveau.freedesktop.org/wiki/Optimus/ 这是“xrandr --listproviders”和“sudo cat /sys/kernel/debug/vgaswitcheroo/switch”。还有很多其他有用的信息,如如何控制电源、输出和卸载等。

我尝试了很多方法都没有成功,但这个方法确实有效(Ubuntu 12.10):
/usr/lib/nux/unity_support_test --print

一个原因是我有Nvidia Optimus显卡,这让事情变得更加困难,所以在命令之前我添加了optirun

2我以为它只是打印驱动程序的功能和OpenGL版本 - 这能显示你正在使用的驱动程序吗? - belacqua
我在Ubuntu 16.04.2中测试过这个命令。它似乎以与命令glxinfo|egrep "OpenGL vendor|OpenGL renderer*"相似的语法报告活动的GPU。我相信unity_support_test --print在后台运行OpenGL命令。 - Sun Bear

inxi -G

inxi 是一个 Perl 脚本,用于在控制台显示系统信息;至少在 Xubuntu 中默认安装。


打开终端并输入以下命令:
sudo apt-get install sysinfo

这是一个方便的小程序,可以告诉你关于你的电脑所需知道的一切。

3我无法通过Sysinfo获取任何VGA驱动程序信息。Sysinfo VGA信息截图 - BuZZ-dEE
1sysinfo在Ubuntu 16.04下崩溃了。这是一个显示有用系统信息的程序的不错开端。 - Underverse
这并没有回答问题。 - RichieHH