我正在尝试了解 USB Wi-Fi 适配器的现有 Linux Wi-Fi 驱动程序。虽然我可以阅读 C 代码,但我还希望能够在驱动程序的某些关键位置插入调试/打印语句,以查看它在执行时的行为。在 Linux 系统上,修改驱动程序代码后,如何将其加载到内核中以替换旧驱动程序?有没有办法直接在旧驱动程序上“热插拔替代”它,还是比这更复杂?
我打算在一个消耗性虚拟机中执行此操作,所以我不担心会弄乱原始驱动程序,因为它很重要。
如果驱动程序被编译为模块,您需要做的就是添加调试打印输出,编译模块、rmmod
原始模块、insmod
新模块并像往常一样启动 WLAN 连接。
如果您想即时测试和编辑:
lsmod
查找模块名称rmmod
它obj-m := module_name.o
make -C /usr/src/linux-headers-'uname -r' M='pwd' modules
insmod module_name.ko
如果它是一个设备模块,您可能想要 rm /dev 中的任何设备,然后mknod
重新制作它们(参见 mknod man),最后chmod
更正权限。