LiveCD 如何知道要使用哪个驱动程序?

LiveCD 如何知道要使用哪个驱动程序?

使用 LiveCD 的计算机类型是否有限制?如果没有,LiveCD 如何知道并拥有您硬件的所有驱动程序,尤其是在没有连接到互联网的情况下?

答案1

您可能从 Windows 用户/安装人员/管理员的角度考虑这个问题。在 Linux/免费软件世界中,开发人员经常必须或选择编写自己的驱动程序。因此,分发驱动程序不受限制(版权),并且他们已经编写了代码来确定硬件是否存在(如上所述)。

因此,所有驱动程序都内置于内核中(或可内置于内核中),通常作为模块。LiveCD 将包含它们可能塞入的所有模块,以便支持各种硬件。精简的操作系统安装可能会选择重新编译内核以仅包含该安装所需的驱动程序/模块。

这也是为什么你有时会在 Linux 中发现没有驱动程序的硬件。如果硬件供应商没有遵循已知标准,也没有为 Linux 开发驱动程序,并且硬件很难理解或不受欢迎,那么它很可能没有驱动程序。

答案2

每个 PCI 设备都有一个供应商 ID和一个设备ID并且每个设备驱动程序(内核模块)都包含一个受支持的“供应商 ID:设备 ID”对的列表,即操作系统可以通过查看这些 ID 对来确定要加载哪个驱动程序。

例如在 Linux 上,您可以在输出的第三列中看到您正在使用的系统的 ID lspci -n(以冒号分隔):

$ lspci -n | head -n 3
00:00.0 0600: 8086:7190 (rev 01)
00:01.0 0604: 8086:7191 (rev 01)
00:07.0 0601: 8086:7110 (rev 08)

0x8086是 Intel 的供应商 ID(这也是 x86 架构所基于的 16 位处理器之一的名称)。

如果你看一下

$ head -n 4 /lib/modules/<kernelversion>/modules.pcimap
# pci module         vendor     device     subvendor  subdevice  class      ...
shpchp               0xffffffff 0xffffffff 0xffffffff 0xffffffff 0x00060400 ...
matroxfb_base        0x0000102b 0x00000519 0xffffffff 0xffffffff 0x00000000 ...
matroxfb_base        0x0000102b 0x0000051b 0xffffffff 0xffffffff 0x00000000 ...

您可以看到设备驱动程序内核模块(第一列)和支持的供应商和设备 ID(第二列和第三列)的表格。

PCI 设备 ID 保存在PCI ID 存储库

答案3

典型的 Linux 发行版为大多数流行的硬件设备提供驱动程序。在计算机启动过程中,LiveCD 将分析您的特定硬件配置并加载所有必需的硬件驱动程序。在大多数情况下,它运行良好,但如果您拥有罕见或非常旧的硬件设备,则可能会出现一些问题。

答案4

与正常安装相同。它查看各种模块提供的别名,并将它们与当前硬件进行匹配。

$ modinfo nouveau | grep ^alias:
alias:          pci:v000012D2d*sv*sd*bc03sc*i*
alias:          pci:v000010DEd*sv*sd*bc03sc*i*
$ modinfo cdc-ether | grep ^alias:
alias:          usb:v413Cp8184d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v413Cp8183d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v413Cp8147d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0930p1311d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0930p130Cd*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0930p130Bd*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1049d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1909d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp190Ad*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1906d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1905d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1904d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1902d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1900d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v*p*d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v07B4p0F02d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp9050d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp9032d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp9031d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp8007d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp8006d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp8005d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp8004d*dc*dsc*dp*ic02isc06ip00*

相关内容