确定内核内置驱动程序是否支持某个设备

确定内核内置驱动程序是否支持某个设备

我正在尝试找到一种方法来准确确定某个系统上的所有硬件是否都通过内核模块或内置到内核中安装了有效的驱动程序。

我正在 Dell Optiplex 990 上使用 RHEL 5.5。

我知道 lspci 是一个很好的起点,但它并不可靠,因为它可以手动更新,而新驱动程序并不总是更新它。我知道我可以查看 /lib/modules/$(uname -r)/modules.pcimap 来根据 ID 查找设备是否有驱动程序模块,但是内置驱动程序呢?我已经安装了一个新内核,并且正在尝试查明内置 agpgart-intel 模块是否支持供应商:设备 ID 8086:0100 的主机桥。

另外,更新内核时是否有更新 pci.ids 列表的正确过程?我知道我可以使用 update-pciids 或从互联网下载列表来更新所有内容,但仅包含当前安装支持的 ID 不是更有意义吗?

答案1

亚历克斯回答你的问题。比较lspci

00:00.0 Host bridge: Intel Corporation Core Processor DRAM Controller (rev 02)
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
00:16.0 Communication controller: Intel Corporation 5 Series/3400 Series Chipset HECI Controller (rev 06)
00:19.0 Ethernet controller: Intel Corporation 82577LM Gigabit Network Connection (rev 06)
00:1a.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)
00:1c.0 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 1 (rev 06)
00:1c.3 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 4 (rev 06)
00:1c.4 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 5 (rev 06)
00:1d.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev a6)
00:1f.0 ISA bridge: Intel Corporation QM57 Chipset LPC Interface Controller (rev 06)
00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series Chipset 6 port SATA AHCI Controller (rev 06)
00:1f.3 SMBus: Intel Corporation 5 Series/3400 Series Chipset SMBus Controller (rev 06)
00:1f.6 Signal processing controller: Intel Corporation 5 Series/3400 Series Chipset Thermal Subsystem (rev 06)
02:00.0 Network controller: Intel Corporation Centrino Ultimate-N 6300 (rev 35)
ff:00.0 Host bridge: Intel Corporation Core Processor QuickPath Architecture Generic Non-core Registers (rev 02)
ff:00.1 Host bridge: Intel Corporation Core Processor QuickPath Architecture System Address Decoder (rev 02)
ff:02.0 Host bridge: Intel Corporation Core Processor QPI Link 0 (rev 02)
ff:02.1 Host bridge: Intel Corporation 1st Generation Core i3/5/7 Processor QPI Physical 0 (rev 02)
ff:02.2 Host bridge: Intel Corporation 1st Generation Core i3/5/7 Processor Reserved (rev 02)
ff:02.3 Host bridge: Intel Corporation 1st Generation Core i3/5/7 Processor Reserved (rev 02)

结果是ls -l pci*/*:*/driver

lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:00.0/driver -> ../../../bus/pci/drivers/agpgart-intel
lrwxrwxrwx. 1 root root 0 May 21 09:34 pci0000:00/0000:00:02.0/driver -> ../../../bus/pci/drivers/i915
lrwxrwxrwx. 1 root root 0 May 21 09:06 pci0000:00/0000:00:16.0/driver -> ../../../bus/pci/drivers/mei_me
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:19.0/driver -> ../../../bus/pci/drivers/e1000e
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1a.0/driver -> ../../../bus/pci/drivers/ehci-pci
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1b.0/driver -> ../../../bus/pci/drivers/snd_hda_intel
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1c.0/driver -> ../../../bus/pci/drivers/pcieport
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1c.3/driver -> ../../../bus/pci/drivers/pcieport
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1c.4/driver -> ../../../bus/pci/drivers/pcieport
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1d.0/driver -> ../../../bus/pci/drivers/ehci-pci
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.0/driver -> ../../../bus/pci/drivers/lpc_ich
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.2/driver -> ../../../bus/pci/drivers/ahci
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.3/driver -> ../../../bus/pci/drivers/i801_smbus
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.6/driver -> ../../../bus/pci/drivers/intel ips

它不一定涵盖“所有硬件”。特别是可以通过 ACPI 访问功能。不过,对于手动探索来说,这太过分了。

另一种选择是开始在您尝试使用系统时构建基本的功能清单。这对我来说是一种更积极的方法,因为 Linux 通常不支持我的系统上的某些功能,但我很高兴地使用 Linux,而不需要该功能:)。

我同意 lspci 是一个很好的帮手。然而,它可能更简单,例如当您看到以太网线路时,只需确认您有工作的以太网。如果是以太网没有工作时,我可以检查是否缺少驱动程序,但在尝试之前不需要检查驱动程序。

我还可能想要记录一下确切的驱动程序是什么,因为我很高兴它运行良好,并且我认为它是再次选择的良好硬件:)。不幸的是,正如冯布兰德所说,硬件支持可能是一个雷区,所以理想情况下你会仍然想要获得您的操作系统或同等社区的认证:Google 中有很多“对我来说非常有用”的报告。

我想知道你是否想使用 agp ? RHEL 5 是 gnome3 之前的版本,因此如果需要,您可以在没有任何 3D 加速的情况下打开终端模拟器。如果你需要 3D 加速,您还需要一个 GL 库。为什么不尝试您可能想要使用的要求最高的图形应用程序,并检查它们是否运行?

判断性能有点烦人。它不仅仅是一个复选框,但它仍然可能是由一种离散的可能性引起的,例如使用通用驱动程序而不是特定于硬件的驱动程序。在函数列表中查找快速基准并记录结果作为参考点可能会很有用。例如,Gnome Disks 是一个非常方便的基准测试工具,默认情况下安装在该桌面的最新版本(咳嗽)上。

当您发现某个系统出现性能故障(例如 Gnome 3 不稳定)时,您可以将其记为潜在的检查表项。即,在新系统上,您可能会注意到 Gnome 3 并不总是不稳定,因此它通过了该特定测试。

答案2

如果您知道所需驱动程序的 Kbuild 符号,您可以检查/proc/config.gz或任何其他可用的内核配置源(发行版通常将配置放在/boot内核旁边,或者您可以使用内核源scripts/extract-ikconfig代码树从内核中提取配置 - 前提是当然,配置已编译到内核中)。

答案3

您必须根据 RHEL 支持的设备列表查找为计算机列出的设备。是的,可能有一些碰巧有效,但没有人费心去检查/证明它们有效。

请注意,有时名称相似的设备(例如,某些名为 SC-423+ 的以太网卡是完全地与表面上相同的 SC-423 不同;有一次我们被型号完全相同但完全不同的卡片咬伤了)。相反,来自不同提供商的完全不同的设备是在相同的部件上构建的。但同时也让制造商 A 坚如磐石,而 B 则摇摇欲坠。

相关内容