【问题标题】:How to modify the kvm module in linux kernel?如何修改linux内核中的kvm模块?
【发布时间】:2014-04-25 22:59:13
【问题描述】:

我想对我的 Linux 内核中的 kvm 模块进行一些修改。为此,我做了以下工作:

  1. 获得内核源:
    apt-get source linux-image-source-$(uname-r)
  2. 修改了文件 emulate.c 中的函数 - 更改了一些变量并添加了 printk 语句。
  3. 编译内核:
    fakeroot debian/rules clean
    fakeroot debian/rules binary-headers binary generic
  4. 安装了由于构建而产生的包:
    sudo dpkg -i linux*(version)*.deb
  5. 重新启动系统。
  6. 在启用kvm 的情况下执行QEMU

但是,当我尝试在 QEMU 中测试它们时,我所做的更改似乎并没有反映出来。当我检查dmesg 时,printk 语句也没有执行。

谁能指出我错了哪一部分?

【问题讨论】:

  • 你想改变什么?请记住,emulate.c 仅用于某些特殊情况;大多数指令由 CPU 直接执行。
  • 我想更改 QEMU VM 的 RDTSC 指令的实现。这就是我为什么要通过安装在 QEMU 上的访客操作系统来测试它的原因。

标签: linux linux-kernel kernel-module qemu kvm


【解决方案1】:

安装新内核不一定会启动它,您可能需要更改引导加载程序中的默认值。 (例如 grub)

您可以检查您刚刚编译和安装的内核是否与您启动时使用的相同:

cat /proc/version

如果这不符合预期,那么您需要调整 Grub 配置和/或重新启动并手动选择正确的内核。

建立正确的内核后,您可能需要更改内核报告消息的级别(通过 dmesg)

这是由内核 proc 文件控制的。您可以通过打印此文件来查看当前值:

cat /proc/sys/kernel/printk

示例输出:

4 4 1 7

第一个参数 - 严重性

因此以下内容将更改日志,以便看到所有内核消息:

echo 8 > /proc/sys/kernel/printk

请参阅(例如)http://www.makelinux.net/books/lkd2/ch18lev1sec3 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 2013-12-17
    • 2012-02-22
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多