扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:赛迪网技术社区 来源:赛迪网技术社区 2007年11月2日
关键字: Linux
2.3.3 备份的重要性
当修改(fooling)内核时,你必须准备一个能够启动的备用内核。实现该目的的一种方式是通过配置Linux加载程序(LILO)以允许用户选择启动的内核映象,其中之一是从没有修改过的内核的备份(我总是这样做的)。
如果你比较有耐心,那么你就可以使用zdisk目标而不使用zlilo目标;它可以把能够启动的内核映象写入软盘中。这样你就可以通过在启动时插入软盘的方式启动你的测试内核;如果没有插入软盘,则启动正常的内核。
但是请注意:内核模块并没有被装载到软盘中,它们实际上是装在硬盘中的(除非你愿意承担更多的麻烦)。因此,如果你弄乱了内核模块,即使是zdisk目标也救不了你。实际上,上面提到的这两种方法都存在这个问题。虽然有比较好的解决方法可用,但是最简单的方法(也就是我所使用的方法)是把备份内核作为严格独立的内核来编译,而不使用可装载模块的支持。通过这种方法,即使我弄乱了内核而不得不使用备份启动系统,那么不管问题是实验性内核不正确还是内核模块的原因都无关紧要。不管怎样,在备份的内核中已经有我需要的所有东西了。
由于用户所做的修改可能导致系统的崩溃,如损坏磁盘上的数据等等,并不仅仅只是打乱设备驱动程序或文件系统,在测试新内核之前,备份系统的最新数据也是一个英明的决策(虽然设备驱动程序的开发不是本书的主题,但是必需指出的是,设备驱动程序的缺陷可能会引起系统的物理损坏。例如显示器是不能备份的,而且因价格昂贵而不易替换)。作为一个潜在的内核黑客,你的最佳投资(当然是读过本书以后)是一个磁带驱动器和充足的磁带。
2.3.4 发布你的改进
下面是有关发布你所做修改的一些基本规则:
* 检查最新发行版本,确保你所处理的不是已经解决了的问题。
* 遵守Linux 内核代码编写的风格。简要的说就是8字符缩进以及K&R括号风格(if,else,for,while,switch或者do后面同一行中紧跟着开括号)。在内核源程序目录下面的文档编写和代码风格文件给出了完整的规则,不过我们已经介绍了其中的关键部分。注意本书中包含的源程序代码为节省空间而进行了大量的重新编辑,在该过程中我可能打破了其中的一些规则。
* 独立发行相对无关的修改。这样,只想使用你所做的某部分修改的人就可以十分方便地获得想要的东西,而不用一次检验所有的修改内容。
* 让使用你所做修改的用户清楚他们可以从你的修改中获取什么。同样,你也应该给出这些问题的可信度。你是15min之前才匆匆完成你的修改,甚至还没有时间对它们进行编译,还是已经在你和你的朋友的系统中已长期稳定地运行过这个修改?
假设现在你已经准备好发行自己的修改版本了,那么要做的第一步是建立一个说明你所做的修改的文件。你可以使用diff程序自动创建这个文件。结果或者被称为diffs,或者在Linux中更普遍的被称为补丁(patch)。
发布的过程十分简单。假设原来没有修改过的源程序代码在linux-2.2.5目录下,而你修改过的源程序代码在linux-my目录下,那么只要进行如下的简单工作就可以了(只有在链接不存在的情况下才需要执行ln):
现在,输出文件my.patch包含了其他用户应用这个修改程序时所需要的一切内容。(警告:如上所述,两个源程序间的所有差别都会包含在这个补丁文件中。diff不能区分修改部分之间的关系,所以就把它们都罗列了出来。)如果补丁文件相对较小,你可以使用邮件直接发往内核邮件列表。如果补丁很大,那么就需要通过FTP或者Web站点发布。这时发给邮件列表的信件中就只需要包含一个URL。
Linux内核邮件列表的常见问题解答(FAQ)文件位于http://www.ececs.uc.edu/~rreilova/ linux/lkmlfaq.html。该FAQ中包含了邮件列表的订阅、邮件发布及阅读邮件列表的注意事项等等。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者