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