Linux
如何只編譯 Linux Kernel 的 net/ipv4?
最初,我的方法是從頭開始重新編譯整個核心,但當我發現它需要大量磁碟空間時,所有的希望都落空了。
現在,我試圖弄清楚如何只編譯它的一部分。
我修改的文件是net/ipv4/tcp_ipv4.c
然後我按照以下步驟但在中間迷路了,
Downloaded kernel source files to /home/linux ran cp /boot/config-$(uname -r) .config make oldconfig make scripts prepare modules_prepare apt-get install linux-headers-$(uname -r) make -C . M=net/ipv4 make net/ipv4/tcp_ipv4.c
我不知道下一步該做什麼,因為在 Stackoverflow 上找到的答案是關於建構定制模組的描述。
在 Stackoverflow (LINK)上找到的答案描述了它無法完成,並且只能編譯整個核心。
“這做不到。只需編譯整個核心。第一次編譯後,make 將確保只重新編譯更改的文件,這樣以後的建構會很快。”
我曾考慮使用 Google Drive 作為 HDD 進行完整編譯,但看起來也缺乏這樣做的選項。
我的最後一個選擇是調整整個伺服器的大小。
編輯:
我通過 CD 進入 /net/ipv4 目錄並嘗試了
製作 -C /lib/modules/ $ (uname -r)/build M= $ (密碼)modules_install
它輸出
Building modules, stage 2. MODPOST 61 modules FATAL: parse error in symbol dump file make[1]: *** [scripts/Makefile.modpost:94: __modpost] Error 1 make: *** [Makefile:1632: modules] Error 2 make: Leaving directory '/usr/src/linux-headers-5.4.0-26-generic'
如果您查看
net/ipv4/Makefile
,您會看到它tcp_ipv4.o
是 的一部分obj-y
,這意味著它只能作為核心的一部分建構,而不能作為模組建構。如果您希望將您的更改考慮在內,則必須重建完整的核心。由於磁碟空間不足,您只能建構核心,安裝它,然後清理建構樹並建構模組,然後安裝它們;這將需要更少的磁碟空間。