首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内核补丁

Linux内核补丁
EN

Unix & Linux用户
提问于 2019-03-18 09:46:12
回答 2查看 328关注 0票数 -1

我正在阅读Peter的"Linux内核模块编程“,在那本书中他们说。

sys_call_table不再在2.6.x内核中导出。如果您真的想尝试这个危险的模块,您必须对当前内核应用所提供的修补程序并重新编译它。

谁能向我解释“补丁”的含义,以及重新编译内核意味着什么?

EN

回答 2

Unix & Linux用户

发布于 2019-03-18 19:18:02

“修补程序”是描述对另一个文件的更改的文件(该文件可以是任何内容,包括源代码)。创建和使用修补程序的最简单方法之一是使用diffpatch

假设我们在一个名为hello1.c的文件中有一个简单的hello world程序:

代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
  printf("Hello world!\n");
  return 0;
}

现在,让我们将字符串"Hello world!\n"更改为"Hi world!\n",并调用新程序hello2.c

代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
  printf("Hi world!\n");
  return 0;
}

现在,在终端中运行以下命令:

代码语言:javascript
复制
diff -u hello1.c hello2.c > hello-patch

使用cat hello-patch输出修补程序文件的内容如下:

代码语言:javascript
复制
--- hello1.c    2019-03-18 13:29:35.897546888 -0500
+++ hello2.c    2019-03-18 13:30:02.866456737 -0500
@@ -2,6 +2,6 @@

 int main(void)
 {
-  printf("Hello world!\n");
+  printf("Hi world!\n");
   return 0;
 }

此文件指示hello1.chello2.c之间的更改。

现在假设您已经向您的朋友分发了hello1.c的源代码。此hello-patch修补程序文件允许您的朋友使用修补程序命令将hello1.c转换为hello2.c。如果hello1.c和修补程序位于同一个目录中,则此命令如下:

代码语言:javascript
复制
patch < hello-patch

这将“将修补程序应用于hello1.c”。当它完成后,hello1.c将被更新,现在它与hello2.c完全相同。

因此,补丁只是文件(或一组文件)更改的列表,这些补丁允许某人通过应用补丁来有选择地更新文件。

diffpatch命令适用于小型补丁程序。任何大而复杂的东西都需要一个工业力量工具。Linux使用gitgit帮助系统非常好。例如,git help -a列出了所有git帮助主题,git help format-patch详细介绍了如何“为电子邮件提交准备修补程序”。

Linux开发是通过电子邮件进行的,您可以查看lkml.org的linux开发人员发送的电子邮件的存档,而kernelnewbies.org是学习Linux内核开发的一个很好的起点。请注意,因为它看起来像你引用的书是在2009年出版的,它包含的一些技术细节将过时。

在本例中,“重新编译”仅意味着在将修补程序应用于源之后再次编译。这就像在运行类似gcc hello1.c -o hello的程序将源文件编译成可执行代码时一样。本指南描述构建Linux。本文描述了一个构建过程,其中包含了一些可以在Debian发行版上使用的步骤.

这篇由Linux开发人员Greg Kroah在2016年的演讲中概述了Linux开发的情况。

票数 7
EN

Unix & Linux用户

发布于 2019-03-19 11:37:29

如果您不知道什么是“重新编译内核”和“应用补丁”,那么您应该阅读其他涉及更基本主题的Linux /Unix相关书籍,而不是花时间从一本专门针对Linux内核开发的书(如Peter Jay Salzman的"Linux内核模块编程“)中获取知识。

我建议您阅读以下书籍(如果这篇文章看起来像AD),让您了解如何操作类似Unix的操作系统:

  • UNIX和Linux系统管理手册,第4版,Evi Nemeth (作者),Garth Snyder (作者),Trent R. Hein (作者),Ben Whaley (作者)
  • Linux是如何工作的:布赖恩·沃德让每个超级用户都应该知道什么?
  • 大教堂和集市:对Linux和开源的思考--埃里克·雷蒙德的“偶然革命”
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/506951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档