2013-02-10 142 views
1

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

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

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

谢谢.. :)

+5

别担心。它只需要很长时间一次。如果您修改一个源文件并重新编译,则只会编译该文件。这就是'make'的奇迹。 – 2013-02-10 16:59:30

+3

我建议您使用虚拟机进行测试,至少在第一次迭代中:Qemu可以直接启动内核。启动起来更快,更容易,并且当你破坏事物时,你不会冒着自己的机器冒险。因为你_will_会破坏一些东西...... – rodrigo 2013-02-10 17:50:01

回答

2

你需要构建内核它,直到结束时,如果你想要启动它。但是,在代码稍作修改后,第二次应该会更快,只需要重建内核的一部分。

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

+0

我把grub2设置好了(我还没有创建grub.cfg,只是用ext4格式化了USB驱动器,并用'grub-install'在它上面安装了grub2。 – 2013-02-10 18:10:53

5

你提到你想学习Linux内核编程,所以我想我对你有更好的建议,因为你对所有这些都是陌生的。

为什么不让初学者尝试像引入非常简单的驱动程序或使用netfilter(几乎可以控制整个TCP/IP使用这个)的小内核编程,而无需编译内核?

Kernel modules是你的朋友:)
他们是一段简单的代码,编译分别然后问运行内核(使用insmod Linux命令)这个代码附加到正在运行的内核,有你走!你有自己的代码在内核空间中运行。

我知道这并不能完全回答你的问题,但我真的认为像这样开始对你更容易,可能更有用;一旦你对这里可以找到的许多东西更加熟悉,试着继续修改现有的内核代码。

为了让你知道你可以用内核模块做什么:
-Drivers
-Adding一个新的功能到内核
-I've亲自与netfilter的(在一组功能和钩子用它内核)修改处理网络流量
- 你也可以修补你的内核(修改源代码,编译,运行整个事情),然后使用内核模块编辑一些通常需要重新编译的东西,比如编辑系统调用;虽然这种方法不建议,但它可以提高你的测试时间,每次你想做一个测试,你不必编译和重新启动。
-...更多..

让我知道如果我在某个时候感到困惑。