linux内核中单独module的编译和使用

以kvm为例

编译

当前系统内核版本: 5.3.8

当前系统内核版本对应的源代码目录: ~/下载/linux-5.3.8/

当前系统内核版本对应的源代码目录中kvm module源码的位置: ~/下载/linux-5.3.8/arch/x86/kvm/

当前系统存放module文件的位置: /lib/modules/5.3.8/kernel/arch/x86/kvm/

  1. 为了检验新编译出的kvm模块是否起作用,向kvm module源码目录下的vmx/vmx.c源码的vmx_init()函数中加入以下printk语句并保存
printk(KERN_ALERT "Start KVM by haiyonghao,HAHHA\n");
  1. 清除前一次的编译结果
make clean CONFIG_KVM=m CONFIG_INTEL_KVM=m -C ~/下载/linux-5.3.8/ M=~/下载/linux-5.3.8/arch/x86/kvm/
  1. 编译kvm
make CONFIG_KVM=m CONFIG_INTEL_KVM=m -C ~/下载/linux-5.3.8/ M=~/下载/linux-5.3.8/arch/x86/kvm/

编译完成之后在kvm源代码目录得到了kvm.ko和kvm-intel.ko,以及用于amd芯片的kvm-amd.

启用新模块并测试

  1. 将编译生成的kvm.ko和kvm_intel.ko拷贝到当前系统存放module文件的位置
sudo cp ~/下载/linux-5.3.8/arch/x86/kvm/{kvm.ko,kvm-intel.ko} /lib/modules/5.3.8/kernel/arch/x86/kvm/
  1. 查看当前系统中是否包含kvm module,如果有则卸载

该卸载不会删除第1步拷贝过去的文件,只会从内核上卸载模块

# 查看是否包含kvm模块 lsmod | grep kvm # 如果有, 则卸载模块(由于kvm-intel依赖kvm,因此先卸载kvm-intel后卸载kvm) sudo rmmod kvm-intel sudo rmmod kvm
  1. 加载新编译的模块
sudo modprobe kvm sudo modprobe kvm-intel
  1. 查看内核消息日志中是否有我们打印出的信息
dmesg

__EOF__

本文作者EwanHai
本文链接https://www.cnblogs.com/haiyonghao/p/14440240.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   EwanHai  阅读(1364)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示