我正在安装一台全新的Mac Mini上安装Debian,其中的Broadcom网卡只能与Broadcom最新的tg3模块一起工作 。 我可以很容易地构build这个模块,但是执行手动构build并覆盖内核包附带的tg3.ko看起来像是一个混乱,因为:
我读过如何构build内核模块的debian包? ,但是到目前为止我研究的技术似乎是处理打包不在内核包中的模块的情况。 鉴于我想要replace内核包已经提供的模块,而不是添加一个新的模块,我怎么能做到这一点,而不诉诸脆弱的kludges?
我能够与DKMS合作。 另外还有一个问题,就是内核包中已经存在的tg3.ko。 我知道在/lib/modules/$KERNELVERSION下可以有一个“updates”目录。 这样,我不必担心覆盖另一个软件包的文件,并有一个简单的方法可以回到默认的版本。 更多在这里:
http://www.linuxvox.com/2009/10/update-kernel-modules-the-smart-and-safe-way/
这里是关于DKMS过程的一个很好的教程,当DKMS模块将它们的模块放入/更新时,它也描述了一些特定于Ubuntu / Debian的魔术:
https://wiki.kubuntu.org/Kernel/Dev/DKMSPackaging
我用于这个特定模块的dkms.conf:
PACKAGE_NAME = “TG3” PACKAGE_VERSION = “3.124c” BUILT_MODULE_NAME [0] = “TG3” DEST_MODULE_LOCATION [0] = “/更新” MAKE [0] =“'make'KVER = $ kernelver” 自动安装=“是”
关于这个的困难部分是知道在$MAKE引用'make' ,因为如果它没有被引用,DKMS将追加KERNELRELEASE=...来make ,并打破这个特定的构build系统。
我能够在挤压chroot的情况下完成所有build筑,运行dkms mkdeb ,然后在Mini上安装最终的deb包。
检查出DKMS 。 它可以在内核升级时重新编译内核模块。 例如nvidia使用这个。