Linux內核設計與實現 學習筆記(10)補丁,開發和社區

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內核新手去關注:

  1. http://kernelnewbies.org 有很多適合內核開發入門的資源
  2. http://lwn.net linux 新聞週刊

 

2. 編碼風格

社區給我們提供了學習和貢獻內核的地方, 但是爲了避免不必要的麻煩(被別人指責或者無人理睬), 首先得好好了解一些內核代碼的編碼風格.

linux的編碼風格都記錄在 Documentation/CodingStyle 內核開發前要好好研讀以下, 之後有時間我會整理到博客中.

 

3. 提交補丁

準備工作都完成之後, 就可以開始內核開發之旅了 :)

只要堅持不斷的學習和嘗試, 總有一天會爲了內核貢獻自己的代碼, 這時候, 就需要了解如何提交代碼, 也就是內核補丁.

 

如果是發現了BUG或者有改善, 可以將BUG的描述或者改善代碼發送給對應的維護者.(內核各個子系統的維護者信息在內核代碼根目錄下的 MAINTAINERS 文件中)

生成BUG或者改善代碼的補丁有2種方法:

1. 用diff命令創建補丁

複製代碼
# 生成patch
diff -urN linux-old/ linux-new/ > my-patch  # 比對整個內核代碼文件夾
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內核代碼根目錄內執行的

# PS. 還有個很有用的工具 diffstat
diffstat -p1 my-patch  # 列出補丁所引起的變更的統計(加入或移去的代碼行)
複製代碼

 

2. 用git命令創建補丁

複製代碼
# 提交修改的或新增的代碼
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 是正整數, 這條命令生成最後N次提交產生的補丁
OR
git format-patch -1  # 最後1次提交產生的補丁

# 應用patch: 和第一種方法一樣
複製代碼

 

4. 總結

本章的內容都是和提交內核patch有關, 我還是內核的入門者, 沒有社區的經驗, 更別說提交內核patch的經驗了.

這篇筆記只是簡單記錄一些對入門者有用的信息, 便於以後查看.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章