我正在使用Linux内核中的协议修改项目。
每次我编辑源代码中的一个单词时,我都需要制作,编译和加载所有模块并重新启动系统以检查修改需要超过10分钟。
有没有办法将修改后的代码添加到特定的内核模块而不重新编译整个内核和/或不重新启动?
我用来重新编译整个内核的代码是
make
make modules_install
make install
reboot
更新:使用@ askb的回答
我尝试了@ askb的答案并收到以下错误。
[@ 3.16.1]# make scripts && make prepare
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
[@ 3.16.1]# make ./net/sctp/
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
CC [M] net/sctp/output.o
LD [M] net/sctp/sctp.o
LD [M] net/sctp/sctp_probe.o
[@ 3.16.1]# cd ./net/sctp/
[@ sctp]# insmod sctp
insmod: ERROR: could not load module sctp: No such file or directory
答案 0 :(得分:1)
首先,如果只有一个需要修改的模块,则不需要重建完整的内核代码库。您需要做的就是准备内核kconfig和makefile脚本一次,构建内核模块并加载和卸载它,执行以下步骤。
make menuconfig
make scripts && make prepare
make ./path/to/module/dir
cd ./path/to/module/dir
insmod <module name>
rmmod <module name>
答案 1 :(得分:0)
您可以使用某些IDE,例如Eclipse。因此,您不必每次都构建整个项目并根据需要修改make文件。
因此,您只需要重新启动物理/虚拟机。