我已经在 Ubuntu 上重新编译了 Linux 内核,现在升级到 4.17.6。我需要修改 TCP/IP 堆栈部分,特别是拥塞控制算法之一(例如 Vegas)。成功重新编译到4.17.6后,我尝试修改代码,只重新编译相关模块但在dmesg上看不到任何消息。我按照以下步骤测试 printk 和 pr_debug 是否有效,但没有一个有效。
我在修改后的文件上添加了#define DEBUG,然后将以下行添加到所需的函数 net/ipv4/ip_input.c 和 net/ipv4/ip_output.c 中:
printk(KERN_DEBUG "test:");
printk("test:");
pr_debug("test:");
我运行了以下命令:
sudo make -j8 net
sudo make -j8 M=net
sudo make -j8 modules SUBDIRS=net
sudo make -j8 modules_install SUBDIRS=net
sudo reboot
重新启动后,我通过执行 echo 8 | 修改了 printk 文件以显示所有消息级别。sudo dd of=/proc/sys/kernel/printk. 然后尝试从 VM ping 到 VM 并尝试打开网页。然后,尝试通过运行 dmesg | 查看消息 grep 测试:
但是没有显示任何消息,问题出在哪里?