成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何成為一個Linux系統內核開發者

系統 Linux
內核幾乎全是用C寫成的,有一些架構相關的部分是用匯編語言寫成的。熟練掌握C語言是內核開發的必備條件。匯編語言(任何架構)的了解不是必須的,除非你準備做某個架構的底層開發。

你想成知道如何成為一個Linux內核開發者么?或者你的老板告訴你,“去為這個設備寫一個Linux驅動?!斑@篇文檔的目的,就是通過描述你需要經歷的過程和提示你如何和社區一起工作,來教給你為達到這些目的所需要知道的所有知識。本文也嘗試解釋社區為什么這樣工作的一些原因。

內核幾乎全是用C寫成的,有一些架構相關的部分是用匯編語言寫成的。熟練掌握C語言是內核開發的必備條件。匯編語言(任何架構)的了解不是必須的,除非你準備做某個架構的底層開發。雖然下面這些書不能完全代替扎實的C語言教學和/或者成年累月的經驗,他們還是不錯的參考,如果用得著的話: - "The C Programming Language" 作者: Kernighan and Ritchie [Prentice Hall]- "Practical C Programming" 作者: Steve Oualline [O'Reilly]

內核是用 GNU C 和 GNU 工具鏈寫成的。雖然它符合 ISO C89 標準,它還是使用了一些標準中沒有的擴展。內核是自成體系的 C 環境,它并不依賴標準C庫,所以某些C語言標準是不支持的。任意長度long long類型除法和浮點數是不被允許的。有時候會很難理解內核對于它所使用的工具鏈和擴展的假定,而且不幸的是也沒有關于它們的絕對的參考。請查閱gcc 的info頁(`info gcc`)以獲取有關信息。

請記住你是在嘗試學習如何與已經存在的開發社區一起工作。這是一群成分復雜的人們,他們對于代碼,風格和步驟有高的標準。這些標準是經過時間檢驗的。

他們發現遵循這些標準對于這樣一個大規模的且地理上分散的團隊是最佳的選擇。嘗試提前學習盡可能多的有關這些標準的知識,因為它們都有很好的文檔;不要期望別人會遵照你或者你公司的行事方式。

法律問題

Linux內核源代碼依照GPL發布。請參考源代碼樹下的COPYING文件,以獲取有關這個許可證的詳細信息。如果你對這個許可證有疑問,請聯系你的律師,不要在Linux內核郵件列表里詢問。郵件列表里的人們不是律師,你不應該依賴于他們對于法律問題的解釋。

文檔

Linux內核源代碼樹有很多文檔,它們對于學習如何與內核社區交流來說有不可估量的價值。當新的功能加進內核的時候,通常建議作者把解釋這個新功能的文檔也加進內核。如果一個內核變動導致了內核對用戶空間界面的改變,建議你把這個信息或者一個解釋了這個變動的manpage的補丁發送給手冊頁的維護者 mtk-manpages@gmx.net。

這里有一個內核源代碼樹里需要閱讀的文件列表:

README

這個文件簡單介紹了Linux內核的背景,并描述了配置和編譯內核需要做哪些事情。內核新手應該從這里開始。

Do*****entation/Changes

這個文件介紹了成功編譯和運行內核所需要各種不同軟件的列表。

Do*****entation/CodingStyle

這個文件描述了Linux內核代碼風格,還有背后的一些原因。所有的新代碼的要符合這個文檔里的準則。大多數維護者只會接受符合這些規則的補丁,很多人只看符合正確風格的代碼。

Do*****entation/SubmittingPatches

Do*****entation/SubmittingDrivers

#p#

這些文件非常詳細的介紹了如何成功的創建和發送一個補丁,包括(但不限于):

-Email內容

-Email格式

-發送給誰

遵守所有這些規則并不能保證成功(對所有的補丁都需要進行內容和風格的詳細檢查),但是不遵守這些規則就一定不會成功。

其他關于如何創建補丁的很好的文章有:

“The Perfect Patch"

linux/patches/stuff/tpp.txt">www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt

"Linux kernle patch submission format"

linux.yyz.us/patch-format.html

Do*****entation/stable_api_nonsense.txt

這個文件解釋了有意識的決定-不在內核里使用穩定的API-的原因,包括:

-子系統分隔層(為了兼容?)

-操作系統之間的驅動可移植性

-緩和(或者阻止)內核源代碼樹的急速變動

這個文檔對于了解Linux的開發哲學是非常關鍵的,對于由開發其他操作系統轉而開發Linux人也是很重要的。

Do*****entation/SecurityBugs

如果你感覺到你發現了Linux內核里的一個安全問題,請遵照這個文檔里所描述的步驟來提醒內核開發者,并幫助解決問題。

Do*****entation/ManagementStyle

這個文檔描述了Linux內核維護者如何運作,以及他們為什么這樣做。它對于任何內核開發新手(或者任何對本話題感興趣的人)來說是非常重要的。

因為它解釋了一些慣有的錯誤概念,可解決有關內核維護者獨特行為的疑惑。

Do*****entation/stable_kernel_rules.txt

本文件描述了穩定版本內核釋出的規則,還有如果你想對其中的一個版本做一些改動應該做些什么。

Do*****entation/kernel-docs.txt

一個有關內核開發的外部文檔的列表。如果你在內核內部文檔里沒有找到? 要找的東西,你可以參考這個列表。

Do*****entation/applying-patches.txt

介紹了對于什么是補丁,以及如何應用補丁于不同的內核開發分支。

內核也有很多可以從源代碼自動產生的文檔。這包括內核內部API的全面描述,有關如何處理好鎖定的規則。這些文檔會被創建于 Do*****entation/DocBook/文件夾中。在內核主源碼樹中通過運行下面的命令可以創建出PDF,Postscript, HTML 和manpage等不同格式的文檔: make pdfdocsmake psdocsmake htmldocsmake mandocs

成為一個內核開發者

如果你對Linux內核開發一無所知,你可以看看Linux KernelNewbies項目:

kernelnewbies.org

它包含一個郵件列表,在那里你可以問任何有關內核開發的基礎問題(在問問題之前先搜索一下存檔,很可能這個問題已經被解答過了。)它還有一個IRC頻道,你可以在里面實時的提問。它還有很多有用的文檔,對于學習Linux內核開發很有用。

這個網站有有關代碼組織,子系統,當前項目(代碼樹之內的和之外的)的基本信息。它也描述了一些基本的“物流”信息,比如怎么樣編譯內核和怎么樣打補丁。

如果你不知道從何處起步,但是你想找一些任務來做以加入內核開發社區,請看一下Linux Kernel Janitor項目:

janitor.kernelnewbies.org/

這是一個很好的起步的地方。它描述了一些相對來說簡單的內核中需要清理的和解決的問題。和負責這個項目的開發者一起工作,你會學到如何令你的補丁進入Linux內核樹的基本知識,而且可能會為你指明下一步的發展方向,如果你自己尚不明確的話。

如果你已經有了一段代碼想要放到內核樹里,但是需要某種形式的幫助,那么kernel-mentors項目就可以幫你的忙了。這是一個郵件列表,可以在下面找到:

selenic.com/mailman/listinfo/kernel-mentors

在你對Linux內核代碼作任何實際的改動之前,必須要了解相關的代碼是如何工作的。為了達到這個目的,沒有比直接讀它(很多困難的地方都有很好的注釋)更好的方法了,甚至可能是在某個特殊工具的幫助下來閱讀。很值得推薦的這樣一種工具是Linux Cross-Reference項目,它可以把源代碼以一種自我引用的、索引的網頁形式顯示出來。一個非常好的最新的內核代碼倉庫可以在這里找到: //sosdg.org/~coywolf/lxr

所有這些事情有時候很難做到。要想完美做到這些要求可能需要幾年的時間。這是一個持續的發展過程,需要很多耐心和決心。但是不要放棄,這是可以實現的。很多人已經做到了這一點,每個人都經歷過你現在這個階段。

【編輯推薦】

  1. 黑客再爆Linux內核高危漏洞 可以攻擊所有Linux系統
  2. 輕松獲root權限!Linux內核連爆高危漏洞
  3. Linux內核20天內連爆兩高危漏洞
責任編輯:趙寧寧 來源: chinaitlab
相關推薦

2010-08-24 08:58:42

開發者

2015-09-01 09:53:04

Java Web開發者

2024-02-28 07:48:05

Rust項目框架

2014-04-17 10:42:50

DevOps

2015-07-22 16:08:46

OpenStack開源貢獻代碼

2020-03-31 09:47:04

Vue開發代碼

2012-04-11 09:26:13

內核Linux 開發

2012-10-23 14:01:21

Yibo 客戶端已經停

2024-10-31 15:22:31

安全Linux開源

2019-06-27 10:15:46

架構代碼項目

2013-07-25 17:28:02

2011-12-27 09:31:13

程序員

2011-10-10 14:56:24

Android開發者

2012-08-27 09:31:35

創業程序員

2023-12-06 17:57:07

開發云服務

2014-05-22 10:43:26

移動開發者優秀

2014-06-18 09:55:29

iOS開發者學習Android

2020-11-17 10:02:47

WindowsLinux開發

2016-01-21 10:58:41

Node.js開發者

2015-06-05 09:15:37

移動開發者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色综合色综合 | 国产做a爱片久久毛片 | 日韩视频区 | 97人人澡人人爽91综合色 | 日韩中文久久 | 99爱免费 | 日韩在线小视频 | 欧美成人精品激情在线观看 | 亚洲成人精品一区 | 精品久久亚洲 | 99精品久久99久久久久 | 国产精品亚洲第一区在线暖暖韩国 | 免费影视在线观看 | aa级毛片毛片免费观看久 | 国产欧美一区二区三区日本久久久 | 国产成人免费视频 | 久久久久久黄 | 一区中文字幕 | 国产欧美日韩精品一区二区三区 | www.欧美.com | 色婷婷一区二区三区四区 | 天天干狠狠 | 日韩av一区二区在线观看 | 婷婷色国产偷v国产偷v小说 | 又爽又黄axxx片免费观看 | 日韩欧美在线观看 | 精品久久久久久久久亚洲 | 国产a区 | 欧洲一级毛片 | 午夜影院视频 | 九九av| 国产精品日本一区二区在线播放 | 亚洲一区国产 | 中文字幕一区二区三区在线观看 | 最新国产精品精品视频 | 99精品国产一区二区三区 | 精品国产不卡一区二区三区 | 日韩午夜影院 | 午夜精品一区二区三区免费视频 | 欧美专区在线观看 | 精品国产鲁一鲁一区二区张丽 |