《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区
来源:互联网 发布:name.com 域名转出 编辑:程序博客网 时间:2024/06/05 18:57
linux最吸引我的地方之一就是它拥有一个高手云集的社区, 还有就是如果能=为linux内核中贡献代码, 一定是一件令人自豪的事情.
下面主要总结一些和贡献代码相关的主要内容.
- 加入社区
- 编码风格
- 提交补丁
- 总结
1. 加入社区
如果想为linux贡献代码, 那么加入linux社区是必须的, 加入了社区, 不仅可以及时内核的最新消息, 而且可以及时和社区内有经验的内核开发者交流经验.
同时也是提交代码和讨论代码的地方, 了解社区的规则, 融入社区环境之中, 才能更好的学习内核, 体会内核开发的乐趣和成就感.
内核社区说白了就是内核邮件列表(LKML linux kernel mail list)
订阅邮件列表的网址: http://vger.kernel.org/vger-lists.html 这里面有linux相关的各种邮件列表
关于内核的邮件列表是: http://vger.kernel.org/vger-lists.html#linux-kernel
除了邮件列表之外, 还有2个本书作者推荐的网站也适合linux内核新手去关注:
- http://kernelnewbies.org 有很多适合内核开发入门的资源
- http://lwn.net linux 新闻周刊
2. 编码风格
社区给我们提供了学习和贡献内核的地方, 但是为了避免不必要的麻烦(被别人指责或者无人理睬), 首先得好好了解一些内核代码的编码风格.
linux的编码风格都记录在 Documentation/CodingStyle 内核开发前要好好研读以下, 之后有时间我会整理到博客中.
3. 提交补丁
准备工作都完成之后, 就可以开始内核开发之旅了 :)
只要坚持不断的学习和尝试, 总有一天会为了内核贡献自己的代码, 这时候, 就需要了解如何提交代码, 也就是内核补丁.
如果是发现了BUG或者有改善, 可以将BUG的描述或者改善代码发送给对应的维护者.(内核各个子系统的维护者信息在内核代码根目录下的 MAINTAINERS 文件中)
生成BUG或者改善代码的补丁有2种方法:
1. 用diff命令创建补丁
# 生成patchdiff -urN linux-old/ linux-new/ > my-patch # 比对整个内核代码文件夹ORdiff -u linux-old/some/file linux-new/some/file > my-patch # 比对某个文件# 应用patch, 应用了patch之后, linux-old 和 linux-new 中的代码就一样了cd linux-oldpatch -p1 < ../my-patch # 这个命令是进入linux内核代码根目录内执行的# PS. 还有个很有用的工具 diffstatdiffstat -p1 my-patch # 列出补丁所引起的变更的统计(加入或移去的代码行)
2. 用git命令创建补丁
# 提交修改的或新增的代码git commit -a # 提交所有修改的代码ORgit commit linux-src/some/file.c # 提交某个修改的代码ORgit add linux-src/some/new-file.c # 把新增的文件加入版本库git commit -a # 提交新增的文件# 生成patchgit format-patch -N # N 是正整数, 这条命令生成最后N次提交产生的补丁ORgit format-patch -1 # 最后1次提交产生的补丁# 应用patch: 和第一种方法一样
4. 总结
本章的内容都是和提交内核patch有关, 我还是内核的入门者, 没有社区的经验, 更别说提交内核patch的经验了.
这篇笔记只是简单记录一些对入门者有用的信息, 便于以后查看.
- 《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区
- 《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区
- 《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区
- 《Linux内核设计与实现》——补丁、开发和社区
- Linux内核设计与实现 学习笔记(10)补丁,开发和社区
- 《linux内核设计与实现》Chapter20补丁、风格、社区(笔记)
- 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备
- 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备
- 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备
- <<Linux内核设计与实现>>读书笔记(二)-内核开发的准备
- 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备
- 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备
- 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备
- 读书笔记--《LINUX内核设计与实现》(二)
- 《Linux内核设计与实现》读书笔记(二)--进程调度
- 《Linux内核设计与实现》读书笔记(十)- 内核同步方法
- 《Linux内核设计与实现》读书笔记(十)- 内核同步方法
- 《Linux内核设计与实现》读书笔记(十)- 内核同步方法
- 《Linux内核设计与实现》读书笔记(十七)- 设备与模块
- 《Linux内核设计与实现》读书笔记(十八)- 内核调试
- 《Linux内核设计与实现》读书笔记(十九)- 可移植性
- C语言魔王语言解释
- template template parameter模板模板参数笔记----C++学习之路
- 《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区
- 编译原理实验-FLEX+BISON+DEV C++完美解决方案
- MongoDB备份的两种方法
- Refactoring
- GCC如何编译内嵌汇编代码
- 排序二叉树应用 2
- 简单的C语言猜数游戏
- alpine踩坑
- Android中AOP实践之三AspectJ解析篇