![重建内核模块(驱动程序)并进行调试](https://linux22.com/image/1162624/%E9%87%8D%E5%BB%BA%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%EF%BC%88%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%89%E5%B9%B6%E8%BF%9B%E8%A1%8C%E8%B0%83%E8%AF%95.png)
过去一天,我一直在尝试重建启用了调试功能的 iwlwifi 模块。重建方法是使用 .config 参数 CONFIG_IWLWIFI_DEBUG=y 进行构建。如果我要构建新内核,这将很容易,但我想继续使用已安装的 ubuntu 内核。目前,我并不关心安装模块。我只想查看 .ko 文件的构建情况,对其进行 insmod 操作,并检查 /sys/modules/iwlwifi/parameters/debug,如果模块是为调试而构建的,则该文件应该存在。ubuntu 官方的执行方法是什么?
到目前为止,这就是我正在做的事情:
我的内核是 4.15.0-43-generic,头文件已经安装在 /usr/src/linux-headers-4.15.0-43-generic
使用 apt-get 安装 /usr/src/linux-source-4.15.0 并将其解压到 ~/
在 ~/linux-4.15.0/.config 和 /usr/src/linux-headers-4.15.0-43-generic/.config 中设置 CONFIG_IWLWIFI_DEBUG=y 因为我不确定会使用哪一个。
在 ~/linux-4.15.0/drivers/net/.../iwlwifi 中,我运行 make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
ko 模块已构建,但它们不支持调试
答案1
事实证明我需要在 headers 目录中运行 make 脚本。它失败退出,但我猜它会先对构建参数执行所需的操作。