type
status
slug
summary
tags
category
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM

1 修改VM下的驱动

我的 Linux 开发环境是基于 virtualbox 配置的,所以进行第一次的驱动修改测试也是针对 VM 下的驱动。
所有 VM 映像中包含的一个驱动程序是 e1000 驱动程序,即 Intel 以太网驱动程序。如果您本机运行 Linux,则需要寻找不同的驱动程序。有关如何找到合适的驱动程序的信息,请参阅下一个驱动程序部分。
e1000 驱动程序位于内核的网络部分:
让我们对 e1000 驱动程序的探测功能做一个小改动。加载驱动程序时调用探测函数。让我们编辑 e1000_main.c 文件:
接下来,找到探测功能。您可以通过在标准模式下键入“/”来搜索文本。找到 probe 函数后,向其添加一行 printk
然后键入 :wq<enter> 保存文件并退出。
printk 函数导致将消息写入内核日志缓冲区,然后可以使用 dmesg 命令查看该消息。

2 编译更改

通过运行 make(使用可选的 -jN 标志)重新编译您的内核:
您可能需要修复一些编译错误。还要修复由于您的更改而产生的任何新警告。在 Linux 内核中,开发者们努力确保驱动程序不会在任何系统(包括 32 位和 64 位系统,以及不同的体系结构,例如 PPC、ARM 或 x86)上产生警告。可能不会合并会产生额外警告的新功能或错误修复补丁。

3 安装更改后的内核

编译驱动程序后,您需要通过运行以下命令来安装更改:
💡
如果你还没有配置好 Linux 内核开发环境,可以参考下面的链接。

4 测试更改

由于您已经编译了一个全新的内核,您需要重新启动到那个新内核以测试您的模块更改。重新启动您的 VM(或计算机),然后运行:
通过键入“/I can modify” 在日志文件中搜索您的 printk。您应该能够在引导期间的驱动程序输出中找到此消息。
例如下面的输出:
notion image

5 参考资料

Linux 内核编译错误(make: *** [Makefile:1161: vmlinux] Error 137)Grafana + Prometheus = 炫酷家庭服务监控中心