【问题标题】:Testing Linux kernel quickly快速测试 Linux 内核
【发布时间】:2013-01-25 20:07:44
【问题描述】:

我想学习 linux 内核编程,所以我从 www.kernel.org 下载了 Linux kernel 3.7.6 源代码。但是在编辑任何东西之前,我尝试使用在线教程对其进行编译。

make 编译需要很长时间,我还没有完全编译。有什么快速的方法可以更改源代码并进行测试吗?因为我读过内核编译大约需要一个小时。

另外,是否可以在 USB 驱动器上复制和测试修改后的内核? 是否可以在 USB 驱动器上安装 GRUB,在 USB 上复制内核,在 USB 上配置 GRUB 然后运行它?如果是这样,请给我任何具有相同步骤的资源。我的笔记本电脑上也安装了 GRUB。如何在 USB 上设置新的 GRUB 而不会干扰笔记本电脑上的配置?

谢谢.. :)

【问题讨论】:

  • 别担心。一次只需要很长时间。如果您修改一个源文件并重新编译,则只会编译该文件。这就是make的奇迹。
  • 我建议您使用虚拟机进行测试,至少在第一次迭代中:Qemu 可以直接启动内核。它启动起来更快、更容易,而且当你破坏东西时,你不会拿自己的机器冒险。因为你破坏一些东西......

标签: linux kernel grub


【解决方案1】:

如果你想启动它,你需要将它构建到最后。但是,在代码中只进行小的更改后,第二次应该会更快,只需要重建内核的一部分。

通过向grub.cfg(对于grub2)添加新条目,很容易拥有多个引导选项(使用不同的内核)。但是,我不能在这里重复多页文档。

【讨论】:

  • 我设置了 grub2(我还没有创建 grub.cfg。刚刚用 ext4 格式化了 USB 驱动器并使用 grub-install 在其上安装了 grub2。
【解决方案2】:

你提到你想学习 Linux 内核编程,所以我想我有一个更好的建议给你,因为你是新手。

你为什么不首先尝试做一些内核编程,比如引入非常简单的驱动程序或与 netfilter 相关的东西(你几乎可以使用它来控制整个 TCP/IP),甚至不需要编译内核?

Kernel modules 是你的朋友 :)
它们是一段简单的代码,您单独编译然后要求运行内核(使用insmod Linux 命令)将此代码附加到正在运行的内核并在那里你走!您有自己的代码在内核空间中运行。

我确实意识到这并不能完全回答您的问题,但我真的认为这样开始对您来说更容易,并且可能更有用;一旦您对可以在此处找到的许多内容更加熟悉,请尝试继续实际修改现有的内核代码。

让您知道可以使用内核模块做什么:
-驱动程序
- 向内核添加新功能
-我个人将它与 netfilter(内核中的一组函数和钩子)一起使用来修改处理网络流量
- 你也可以修补你的内核(修改源代码,编译,运行整个东西)然后使用内核模块来编辑一些通常需要重新编译的东西,比如编辑系统调用;虽然不推荐使用这种方法,但它可以延长您的测试时间,每次您想要进行测试时都无需编译和重新启动。
- 更多..

如果我在某些时候感到困惑,请告诉我。

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 2015-12-31
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2015-07-19
    • 2016-05-01
    • 2012-09-23
    相关资源
    最近更新 更多