參考: Linux內核文檔:《如何讓你的改動進入內核》 - 廣漠飄羽 - 博客園 提交內核補丁到Linux社區的步驟 - 廣漠飄羽 - 博客園 建議: 內容具有時效性,需要閱讀最新版本的同學,可以點擊下麵kernel的官方翻譯網頁: https://www.kernel.org/doc/html/l ...
參考:
Linux內核文檔:《如何讓你的改動進入內核》 - 廣漠飄羽 - 博客園
提交內核補丁到Linux社區的步驟 - 廣漠飄羽 - 博客園
建議:
內容具有時效性,需要閱讀最新版本的同學,可以點擊下麵kernel的官方翻譯網頁:
https://www.kernel.org/doc/html/latest/translations/zh_CN/process/index.html
正文:
和一般github項目可以直接提交pr不同,linux kernel項目龐大,管理繁瑣,如果我們想要對linux kernel提出改進,並希望最終改進能進入主分支,則需要嚴格按照提交patch的流程
獲取源碼
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
或者對於有些模塊,可能有專門的源碼樹,建議基於那個做。從以下maintainers文件中可以查到對應樹和維護者的一些信息。
List of maintainers and how to submit kernel changes — The Linux Kernel documentation
commit&patch
做出修改,提交commit,並從該commit中生成patch。
git format-patch --subject-prefix='PATCH' -i HEAD~
然後,手動對patch再進行修改,要滿足以下規則:patch官方規則
其中,--subject-prefix欄位決定了 ' Subject: [PATCH v2 01/27] x86: fix eflags tracking ’ 加粗部分的內容。
然後,kernel提供了腳本對patch格式進行檢查,執行scripts/checkpatch.pl file.patch
挑選收件人
同樣方便地,kernel提供了一個腳本可以對某個文件提取出它的維護者,可以幾種方法對照使用:
scripts/get_maintainer.pl file or dir
git blame file(可查到每行代碼是誰提交的,查到commit id後再用git show id,就能看到這個人的具體提交信息,裡面有郵箱)
git log --pretty-format:"格式化字元串" --graph(加一點圖形化顯示)也很有用,格式化字元串定義可以參照Git - 查看提交歷史
除此之外,還要將郵件抄送給[email protected]、對應子系統@vger.kernel.org(同樣在maintainers文件可查)、[email protected](如果安全相關)
發送郵件
官方推薦用git send-email,這個工具使用smtp協議發送,需要進行一些配置。
首先需要去我們想用的郵箱設置里查到smtp的伺服器地址、埠號、以及對應密碼。然後打開.gitconfig:
[sendemail]
smtpserver = serverUrl
smtpserverport = serverPort
smtpencryption = tls/ssl(註意小寫)
smtpuser = [email protected]
smtppass = password
接下來,就可以用
git send-email --to 直發對象 --to ... --cc 抄送對象 --cc ... file.patch
來發送patch啦
最後,發送patch的記錄可以在 All of lore.kernel.org 查到