据我所知,linux 只能列出它能理解的设备,即已安装驱动程序的设备。我认为 lspci 就是用于此目的的命令。
但是,如何才能确定系统中是否存在某个未安装驱动程序的设备,以及该设备用途和所需驱动程序的一些提示。
我希望了解这些信息,以便能够将我的 Linux 内核重新编译到最低限度,并避免反复试验的方法。
答案1
串行通信就像其他几个人说的一样。
一些额外的说明:
每个现代总线接口(Vesa 本地总线、PCMCIA、CardBus、PCI、PCI-X、PCI-e、Thurderbolt、IDE、ATAPI、SATA、USB、Firewire,仅举几个能想到的)都定义了一组低级探测命令,以便操作系统可以检测到该总线上存在哪些设备(如果有)。
此类命令会将设备 ID 返回给操作系统。然后,操作系统会将此 ID 与驱动程序“通告”为它们认为能够处理的 ID 进行比较。
这是必要的,否则操作系统将无法确定机器中存在什么。如果操作系统无法确定那里有什么,它就无法将设备与所需的驱动程序匹配。
(以上内容适用于任何现代操作系统。Linux、Windows 和 OSX 所做的完全相同。)
回到 Linux:
操作系统执行此操作的驱动程序是各种接口总线的核心驱动程序的一部分,这些接口总线需要存在于内核中(或作为可加载模块)。
当然:启动和加载根文件系统所需的任何总线接口/设备驱动程序都需要在启动时位于内核中。如果您想减小内核的大小,其他任何东西都可以是模块,或者如果系统中根本没有此类硬件,则可以完全省略。
典型的首次错误是制作所有文件系统驱动程序模块。您至少需要其中 1 个才能加载根文件系统。
答案2
lspci -v
将显示已连接的设备,即使没有相应的驱动程序。
答案3
我也喜欢lshw
在这些发行版上提供它。
有关您的 CPU、内存插槽、USB 插槽、磁盘等的大量有用信息。
答案4
如果您需要所有硬件的扩展信息,可以使用dmidecode
命令。它会转储 DMI 表内容。