Kernel

如何測試修改後的 FreeBSD 原始碼?

  • April 19, 2015

我正在嘗試通過創建一個名為的源文件(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為其他名稱以保存它,將您的新文件複製到那裡並重新編譯。

引用自:https://unix.stackexchange.com/questions/197116