我正在修改内核源代码(/linux/net/mac80211/mesh_hwmp.c)以向路由帧添加一些签名身份验证。修改源代码后,是否必须再次构建和安装内核才能使更改生效?
以下是我遵循的步骤:
从git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
下载后,在无线测试中复制/ boot目录中的当前配置$ cp /boot/config- `uname-r` ./.config
跑make menuconfig
并选择以下功能:
网络 - >无线 - >通用IEEE 802.11网络堆栈(mac80211)
使用fakeroot make-kpkg - initrd kernel_image kernel_headers
构建内核后,使用该命令安装创建的.deb软件包(核心及其标头)
$ sudo dpkg-i linux-*.deb
重新启动系统
如果我必须对代码所做的每一项更改(/net/mac80211/mesh_hwmp.c)进行此操作,这是一个耗时的过程。我不确定我是否因为再次构建内核而过度使用。如果我只是在mac80211目录中运行Makefile就足够了吗?或者,无论如何,我都必须经历这个过程。
答案 0 :(得分:0)
当前配置来自/boot
发行版默认配置吗?如果是这样,它可能包含数百或数千个您永远不需要的模块。做一次,安装并启动内核。然后,确保加载您感兴趣的模块(例如启用wifi,插入USB设备)并在内核源代码树中运行make localmodconfig
(有关详细信息,请参阅make help
)。根据需要启用更多配置,并将其用于开发。
您可能还会发现sudo make INSTALL_MOD_STRIP=1 modules_install install
会在许多发行版上做正确的事情来安装内核,并且您将避免与创建程序包相关的任何问题,从而强制重建。缺点是您必须手动删除/boot
中的旧内核,配置,initr和来自/lib/modules
的模块。