如何测试修改后的FreeBSD源代码?

如何测试修改后的FreeBSD源代码?

我试图通过创建名为的源文件(cc_newreno.c位于/usr/src/sys/netinet/cc)的副本cc_newreno_mod.c并对其进行更改来修改 FreeBSD (NewReno) 中的默认拥塞控制算法。

假设我做了一些修改。我如何测试它们?直接编译cc_newreno_mod.c(使用内置的 C 编译器)会导致多个错误,其中一些错误看起来很奇怪(例如netinet/cc/cc_module.h file not found,尽管文件显然在那里)。

我应该构建一个新内核吗?更改后的文件中的模块会自动创建吗?或者我完全错了,我应该采取不同的方法?

答案1

为了编译内核模块,您应该创建Makefile并包含内核模块 makefile,/usr/src/share/mk/bsd.kmod.mk例如:

# Note: It is important to make sure you include the <bsd.kmod.mk>  makefile after declaring the KMOD and SRCS variables.

# Declare Name of kernel module
KMOD    =  module

# Enumerate Source files for kernel module

SRCS    =  module.c

# Include kernel module makefile
.include <bsd.kmod.mk>

最后运行 make 来编译它,这样您就可以测试它是否正确编译。
由于它没有出现在内核模块 ( /boot/kernel/*.ko) 中,但它列在sys/conf/files我认为您应该重新编译内核以应用更改。欲了解更多信息,你可以看到这个。由于它是副本,因此cc_newreno.c您可以将原始副本重命名/usr/src/sys/netinet/cc/cc_newreno.c为其他名称以保存它,将新副本复制到那里并重新编译。

答案2

netinet 目前不是内核模块,因此我建议将修改后的文件添加到 sys/conf/files 中。

相关内容