将此驱动程序编译为 Linux 上的模块,无需重新编译整个内核

将此驱动程序编译为 Linux 上的模块,无需重新编译整个内核

我一直在 Windows 上使用 mbox2 作为外部声卡 - 它的音质比我的板载声卡或 ipod 更好,而且非常震撼。有几个小问题 - 它只适用于支持 ASIO 的应用程序,并且一次只支持一个流 - 这还不算太糟 - 系统声音通过普通声卡播放,音乐通过 mbox2 播放。

现在...有一个实验驱动程序 对于 Linux,虽然不完整且不受支持,并且将来可能不会更新,但它将允许我在 Linux 中使用 mbox2,并且不会出现 Windows 驱动程序的一些缺点。然而,这显然意味着要编译一个全新的内核,而我宁愿不这样做。我想知道是否有办法将其编译为一个模块(注释暗示了这一点),而不是编译整个内核。

答案1

有一些可能性。如果是向内核添加全新选项,则必须修补内核源代码(很可能是较旧的内核源代码)并运行make menuconfig。在那里,您只能将其作为模块启用。当然,您必须重新编译内核。(如果运行 Linux 的机器很糟糕(咳嗽(如果你知道怎么做,或者有心情做的话。)

哦,我检查了源代码。是的,只有修补内核才有效,因为这不是一个模块。如果我没看错的话,它会修改基本的 ALSA 行为。所以是的,你可能想把它编译成一个模块,但我怀疑这是否可行。(尝试使用 -git 树,也许他修复了这个问题……因为这不是修复问题的可接受方式。)

答案2

虽然可以将其构建为模块,但它旨在替换发行版的内核包提供的现有模块。因此,它会导致您丢失主线内核中该模块的任何改进。

正确的处理方法是获取发行版的内核源代码包,在他提供的源代码中找到声卡专用代码,将其修补到源代码包中,然后重建二进制包。这是一条更难的路,但效果会更好。

相关内容