我有一个开发板,上面安装了旧版本的 Linux。供应商为设备提供了一个映像,其中包含经过大量修改的 Linux 内核、一些可加载的内核模块和一些示例软件。
我想在设备上安装较新版本的 Linux 内核,但供应商对此不支持,因为他们修改后的 Linux 内核基于较旧的内核版本。
我不明白的是,当你可以通过将驱动程序编写为内核模块来使内核与其运行的设备兼容时,为什么要开始破解 Linux 内核呢?它可以轻松地为任何内核版本重新编译,而不会出现问题。这样,如果供应商仅支持某个内核版本,您就会“陷入困境”:(
但肯定有一些我错过的原因,因为我看到许多项目使用这种方法来获取某些版本的内核,并对其进行大量修改以适应他们的主板。我感兴趣的是:
- 为什么要修改linux内核而不是创建内核模块?
- 如果我需要运行较新的内核,但我没有得到供应商的支持,该怎么办(设备驱动程序应该在较新版本的内核上工作......)
答案1
这个问题里面有很多假设。
以下是一些原因。
内核接口是不是稳定,因此一个版本的模块可能无法针对不同版本进行编译。
内核可能不会公开所需的设施。
内核可能会公开所需的设施,但不会以可接受的方式公开,例如要求模块具有特定的许可证。
编写代码的人发现以这种方式编写代码更快。
至于您是否需要更新的内核的选择。
- 找到已经移植了代码的其他人
- 自己移植
- 花钱请别人移植(可能不需要钱,啤酒、奉承和好奇心可能会起作用)。