當前位置:
首頁 > 知識 > 如何提交你的第一個 Linux 內核補丁

如何提交你的第一個 Linux 內核補丁

如何提交你的第一個 Linux 內核補丁


編譯自: https://opensource.com/article/18/8/first-linux-kernel-patch

作者: Sayli Karnik

譯者: qhwdw

學習如何做出你的首個 Linux 內核貢獻,以及在開始之前你應該知道什麼。

Linux 內核是最大且變動最快的開源項目之一,它由大約 53,600 個文件和近 2,000 萬行代碼組成。在全世界範圍內超過 15,600 位程序員為它貢獻代碼,Linux 內核項目的維護者使用了如下的協作模型。


如何提交你的第一個 Linux 內核補丁


本文中,為了便於在 Linux 內核中提交你的第一個貢獻,我將為你提供一個必需的快速檢查列表,以告訴你在提交補丁時,應該去查看和了解的內容。對於你貢獻的第一個補丁的提交流程方面的更多內容,請閱讀 KernelNewbies 的第一個內核補丁教程 。


為內核作貢獻

第 1 步:準備你的系統。

本文開始之前,假設你的系統已經具備了如下的工具:

  • 文本編輯器
  • Email 客戶端
  • 版本控制系統(例如:git)

第 2 步:下載 Linux 內核代碼倉庫。


git clone -b staging-testing

git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

複製你的當前配置:


cp /boot/config-`uname -r`* .config

第 3 步:構建/安裝你的內核。


make -jX

sudo make modules_install install

第 4 步:創建一個分支並切換到該分支。


git checkout -b first-patch

第 5 步:更新你的內核並指向到最新的代碼。


git fetch origin

git rebase origin/staging-testing

第 6 步:在最新的代碼庫上產生一個變更。

使用 make 命令重新編譯,確保你的變更沒有錯誤。

第 7 步:提交你的變更並創建一個補丁。


git add <file>

git commit -s -v

git format-patch -o /tmp/ HEAD^


如何提交你的第一個 Linux 內核補丁


主題是由冒號分隔的文件名組成,跟著是使用祈使語態來描述補丁做了什麼。空行之後是強制的 signed off 標記,最後是你的補丁的 diff 信息。

下面是另外一個簡單補丁的示例:


如何提交你的第一個 Linux 內核補丁


接下來, 從命令行使用郵件 (在本例子中使用的是 Mutt)發送這個補丁:


mutt -H /tmp/0001-<whatever your filename is>

使用 get_maintainer.pl 腳本 ,去了解你的補丁應該發送給哪位維護者的列表。


提交你的第一個補丁之前,你應該知道的事情

  • Greg Kroah-Hartman 的 staging tree 是提交你的 第一個補丁 的最好的地方,因為他更容易接受新貢獻者的補丁。在你熟悉了補丁發送流程以後,你就可以去發送複雜度更高的子系統專用的補丁。
  • 你也可以從糾正代碼中的編碼風格開始。想學習更多關於這方面的內容,請閱讀 Linux 內核編碼風格文檔 。
  • checkpatch.pl 腳本可以幫你檢測編碼風格方面的錯誤。例如,運行如下的命令:perl scripts/checkpatch.pl -f drivers/staging/android/* | less
  • 你可以去補全開發者留下的 TODO 注釋中未完成的內容:find drivers/staging -name TODO
  • Coccinelle 是一個模式匹配的有用工具。
  • 閱讀 歸檔的內核郵件 。
  • 為找到靈感,你可以去遍歷 linux.git 日誌 去查看以前的作者的提交內容。
  • 注意:不要與你的補丁的審核者在郵件頂部交流!下面就是一個這樣的例子:
  • 錯誤的方式:

Chris,

Yes let』s schedule the meeting tomorrow, on the second floor.

> On Fri, Apr 26, 2013 at 9:25 AM, Chris wrote:

> Hey John, I had some questions:

> 1. Do you want to schedule the meeting tomorrow?

> 2. On which floor in the office?

> 3. What time is suitable to you?

  • (注意那最後一個問題,在回復中無意中落下了。)
  • 正確的方式:

Chris,

See my answers below...

> On Fri, Apr 26, 2013 at 9:25 AM, Chris wrote:

> Hey John, I had some questions:

> 1. Do you want to schedule the meeting tomorrow?

Yes tomorrow is fine.

> 2. On which floor in the office?

Let"s keep it on the second floor.

> 3. What time is suitable to you?

09:00 am would be alright.

  • (所有問題全部回復,並且這種方式還保存了閱讀的時間。)
  • Eudyptula challenge 是學習內核基礎知識的非常好的方式。

想學習更多內容,閱讀 KernelNewbies 的第一個內核補丁教程 。之後如果你還有任何問題,可以在 kernelnewbies 郵件列表 或者 #kernelnewbies IRC channel 中提問。



via: https://opensource.com/article/18/8/first-linux-kernel-patch

作者: Sayli Karnik 選題: lujun9972 譯者: qhwdw 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出

點擊「了解更多」可訪問文內鏈接

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux技術 的精彩文章:

樹莓派自建 NAS 雲盤之——數據自動備份
初學者指南:ZFS 是什麼,為什麼要使用 ZFS?

TAG:Linux技術 |