Kernel
如何測試修改後的 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
,儘管文件顯然在那裡)。我應該建立一個新的核心嗎?更改文件中的模組會自動創建嗎?還是我完全錯了,我應該採取不同的方法?
對於編譯核心模組,您應該創建
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
為其他名稱以保存它,將您的新文件複製到那裡並重新編譯。