內核開源學村

Linux 內核補丁提交初體驗

三年前,我大學的時候開始用 Linux ,並且熱衷於發掘一個不一樣的桌面環境。 我的教授向我介紹了 Ubuntu 操作系統,我當即在我的電腦上構建了 Ubuntu + Windows 的雙系統。

在接下來三個月內,我完全放棄了 Windows ,並在了解了 RPM Package Manager 後轉向了 Fedora 。 我也嘗試過使用更加穩定的 Debian 系統,但在2017年初,我意識到 Arch Linux 才能滿足我對最新軟體包的所有需求。我給我的 Arch Linux 裝上了 KDE 桌面,並根據我自己的使用需求做了多項自定義。

與其使用現成的統一安裝程序,我一直對 Linux 黑客和終端更感興趣。這促使我去探索 Linux 內核樹,並找到了為社區做貢獻的方式。

向 Linux 內核提交我的首個補丁是一次令人驚嘆的體驗。2018年2月的第二個星期,我花了大約一個小時的時間克隆了最新的 Linux 內核源代碼樹,並用了幾乎一整晚的時間編譯和構建 4.15 Arch Linux 內核。我參照 KernelNewbies 指南並閱讀了《 Linux 設備驅動程序》 第三版的前三章。本書介紹了設備驅動程序以及特定類型,並示範了如何在運行時將它們作為模塊插入/刪除。書中的示例代碼幫助我創建了一個 Hello World 驅動程序,並嘗試了 insmod 和 rmmod 命令(後續章節中的代碼示例有一點點過時)。這樣,我便開始了向 Linux 內核提交補丁的旅途。

許多人建議我在成為內核貢獻者之前閱讀有關操作系統和 Linux 內核開發的書籍;另一些人則提倡遵循 KernelNewbies 的指南並使用漏洞查找工具來修復錯誤。我採取了後者的建議,因為我發現圍繞錯誤代碼的探索和試驗是學習和理解內核代碼的最佳方式。

我對 Linux 內核的第一次修補,是通過在 vt6656 驅動程序目錄上運行 checkpatch.pl 腳本來去除「內存不足」警告。在增添更新日誌並更新修補程序後,我於2月10日提交了第一個補丁。此後,我在2月12日收到了 Greg Kroah-Hartman 的一封電子郵件,告知我的修補程序已添加到下一分期的分支, 而且準備併入下一個主要內核版本中。

我的建議是,你可以從很簡單的補丁開始,因為就算只有一兩行的修補,都會激勵你做出更多貢獻。請記住,重要的是質量而不是數量。在向驅動程序的 TODO 列表做出貢獻前之前, 你應該掌握設備驅動程序和操作系統的豐富知識。做貢獻的快感會讓你繼續精進。


本文由 LinuxStory 志願者 杜雨桐 翻譯,更多詳情請查看原文。
原文鏈接:https://opensource.com/article/18/4/submitting-my-first-patch-linux-kernel
本文鏈接:https://linuxstory.org/submitting-my-first-patch-linux-kernel
轉載請註明來自 LinuxStory ,否則必究相關責任!

對這篇文章感覺如何?

太棒了
2
不錯
0
愛死了
0
不太好
0
感覺很糟
0

You may also like

Leave a reply

您的電子郵箱地址不會被公開。 必填項已用 * 標註

此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

More in:內核

內核

rootfs initramfs kexec 與 Linux 啟動過程

作為 Debian 用戶,在使用 apt 更新系統時偶爾會發現某次安裝更新的時間特別長,這往往出現在較大版本的更新中,仔細觀察後就會發現,這個耗時極長的操作並不是安裝某個軟體,而是對一個名為 init […]
內核

龍芯開始發布針對3A6000系列CPU的Linux補丁

儘管龍芯3A6000處理器尚未正式推出,但自去年以來的傳言將其定於在今年上半年推出,並有人聲稱這種性能提升可以與AMD Zen 3或英特爾Tiger Lake的性能水平相媲美。在3A6000系列推出之 […]
內核

Linux 共享庫的 soname 命名機制

Linux 有一套規則來命名系統中的每一個共享庫,它規定共享庫的文件命名規則如下:libname.so.x.y.z,即前綴"lib"+庫名稱+後綴".so"+三個數字組成的版本號,其中,x 表示主版本號,y 表示次版本號,z 表示發布版本號。SO-NAME 命名機制,就是把共享庫的文件名去掉次版本號和發布版本號,只保留主版本號。在 Linux 系統中,系統會為每個共享庫在它所在的目錄創建一個跟它的 」SO-NAME」 一樣的軟鏈接指向它。