Linux如何知道如何以及在新安装中安装哪些驱动程序

绝地武士

我想知道Linux(例如Ubuntu)如何“从头开始”安装时如何以及如何安装驱动程序。例如,我购买了一台没有任何系统的新计算机,然后安装了Ubuntu。在我的PC内,我有一个GPU,HDD等,还有一些外围设备,例如鼠标,键盘等。显然,全新安装没有系统控制和与硬件进行通信所需的驱动程序,因此Ubuntu如何知道“要安装/下载哪些驱动程序,它是如何做到的?

电信

(基于Google缓存的Petter Reinholdtsenhttp://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html副本。)

在硬件中,只要您知道特定I / O总线或子系统的标准访问方法,就可以访问某些标准设备标识符,而无需进一步了解实际设备。在Linux中,这些标识符用于构建modalias字符串,然后用于为每个设备找到正确的驱动程序。

每个驱动程序模块的源代码都可以包含MODULE_DEVICE_TABLE结构,depmod命令可使用这些结构来创建模块别名通配符条目,这些条目将与该特定模块支持的硬件的模态字符串匹配。

当内核检测到尚未加载匹配驱动程序的硬件时,它将根据硬件标识符创建一个modalias字符串,并使用它来请求自动加载模块。modprobe然后,命令将使用/lib/modules/$(uname -r)/modules.alias[.bin]创建文件depmod来查看是否存在匹配的模块。如果是这样,则将加载该模块,并在必要时开始探查硬件以获取更多详细信息。

例如,我有DVB电视卡:

$ lspci -v -nn -s 07:00.0
07:00.0 Multimedia video controller [0400]: Conexant Systems, Inc. CX23885 PCI Video and Audio Decoder [14f1:8852] (rev 04)
    Subsystem: Hauppauge computer works Inc. CX23885 PCI Video and Audio Decoder [0070:6a28]

这将导致如下所示的modalias字符串:

pci:v000014F1d00008852sv00000070sd00006A28bc04sc00i00

cx23885模块MODULE_DEVICE_TABLE在其源代码中基于以下别名

# modinfo cx23885
...
alias:          pci:v000014F1d00008880sv*sd*bc*sc*i*
alias:          pci:v000014F1d00008852sv*sd*bc*sc*i*
...

当内核检测到卡时,它将有效地运行modprobe pci:v000014F1d00008852sv00000070sd00006A28bc04sc00i00命令。cx23885模块的第二个别名匹配,因此该模块将被加载。

PCI / PCI-X / PCIe总线设备

这是“ PCI子类型”。它使用如下的modalias字符串:

pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00

可以将其解码如下:

v   00008086  (vendor)
d   00002770  (device)
sv  00001028  (subvendor)
sd  000001AD  (subdevice)
bc  06        (bus class)
sc  00        (bus subclass)
i   00        (interface)

使用lspci -nn,您可以看到类,子类,供应商和设备ID。如果添加该-v选项,则还可以看到subvendor:subdevice ID。

USB设备

对于USB设备,modalias字符串如下所示:

usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00

解压到:

v    1D6B  (device vendor)
p    0001  (device product)
d    0206  (bcddevice)
dc     09  (device class)
dsc    00  (device subclass)
dp     00  (device protocol)
ic     09  (interface class)
isc    00  (interface subclass)
ip     00  (interface protocol)

使用该lsusb命令,您可以查看供应商和产品ID。如果使用该-v选项,则也可以看到其他ID。

ACPI设备

这些使用ACPI PNP标识符,以acpi:冒号作为前缀并以冒号分隔:

acpi:IBM0071:PNP0511:

DMI设备

这可能是一个很长的modalias字符串:

dmi:bvnIBM:bvr1UETB6WW(1.66):bd06/15/2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:

解压到:

bvn  IBM            (BIOS vendor)
bvr  1UETB6WW(1.66) (BIOS version)
bd   06/15/2005     (BIOS date)
svn  IBM            (system vendor)
pn   2371H4G        (product name)
pvr  ThinkPadX40    (product version)
rvn  IBM            (board vendor)
rn   2371H4G        (board name)
rvr  NotAvailable   (board version)
cvn  IBM            (chassis vendor)
ct   10             (chassis type)
cvr  NotAvailable   (chassis version)

SerIO设备,即大多数PS / 2鼠标

modalias字符串将如下所示:

serio:ty01pr00id00ex00

这些值是:

ty  01  (type)
pr  00  (prototype)
id  00  (id)
ex  00  (extra)

其他总线/设备类型

Linux内核可以识别许多其他总线类型。研究内核源文件file2alias.c的内容可能有助于理解每种modalias字符串的组成部分的含义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何知道要在OEM笔记本电脑上安装哪些驱动程序

来自分类Dev

如何重新安装默认的图形驱动程序?

来自分类Dev

如何重新安装图形驱动程序

来自分类Dev

如何重新安装默认的图形驱动程序?

来自分类Dev

如何重新安装“ HID兼容驱动程序”?

来自分类Dev

如何重新安装声卡驱动程序?

来自分类Dev

Linux中如何安装外围硬件的驱动程序?

来自分类Dev

如何在离线安装中安装AMD驱动程序

来自分类Dev

如何为4.2.0 Linux内核安装BlackMagic驱动程序

来自分类Dev

在 Ubuntu 18.04 中重新安装驱动程序

来自分类Dev

我们如何知道Linux中安装了哪些应用程序?

来自分类Dev

如何在Lubuntu中安装Intel驱动程序

来自分类Dev

如何在14.04中安装旧版nvidia驱动程序?

来自分类Dev

如何在Debian 9中安装WiFi驱动程序?

来自分类Dev

如何安装Nvidia Optimus驱动程序?

来自分类Dev

如何安装正确的图形驱动程序?

来自分类Dev

如何安装Radeon开源驱动程序?

来自分类Dev

如何安装Radeon开源驱动程序?

来自分类Dev

如何安装正确的图形驱动程序?

来自分类Dev

如何安装Nvidia Optimus驱动程序?

来自分类Dev

如何安装驱动程序文件?

来自分类Dev

如何停止Windows安装驱动程序

来自分类Dev

如何安装Nvidia驱动程序?

来自分类Dev

如何安装开源“ radeon”驱动程序

来自分类Dev

如何删除上次安装的驱动程序?

来自分类Dev

如何删除使用 NVIDIA 安装程序安装的驱动程序?

来自分类Dev

哪个版本的ubuntu支持我的卡以及如何安装封闭源代码驱动程序?

来自分类Dev

如果 nvidia divers 未显示在其他驱动程序中,您如何安装它,以及安装时如何使其工作?

来自分类Dev

Windows安装后如何安装AMD RAID驱动程序?

Related 相关文章

  1. 1

    我如何知道要在OEM笔记本电脑上安装哪些驱动程序

  2. 2

    如何重新安装默认的图形驱动程序?

  3. 3

    如何重新安装图形驱动程序

  4. 4

    如何重新安装默认的图形驱动程序?

  5. 5

    如何重新安装“ HID兼容驱动程序”?

  6. 6

    如何重新安装声卡驱动程序?

  7. 7

    Linux中如何安装外围硬件的驱动程序?

  8. 8

    如何在离线安装中安装AMD驱动程序

  9. 9

    如何为4.2.0 Linux内核安装BlackMagic驱动程序

  10. 10

    在 Ubuntu 18.04 中重新安装驱动程序

  11. 11

    我们如何知道Linux中安装了哪些应用程序?

  12. 12

    如何在Lubuntu中安装Intel驱动程序

  13. 13

    如何在14.04中安装旧版nvidia驱动程序?

  14. 14

    如何在Debian 9中安装WiFi驱动程序?

  15. 15

    如何安装Nvidia Optimus驱动程序?

  16. 16

    如何安装正确的图形驱动程序?

  17. 17

    如何安装Radeon开源驱动程序?

  18. 18

    如何安装Radeon开源驱动程序?

  19. 19

    如何安装正确的图形驱动程序?

  20. 20

    如何安装Nvidia Optimus驱动程序?

  21. 21

    如何安装驱动程序文件?

  22. 22

    如何停止Windows安装驱动程序

  23. 23

    如何安装Nvidia驱动程序?

  24. 24

    如何安装开源“ radeon”驱动程序

  25. 25

    如何删除上次安装的驱动程序?

  26. 26

    如何删除使用 NVIDIA 安装程序安装的驱动程序?

  27. 27

    哪个版本的ubuntu支持我的卡以及如何安装封闭源代码驱动程序?

  28. 28

    如果 nvidia divers 未显示在其他驱动程序中,您如何安装它,以及安装时如何使其工作?

  29. 29

    Windows安装后如何安装AMD RAID驱动程序?

热门标签

归档