最初,我的方法是从头开始重新编译整个内核,但是当我发现它需要大量的磁盘空间时,所有的希望都破灭了。
现在,我正在努力弄清楚如何只编译其中的一部分。
我修改的文件是net/ipv4 4/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 (链接)上的一个答案描述了它无法完成,并且只能编译整个内核。
“这是不可能的。只需编译整个内核。在第一次编译之后,make将确保只重新编译修改过的文件,这样以后的构建就会很快。”
我曾考虑过使用Google作为HDD进行完整编译,但似乎缺乏这样做的选择。
我的最后一个选择是调整整个服务器的大小。
编辑:
我通过CD输入/net/ipv4 4dir并尝试
使-C /lib/modules/$(uname -r)/build M=$(pwd) 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'发布于 2020-06-28 15:30:26
如果您查看net/ipv4/Makefile,您会发现tcp_ipv4.o是obj-y的一部分,这意味着它只能作为内核的一部分构建,而不能作为模块构建。
如果您希望将您的更改考虑在内,则必须重新构建完整的内核。由于您缺少磁盘空间,所以您只能构建内核,安装它,然后清理构建树并构建模块,并安装它们;这将需要更少的磁盘空间。
https://unix.stackexchange.com/questions/595477
复制相似问题