据我所知,设备驱动程序位于 Linux 内核中。例如,假设 GNU/Linux 发行版 A 与 GNU/Linux 发行版 B 具有相同的内核版本。这是否意味着它们具有相同的硬件支持?
答案1
最简洁的答案是不。
对相同内核版本的驱动程序支持可在编译时配置,并且还允许模块加载。因此,发行版中支持的实际设备取决于包含在设备驱动程序中编译的设备、为设备编译的可加载模块以及实际安装的模块。
还有一些设备本身并未包含在发行版可能附带的内核中。我最近没有遇到问题,但是当我开始在家使用 Linux 时,我选择了 SuSE,尽管它们具有与 RedHat 相同或相似的内核版本,SuSE 包含“开箱即用”的 ISDN 驱动程序和软件包(即早在 1998 年)。
答案2
有些。
虽然其他人所说的(不同的发行版以不同的方式构建内核)在技术上是正确的,但应该注意的是,由于 Linux 内核支持可加载模块,因此大多数发行版都构建了对所有硬件的支持,因为它们也可能 - 这之所以有效,是因为驱动程序是作为模块构建的,因此将内核加载到内存中时不会产生任何费用。唯一的开支是硬盘空间,硬盘空间很充裕。
主要差异(正如已经提到的那样)将归因于每个发行版在如何处理固件 blob 等非自由软件方面的不同策略。
答案3
没有为什么 :
从源代码构建内核时,每个发行版在选择启用哪些内核功能时都会做出不同的选择。例如,我不期望专注于服务器硬件的企业发行版为大量声卡提供太多支持。
即使对于内核中包含的开源 Linux 驱动程序,某些驱动程序仍然依赖于供应商提供的(闭源)固件。不同的发行版对于包含这些内容有不同的政策。对于一些示例,请检查 Debian非免费固件包裹。