2

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

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

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

谢谢.. :)

4

2 回答 2

6

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

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

内核模块是您的朋友 :)
它们是一段简单的代码,您可以单独编译,然后要求正在运行的内核(使用insmodLinux 命令)将此代码附加到正在运行的内核,然后就可以了!您有自己的代码在内核空间中运行。

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

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



让我知道我是否在某些时候感到困惑。

于 2013-02-10T17:33:29.663 回答
2

如果要引导它,则需要将内核构建到最后。然而,在只对代码进行少量更改后,第二次应该会更快,只需要重建内核的一部分。

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

于 2013-02-10T17:05:44.943 回答