《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区
linux最吸引我的地方之一就是它擁有一個高手云集的社區(qū), 還有就是如果能=為linux內(nèi)核中貢獻代碼, 一定是一件令人自豪的事情.
下面主要總結(jié)一些和貢獻代碼相關(guān)的主要內(nèi)容.
- 加入社區(qū)
- 編碼風格
- 提交補丁
- 總結(jié)
?
1. 加入社區(qū)
如果想為linux貢獻代碼, 那么加入linux社區(qū)是必須的, 加入了社區(qū), 不僅可以及時內(nèi)核的最新消息, 而且可以及時和社區(qū)內(nèi)有經(jīng)驗的內(nèi)核開發(fā)者交流經(jīng)驗.
同時也是提交代碼和討論代碼的地方, 了解社區(qū)的規(guī)則, 融入社區(qū)環(huán)境之中, 才能更好的學習內(nèi)核, 體會內(nèi)核開發(fā)的樂趣和成就感.
?
內(nèi)核社區(qū)說白了就是內(nèi)核郵件列表(LKML linux kernel mail list)
訂閱郵件列表的網(wǎng)址: http://vger.kernel.org/vger-lists.html 這里面有l(wèi)inux相關(guān)的各種郵件列表
關(guān)于內(nèi)核的郵件列表是:? http://vger.kernel.org/vger-lists.html#linux-kernel
?
除了郵件列表之外, 還有2個本書作者推薦的網(wǎng)站也適合linux內(nèi)核新手去關(guān)注:
?
2. 編碼風格
社區(qū)給我們提供了學習和貢獻內(nèi)核的地方, 但是為了避免不必要的麻煩(被別人指責或者無人理睬), 首先得好好了解一些內(nèi)核代碼的編碼風格.
linux的編碼風格都記錄在 Documentation/CodingStyle 內(nèi)核開發(fā)前要好好研讀以下, 之后有時間我會整理到博客中.
?
3. 提交補丁
準備工作都完成之后, 就可以開始內(nèi)核開發(fā)之旅了 :)
只要堅持不斷的學習和嘗試, 總有一天會為了內(nèi)核貢獻自己的代碼, 這時候, 就需要了解如何提交代碼, 也就是內(nèi)核補丁.
?
如果是發(fā)現(xiàn)了BUG或者有改善, 可以將BUG的描述或者改善代碼發(fā)送給對應的維護者.(內(nèi)核各個子系統(tǒng)的維護者信息在內(nèi)核代碼根目錄下的 MAINTAINERS 文件中)
生成BUG或者改善代碼的補丁有2種方法:
1. 用diff命令創(chuàng)建補丁
# 生成patch diff -urN linux-old/ linux-new/ > my-patch # 比對整個內(nèi)核代碼文件夾 OR diff -u linux-old/some/file linux-new/some/file > my-patch # 比對某個文件# 應用patch, 應用了patch之后, linux-old 和 linux-new 中的代碼就一樣了 cd linux-old patch -p1 < ../my-patch # 這個命令是進入linux內(nèi)核代碼根目錄內(nèi)執(zhí)行的# PS. 還有個很有用的工具 diffstat diffstat -p1 my-patch # 列出補丁所引起的變更的統(tǒng)計(加入或移去的代碼行)?
2. 用git命令創(chuàng)建補丁
# 提交修改的或新增的代碼 git commit -a # 提交所有修改的代碼 OR git commit linux-src/some/file.c # 提交某個修改的代碼 OR git add linux-src/some/new-file.c # 把新增的文件加入版本庫 git commit -a # 提交新增的文件# 生成patch git format-patch -N # N 是正整數(shù), 這條命令生成最后N次提交產(chǎn)生的補丁 OR git format-patch -1 # 最后1次提交產(chǎn)生的補丁# 應用patch: 和第一種方法一樣?
4. 總結(jié)
本章的內(nèi)容都是和提交內(nèi)核patch有關(guān), 我還是內(nèi)核的入門者, 沒有社區(qū)的經(jīng)驗, 更別說提交內(nèi)核patch的經(jīng)驗了.
這篇筆記只是簡單記錄一些對入門者有用的信息, 便于以后查看.
總結(jié)
以上是生活随笔為你收集整理的《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Linux内核设计与实现》读书笔记(十
- 下一篇: GCC如何编译内嵌汇编代码