Linux 中的硬件检测如何工作?

Linux 中的硬件检测如何工作?

每当我必须解决 Linux 中的“wifi 不工作”、“视频不工作”等问题时,我真的不明白如何正确地做到这一点。我的方法很混乱:尝试lspci,研究dmesg,研究一些日志,谷歌,希望你能找到解决方案。我真正想要的是了解正在发生的事情,并能够追踪整个路径并找出到底什么时候出了问题。

假设wifi坏了。

我跑去lspci看看我的电脑里有什么样的网卡。通常我可以在lspci的输出中看到与 wifi 相关的内容。这个“东西”包括我的卡的名称和型号。但它是如何运作的呢?此命令是否仅列出先前被其他东西成功发现的设备(可能是 udev?)它在哪里获取设备的名称/描述?它是否存储在硬件内部的某个位置?如果前面的步骤出现问题,是否有lspci可能不会报告我的硬件?

现在我需要了解是否存在适合我的硬件的内核模块。我所做的就是进入内核源代码,运行make menuconfig并搜索我的硬件的名称。这是否意味着内核必须知道地球上所有的网卡型号?这似乎很奇怪,因为这样的型号太多了。我猜所有网卡都应该有类似的接口,它们之间有什么不同,以至于需要为不同类型的卡配备不同的模块?

有没有更好的方法来找到适合我的卡的内核模型?如果我找到的模块编译并安装后卡仍然无法工作,我该怎么办?我如何确保模块正确(这意味着问题发生在稍后的阶段)?

现在我跑ifconfigiwconfig。这些命令显示网络接口。如果我在结果中看到 wifi 接口,是否意味着内核成功检测到硬件并创建了界面这样其他程序现在就可以使用它了?这是否意味着现在的问题更高级(例如密码错误或类似的问题)?

目录的内容可以/dev/帮助我以某种方式了解出了什么问题(或确保某些事情肯定是正确的)吗?

抱歉,如果这个问题看起来很混乱,它反映了我头脑中的混乱。请帮我摆脱这个烂摊子。

相关内容