Linux 将驱动程序编译为内核的一部分,而不是模块

Linux 将驱动程序编译为内核的一部分,而不是模块,linux,compilation,kernel,driver,kernel-module,Linux,Compilation,Kernel,Driver,Kernel Module,我正在尝试为嵌入式设备创建一个简约的Linux。这意味着编译内核和驱动程序的必要性。一个驱动程序是由其创建者直接为设备板编写的,因此它不是存储库驱动程序。它可以编译为内核模块 然而,由于Linux的不可变特性和对内存使用量极小的要求,我不想使用模块。我希望内核中内置所有驱动程序。所有提供内核的驱动程序我都是这样设置的 所以我的问题是如何将一个特殊的驱动程序编译到内核 所有的搜索并没有为我提供一个解决方案——所有的搜索都只是作为模块进行编译 感谢您的帮助。您肯定必须将驱动程序源代码放入内核源代码树

我正在尝试为嵌入式设备创建一个简约的Linux。这意味着编译内核和驱动程序的必要性。一个驱动程序是由其创建者直接为设备板编写的,因此它不是存储库驱动程序。它可以编译为内核模块

然而,由于Linux的不可变特性和对内存使用量极小的要求,我不想使用模块。我希望内核中内置所有驱动程序。所有提供内核的驱动程序我都是这样设置的

所以我的问题是如何将一个特殊的驱动程序编译到内核

所有的搜索并没有为我提供一个解决方案——所有的搜索都只是作为模块进行编译


感谢您的帮助。

您肯定必须将驱动程序源代码放入内核源代码树中,并更新makefile以包含它。您可以在步骤1.1到1.3中看到它是如何工作的

如果用户级软件与设备驱动程序进行任何对话,则可能是通过系统调用进行的。搜索驱动程序的源代码,查找
asmlinkage
,如果您找到了其中任何一个,那么您正在寻找添加一些系统调用。上述文档的其余部分将解释如何设置它们。您必须修改至少两个文件(根据您的内核版本,它们可能略有不同)

如果设备驱动程序直接与内核对话,那么我们正在处理中断、内存映射I/O或DMA。老实说,我不知道它们是否可以在驱动程序的源文件中处理(在这种情况下,您可以继续),或者它们是否还需要修改源树中的其他文件。对于这些事情来说,网络是一个很好的资源


祝您好运

这需要您将模块放入内核源代码树,并修补一些makefile以包含它。不过,我不确定具体细节。您使用的是什么模块?它是一个自制的驱动程序。我知道我需要将它添加到内核源代码中。然而,我需要一些细节,如何修改makefile等等。可能重复的