不同的 Linux 发行版之间的驱动程序是否兼容?

不同的 Linux 发行版之间的驱动程序是否兼容?

如果您有一个可以在一个 Linux 发行版上运行的设备驱动程序,那么它也可以在另一个 Linux 发行版上运行吗?

答案1

这取决于其他发行版使用的内核。尝试uname -a确定内核版本。如果发行版 B 的内核版本低于发行版 A 的内核版本,则可能是驱动程序无法正常工作,因为它依赖于较新的功能。如果发行版 B 具有较新的内核,那么我认为它可以正常工作。

但是,Linux 内核本身并不保证版本之间的 API 稳定性。它们保证用户空间 API 稳定性,其座右铭是“我们永远不会破坏用户空间”,但内核中的 API(例如驱动程序使用的 API)的稳定性却没有得到保证。

另一个可能的错误来源是缺少依赖模块。如果您的驱动程序依赖于 Distro B 中未包含的另一个模块,它将无法工作。

答案2

设备驱动程序是源代码形式还是编译的二进制形式?

如果在源代码,那么当编译成它所针对的内核版本时,它将正常工作。针对您需要它工作的每个内核配置分别进行编译。

如果在编译的二进制文件形式,它只能与编译时所针对的特定内核一起工作。即使是使用不同配置编译的同一版本的内核,也不太可能与为其他配置编译的二进制模块一起工作。

课程:

  • 选择已在主线内核中维护驱动程序的硬件。

  • 如果您想使用尚未出现这种情况的硬件,请激励内核开发人员纠正这种情况。

  • 激励硬件供应商协助内核开发人员完成此过程。

  • 疯狂地远离任何供应商拒绝在主线内核中维护驱动程序的硬件。

答案3

一般情况下答案是肯定的,只要内核相同或更新即可。一般来说,大多数驱动程序都内置在内核中。大多数供应商只会对其发行版的内核进行小幅修改,因此应该可以正常工作。

你最大的问题是一些发行版已经严重过时,你可能会得到一个特定的驱动程序还无法运行的旧内核。

例外情况:

超旧的硬件仍然挂在某些 COM 端口设备上,所有赌注都无效。

相关内容