① 如何進行linux Kernel 開發
學習匯編語言、C語言,這兩種語言是你進行Linux Kernel開發與維護的必備語言能力,這樣你才有能力閱讀與編寫Linux Kernel的能力。
下載Linux Kernel源代碼,建議下載先前的版本,因為目前的新版本代碼數量太龐大,技術太新,如果是進行Linux Kernel的開發的話,先從簡單的版本0.11或者1.XX.XX版本開始,以前的版本中沒有過多的新技術的代碼,適合入門Linux Kernel的學習。
當你熟悉了Linux Kernel了後,可以下載目前最新的版本Linux Kernel3.18版本的源代碼,裡麵包含了很多的新技術的知識,方便你了解與學習~~~
這是一篇很重要的文檔,它介紹了內核開發的方方面面。這篇文檔已被加入到內核源碼樹的Documentation文檔里(名字為HOWTO),你可以在最新的內核樹里找到它。盡管已經有網友翻譯過這篇文侍鉛檔,但是我還是決定自己再翻譯一遍。翻譯完之後,我的感觸是如果依靠翻譯來進行學習,速度太慢了。以後的技術文檔直接看英文,適當的做做筆記即可。
山濤
-----------------------------------------------------
How to do Linux Kernel development
-----------------------------------------------------
關於如何進行Linux Kernel development,這篇文檔是最值得你閱讀的一篇。它指導你如何成為一名Linux內核開發者以及如何和Linux內核開發社區一同工作。盡管它不包含內核編程的技能方面的知識,但是本篇能夠給你正確的指導去做內核開發。
如果這篇文檔講述的任何東西已經過時了的話,請給這篇文檔的維護者發送你的更新。
Greg [email protected]
Introction
-----------------
你想成為一名Linux內核開發者嗎?或者你的老闆曾經告訴你:去給某個設備寫個Linux驅動程序。這篇文檔的目標是,通過描述你進行開發時需要經歷的一些流程規則去指導你如何與社區一起工作,教會你所需要的一切從而讓你實現你的目標(成為一名合格的內核開發者,或者寫出合格的令老闆滿意的驅動程序);這篇文檔也會說明內核社區工作的風格和原因。
內核絕大部分代碼是基於C語言編程,與體系結構有關的一小部分由匯編完成。很好的理解和掌握C語言,是內核開發的必備要求。匯編語言(不同的體系結構有不同的匯編語言)不是必需的,除非你計劃做體系結構相關的底層開發。如果你想加強C語言的掌握,很好的參考資料如下:
- "The C Programming Language" by Kernighan and Ritchie [Prentice Hall]
- "Practical C Programming" by Steve Oualline [O'Reilly]
Linux內核是使用GNU C和GNU工具鏈完成的。盡管知余它遵循ISO C89標准,但是內核的編寫也使用了許多的GNU C的擴展特性,這些特性不屬於標準的一部分。內核的C編程環境自成體系,不依賴於C標准庫,所以C標準的一部分特性沒有被支持:例如Arbitrary long long divisions和浮點指針不被支持。有時你會很難理解內核基於GNU工具鏈的一些假定以及內核使用的一些GNU C擴展,不幸的是對於這類問題沒有確定性的參考資料。如果你遇到這類問題,建議你查閱GCC的info pages來獲取相關的信息(在Linux PC上,通過命令info gcc可以獲得信息)。
請記住你正在學習如何與已經存在的內核開發社區一起工作。內核開發社區由全球不同地方的開發人員組成,它以代碼、風格、開發流程的高質量標准著稱。這些高質量的標准使內核開發社區(這個組織非常大,地理位置非常分散)能夠非常有效的進行。應當提早努力學習這些高質量標准(編程風格、代碼要求以及開發流程),它們有很好的文檔;不要期望內核開發社區別的開發人員會適應你自己的或者你公司的開發風格。
Legal Issues
------------------
Linux內核代碼基於GPL許可協議發布。請閱讀內核源碼樹的主目錄里的COPYING文件,它搭談滾提供了GPL許可的詳細描述。如果你有關於GPL許可的進一步問題,請聯系一名律師,不要在Linux kernel mailing list里詢問。Linux kernel mailing list里的開發人員不是律師,所以你不應當聽取他們的任何關於法律事務的建議。
對於一些通常的關於GPL許可的問題和解答,請參考:
http://www.gnu.org/licenses/gpl-faq.html
Documentation
---------------------
Linux內核源碼樹里有大量的非常有用的文檔用於學習,使你與內核社區相互促進和共同發展。當一個新的特性要加入到內核里,建議相關的文檔也要加入到內核里,用於描述如何使用這個新特性;當一個內核的修改導致了內核提供給用戶的介面發生了變化,建議你發送信息或者一個補丁給[email protected],告訴manual pages的維護者用戶介面的變化。
這里羅列了一些內核源碼樹里的需要閱讀的文檔:
README
這篇文檔簡要的介紹了Linux內核的背景,描述了配置和build內核需要什麼。一個剛剛接觸內核的新手應當從這里開始。(註:build kernel,就是編譯內核源代碼,生成可供系統使用的內核二進制文件(vmlinux/zImage)的過程。
Documentation/Changes
這篇文檔給出了一個用於成功編譯和運行內核的各種軟體包的列表的最小集合。
Documentation/CodingStyle
這篇文檔描述了Linux內核編碼風格,和一些隱藏在背後的基本原理。所有的想加入內核的新代碼應當遵循這篇文檔的指導。絕大數的內核代碼維護者只願意接受那些符合這篇文檔描述的風格的補丁,許多內核開發者也只願意審查那些符合Linux內核編碼風格的代碼。
Documentation/SubmittingPatches
Documentation/SubmittingDrivers
這些文檔清楚而又詳細地告訴你如何成功的創建和向社區遞交一個補丁,包括:
----郵件內容
----郵件格式
----發送者和接收者
遵循文檔里提倡的規則並不一定保證你提交補丁成功(因為所有的補丁遭受詳細而嚴格的內容和風格的審查),但是不遵循它們,提交補丁肯定不成功。
其他的一些非常優秀的描述如何正確的創建補丁的文檔如下:
"The Perfect Patch"
http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt
"Linux kernel patch submission format"
http://linux.yyz.us/patch-format.html
Documentation/stable_api_nonsense.txt
這篇文檔描述了有意決定在內核里沒有固定內核API的基本原因,包含下面的討論主題:
---子系統的shim-layers(為了兼容性?)
---操作系統之間的驅動移植性
---減緩內核源碼樹的快速變化(或者說,防止快速變化)
這篇文檔對於理解Linux的開發哲學非常關鍵,也對於從其他操作系統轉移到Linux上的開發人員非常重要。
Documentation/SecurityBugs
如果你確知你在Linux Kernel里發現了security problem,請遵循這篇文檔描述的步驟,幫助通知內核的開發者們並解決這類問題。
Documentation/ManagementStyle
這篇文檔描述了Linux內核開發者們如何進行管理運作,以及運作方法背後的分享精神(shared ethos)。這篇文檔對於那些內核開發新手們(或者那些好奇者)值得一讀,因為它解決或解釋了很多對於內核維護者獨特行為的誤解。
Documentation/stable_kernel_rules.txt
這篇文檔描述了一個穩定的內核版本如何發布的規則,以及需要做些什麼如果你想把一個修改加入到其中的一個版本。
Documentation/kernel-docs.txt
關於內核開發的外部文檔列表。如果你在內核開發的內部文檔中找不到你想要的資料,請參考這篇文檔提供的資料鏈接。
Documentation/applying-patches.txt
這篇文檔很好地描述了什麼是補丁(patch),以及如何將它應用到內核的不同開發分支(branch)上。
內核里也有大量的由內核源碼自動生成的文檔。其中包括了內核內部API的全面描述,和如何處理好鎖的規則。這些文檔在Documentation/DocBook/下創建,格式可以是pdf、Postscritpt、HTML和man pages,在內核源碼主目錄下通過運行下面命令自動生成:
make pdfdocs
make psdocs
make htmldocs
make mandocs
附上出處鏈接:http://www.cppblog.com/flyonok/archive/2011/04/15/144316.html
② 求 經典Linux內核入門書籍《 Linux內核設計與實現(第三版中文高清帶目錄).pdf 》,第三版高清帶目錄!
是這本吧...?
上傳到附件里了...
下載確認一下吧...
書籍內容預覽見下圖...
滿意的話還望能採納我的回答...
③ 求《Linux內核設計與實現原書第三版》全文免費下載百度網盤資源,謝謝~
《Linux內核設計與實現原書第三版》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1_NFP1R2airaYGjGHa_V7EQ
④ 《Linux環境編程:從應用到內核》pdf下載在線閱讀全文,求百度網盤雲資源
《Linux環境編程:從應用到內核》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1IPqpwxE_ZBlsWO0F6NW82g
⑤ 求《Linux內核探秘深入解析文件系統》全文免費下載百度網盤資源,謝謝~
《Linux內核探秘深入解析文件系統》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/10_gfLOVNEpy-TAzONQ0pvA
⑥ 如何參與linux 內核開發
如何參與Linux內核開發
---------------------
這是一篇將如何參與Linux內核開發的相關問題一網打盡的終極秘笈。它將指導你
成為一名Linux內核開發者,並且學會如何同Linux內核開發社區合作。它盡可能不
包括任何關於內核編程的技術細節,但會給你指引一條獲得這些知識的正確途徑。
如果這篇文章中的任何內容不再適用,請給文末列出的文件維護者發送補丁。
入門
----
你想了解如何成為一名Linux內核開發者?或者老闆吩咐你「給這個設備寫個Linux
驅動程序」?這篇文章的目的就是教會你達成這些目標的全部訣竅,它將描述你需
要經過的流程以及給出如何同內核社區合作的一些提示。它還將試圖解釋內核社區
為何這樣運作。
Linux內核大部分是由C語言寫成的,一些體系結構相關的代碼用到了匯編語言。要
參與內核開發,你必須精通C語言。除非你想為某個架構開發底層代碼,否則你並
不需要了解(任何體系結構的)匯編語言。下面列舉的書籍雖然不能替代扎實的C
語言教育和多年的開發經驗,但如果需要的話,做為參考還是不錯的:
- "The C Programming Language" by Kernighan and Ritchie [Prentice Hall]
《C程序設計語言(第2版·新版)》(徐寶文 李志 譯)[機械工業出版社]
- "Practical C Programming" by Steve Oualline [O'Reilly]
《實用C語言編程(第三版)》(郭大海 譯)[中國電力出版社]
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
《C語言參考手冊(原書第5版)》(邱仲潘 等譯)[機械工業出版社]
Linux內核使用GNU C和GNU工具鏈開發。雖然它遵循ISO C89標准,但也用到了一些
標准中沒有定義的擴展。內核是自給自足的C環境,不依賴於標准C庫的支持,所以
並不支持C標准中的部分定義。比如long long類型的大數除法和浮點運算就不允許
使用。有時候確實很難弄清楚內核對工具鏈的要求和它所使用的擴展,不幸的是目
前還沒有明確的參考資料可以解釋它們。請查閱gcc信息頁(使用「info gcc」命令
顯示)獲得一些這方面信息。
請記住你是在學習怎麼和已經存在的開發社區打交道。它由一群形形色色的人組成,
他們對代碼、風格和過程有著很高的標准。這些標準是在長期實踐中總結出來的,
適應於地理上分散的大型開發團隊。它們已經被很好得整理成檔,建議你在開發
之前盡可能多的學習這些標准,而不要期望別人來適應你或者你公司的行為方式。
法律問題
--------
Linux內核源代碼都是在GPL(通用公共許可證)的保護下發布的。要了解這種許可
的細節請查看源代碼主目錄下的COPYING文件。如果你對它還有更深入問題請聯系
律師,而不要在Linux內核郵件組上提問。因為郵件組里的人並不是律師,不要期
望他們的話有法律效力。
對於GPL的常見問題和解答,請訪問以下鏈接:
http://www.gnu.org/licenses/gpl-faq.html
文檔
----
Linux內核代碼中包含有大量的文檔。這些文檔對於學習如何與內核社區互動有著
不可估量的價值。當一個新的功能被加入內核,最好把解釋如何使用這個功能的文
檔也放進內核。當內核的改動導致面向用戶空間的介面發生變化時,最好將相關信
息或手冊頁(manpages)的補丁發到[email protected],以向手冊頁(manpages)
的維護者解釋這些變化。
以下是內核代碼中需要閱讀的文檔:
README
文件簡要介紹了Linux內核的背景,並且描述了如何配置和編譯內核。內核的
新用戶應該從這里開始。
Documentation/Changes
文件給出了用來編譯和使用內核所需要的最小軟體包列表。
Documentation/CodingStyle
描述Linux內核的代碼風格和理由。所有新代碼需要遵守這篇文檔中定義的規
范。大多數維護者只會接收符合規定的補丁,很多人也只會幫忙檢查符合風格
的代碼。
Documentation/SubmittingPatches
Documentation/SubmittingDrivers
這兩份文檔明確描述如何創建和發送補丁,其中包括(但不僅限於):
- 郵件內容
- 郵件格式
- 選擇收件人
遵守這些規定並不能保證提交成功(因為所有補丁需要通過嚴格的內容和風格
審查),但是忽視他們幾乎就意味著失敗。
其他關於如何正確地生成補丁的優秀文檔包括:
"The Perfect Patch"
http://userweb.kernel.org/~akpm/stuff/tpp.txt
"Linux kernel patch submission format"
http://linux.yyz.us/patch-format.html
Documentation/stable_api_nonsense.txt
論證內核為什麼特意不包括穩定的內核內部API,也就是說不包括像這樣的特
性:
- 子系統中間層(為了兼容性?)
- 在不同操作系統間易於移植的驅動程序
- 減緩(甚至阻止)內核代碼的快速變化
這篇文檔對於理解Linux的開發哲學至關重要。對於將開發平台從其他操作系
統轉移到Linux的人來說也很重要。
Documentation/SecurityBugs
如果你認為自己發現了Linux內核的安全性問題,請根據這篇文檔中的步驟來
提醒其他內核開發者並幫助解決這個問題。
Documentation/ManagementStyle
描述內核維護者的工作方法及其共有特點。這對於剛剛接觸內核開發(或者對
它感到好奇)的人來說很重要,因為它解釋了很多對於內核維護者獨特行為的
普遍誤解與迷惑。
Documentation/stable_kernel_rules.txt
解釋了穩定版內核發布的規則,以及如何將改動放入這些版本的步驟。
Documentation/kernel-docs.txt
有助於內核開發的外部文檔列表。如果你在內核自帶的文檔中沒有找到你想找
的內容,可以查看這些文檔。
Documentation/applying-patches.txt
關於補丁是什麼以及如何將它打在不同內核開發分支上的好介紹
內核還擁有大量從代碼自動生成的文檔。它包含內核內部API的全面介紹以及如何
妥善處理加鎖的規則。生成的文檔會放在 Documentation/DocBook/目錄下。在內
核源碼的主目錄中使用以下不同命令將會分別生成PDF、Postscript、HTML和手冊
頁等不同格式的文檔:
make pdfdocs
make psdocs
make htmldocs
make mandocs
如何成為內核開發者
------------------
如果你對Linux內核開發一無所知,你應該訪問「Linux內核新手」計劃:
http://kernelnewbies.org
它擁有一個可以問各種最基本的內核開發問題的郵件列表(在提問之前一定要記得
查找已往的郵件,確認是否有人已經回答過相同的問題)。它還擁有一個可以獲得
實時反饋的IRC聊天頻道,以及大量對於學習Linux內核開發相當有幫助的文檔。
網站簡要介紹了源代碼組織結構、子系統劃分以及目前正在進行的項目(包括內核
中的和單獨維護的)。它還提供了一些基本的幫助信息,比如如何編譯內核和打補
丁。
如果你想加入內核開發社區並協助完成一些任務,卻找不到從哪裡開始,可以訪問
「Linux內核房管員」計劃:
http://kernelnewbies.org/KernelJanitors
這是極佳的起點。它提供一個相對簡單的任務列表,列出內核代碼中需要被重新
整理或者改正的地方。通過和負責這個計劃的開發者們一同工作,你會學到將補丁
集成進內核的基本原理。如果還沒有決定下一步要做什麼的話,你還可能會得到方
向性的指點。
如果你已經有一些現成的代碼想要放到內核中,但是需要一些幫助來使它們擁有正
確的格式。請訪問「內核導師」計劃。這個計劃就是用來幫助你完成這個目標的。它
是一個郵件列表,地址如下:
http://selenic.com/mailman/listinfo/kernel-mentors
在真正動手修改內核代碼之前,理解要修改的代碼如何運作是必需的。要達到這個
目的,沒什麼辦法比直接讀代碼更有效了(大多數花招都會有相應的注釋),而且
一些特製的工具還可以提供幫助。例如,「Linux代碼交叉引用」項目就是一個值得
特別推薦的幫助工具,它將源代碼顯示在有編目和索引的網頁上。其中一個更新及
時的內核源碼庫,可以通過以下地址訪問:
http://sosdg.org/~coywolf/lxr/
開發流程
--------
目前Linux內核開發流程包括幾個「主內核分支」和很多子系統相關的內核分支。這
些分支包括:
- 2.6.x主內核源碼樹
- 2.6.x.y -stable內核源碼樹
- 2.6.x -git內核補丁集
- 2.6.x -mm內核補丁集
- 子系統相關的內核源碼樹和補丁集
2.6.x內核主源碼樹
-----------------
2.6.x內核是由Linus Torvalds(Linux的創造者)親自維護的。你可以在
kernel.org網站的pub/linux/kernel/v2.6/目錄下找到它。它的開發遵循以下步
驟:
- 每當一個新版本的內核被發布,為期兩周的集成窗口將被打開。在這段時間里
維護者可以向Linus提交大段的修改,通常這些修改已經被放到-mm內核中幾個
星期了。提交大量修改的首選方式是使用git工具(內核的代碼版本管理工具
,更多的信息可以在http://git.or.cz/獲取),不過使用普通補丁也是可以
的。
- 兩個星期以後-rc1版本內核發布。之後只有不包含可能影響整個內核穩定性的
新功能的補丁才可能被接受。請注意一個全新的驅動程序(或者文件系統)有
可能在-rc1後被接受是因為這樣的修改完全獨立,不會影響其他的代碼,所以
沒有造成內核退步的風險。在-rc1以後也可以用git向Linus提交補丁,不過所
有的補丁需要同時被發送到相應的公眾郵件列表以征詢意見。
- 當Linus認為當前的git源碼樹已經達到一個合理健全的狀態足以發布供人測試
時,一個新的-rc版本就會被發布。計劃是每周都發布新的-rc版本。
- 這個過程一直持續下去直到內核被認為達到足夠穩定的狀態,持續時間大概是
6個星期。
- 以下地址跟蹤了在每個-rc發布中發現的退步列表:
http://kernelnewbies.org/known_regressions
關於內核發布,值得一提的是Andrew Morton在linux-kernel郵件列表中如是說:
「沒有人知道新內核何時會被發布,因為發布是根據已知bug的情況來決定
的,而不是根據一個事先制定好的時間表。」
2.6.x.y -stable(穩定版)內核源碼樹
-----------------------------------
由4個數字組成的內核版本號說明此內核是-stable版本。它們包含基於2.6.x版本
內核的相對較小且至關重要的修補,這些修補針對安全性問題或者嚴重的內核退步。
這種版本的內核適用於那些期望獲得最新的穩定版內核並且不想參與測試開發版或
者實驗版的用戶。
如果沒有2.6.x.y版本內核存在,那麼最新的2.6.x版本內核就相當於是當前的穩定
版內核。
2.6.x.y版本由「穩定版」小組(郵件地址<[email protected]>)維護,一般隔周發
布新版本。
內核源碼中的Documentation/stable_kernel_rules.txt文件具體描述了可被穩定
版內核接受的修改類型以及發布的流程。
2.6.x -git補丁集
----------------
Linus的內核源碼樹的每日快照,這個源碼樹是由git工具管理的(由此得名)。這
些補丁通常每天更新以反映Linus的源碼樹的最新狀態。它們比-rc版本的內核源碼
樹更具試驗性質,因為這個補丁集是全自動生成的,沒有任何人來確認其是否真正
健全。
2.6.x -mm補丁集
---------------
這是由Andrew Morton維護的試驗性內核補丁集。Andrew將所有子系統的內核源碼
和補丁拼湊到一起,並且加入了大量從linux-kernel郵件列表中採集的補丁。這個
源碼樹是新功能和補丁的試煉場。當補丁在-mm補丁集里證明了其價值以後Andrew
或者相應子系統的維護者會將補丁發給Linus以便集成進主內核源碼樹。
在將所有新補丁發給Linus以集成到主內核源碼樹之前,我們非常鼓勵先把這些補
丁放在-mm版內核源碼樹中進行測試。
這些內核版本不適合在需要穩定運行的系統上運行,因為運行它們比運行任何其他
內核分支都更具有風險。
如果你想為內核開發進程提供幫助,請嘗試並使用這些內核版本,並在
linux-kernel郵件列表中提供反饋,告訴大家你遇到了問題還是一切正常。
通常-mm版補丁集不光包括這些額外的試驗性補丁,還包括發布時-git版主源碼樹
中的改動。
-mm版內核沒有固定的發布周期,但是通常在每兩個-rc版內核發布之間都會有若干
個-mm版內核發布(一般是1至3個)。
子系統相關內核源碼樹和補丁集
----------------------------
相當一部分內核子系統開發者會公開他們自己的開發源碼樹,以便其他人能了解內
核的不同領域正在發生的事情。如上所述,這些源碼樹會被集成到-mm版本內核中。
下面是目前可用的一些內核源碼樹的列表:
通過git管理的源碼樹:
- Kbuild開發源碼樹, Sam Ravnborg <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git
- ACPI開發源碼樹, Len Brown <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
- 塊設備開發源碼樹, Jens Axboe <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
- DRM開發源碼樹, Dave Airlie <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git
- ia64開發源碼樹, Tony Luck <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git
- ieee1394開發源碼樹, Jody McIntyre <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/scjody/ieee1394.git
- infiniband開發源碼樹, Roland Dreier <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git
- libata開發源碼樹, Jeff Garzik <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
- 網路驅動程序開發源碼樹, Jeff Garzik <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
- pcmcia開發源碼樹, Dominik Brodowski <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
- SCSI開發源碼樹, James Bottomley <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
使用quilt管理的補丁集:
- USB, PCI, 驅動程序核心和I2C, Greg Kroah-Hartman <[email protected]>
kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
- x86-64, 部分i386, Andi Kleen <[email protected]>
ftp.firstfloor.org:/pub/ak/x86_64/quilt/
其他內核源碼樹可以在http://git.kernel.org的列表中和MAINTAINERS文件里
找到。
報告bug
-------
bugzilla.kernel.org是Linux內核開發者們用來跟蹤內核Bug的網站。我們鼓勵用
戶在這個工具中報告找到的所有bug。如何使用內核bugzilla的細節請訪問:
http://test.kernel.org/bugzilla/faq.html
內核源碼主目錄中的REPORTING-BUGS文件里有一個很好的模板。它指導用戶如何報
告可能的內核bug以及需要提供哪些信息來幫助內核開發者們找到問題的根源。
利用bug報告
-----------
練習內核開發技能的最好辦法就是修改其他人報告的bug。你不光可以幫助內核變
得更加穩定,還可以學會如何解決實際問題從而提高自己的技能,並且讓其他開發
者感受到你的存在。修改bug是贏得其他開發者贊譽的最好辦法,因為並不是很多
人都喜歡浪費時間去修改別人報告的bug。
要嘗試修改已知的bug,請訪問http://bugzilla.kernel.org網址。如果你想獲得
最新bug的通知,可以訂閱bugme-new郵件列表(只有新的bug報告會被寄到這里)
或者訂閱bugme-janitor郵件列表(所有bugzilla的變動都會被寄到這里)。
https://lists.linux-foundation.org/mailman/listinfo/bugme-new
https://lists.linux-foundation.org/mailman/listinfo/bugme-janitors
郵件列表
--------
正如上面的文檔所描述,大多數的骨幹內核開發者都加入了Linux Kernel郵件列
表。如何訂閱和退訂列表的細節可以在這里找到:
http://vger.kernel.org/vger-lists.html#linux-kernel
網上很多地方都有這個郵件列表的存檔(archive)。可以使用搜索引擎來找到這些
存檔。比如:
http://dir.gmane.org/gmane.linux.kernel
在發信之前,我們強烈建議你先在存檔中搜索你想要討論的問題。很多已經被詳細
討論過的問題只在郵件列表的存檔中可以找到。
大多數內核子系統也有自己獨立的郵件列表來協調各自的開發工作。從
MAINTAINERS文件中可以找到不同話題對應的郵件列表。
很多郵件列表架設在kernel.org伺服器上。這些列表的信息可以在這里找到:
http://vger.kernel.org/vger-lists.html
在使用這些郵件列表時,請記住保持良好的行為習慣。下面的鏈接提供了與這些列
表(或任何其它郵件列表)交流的一些簡單規則,雖然內容有點濫竽充數。
http://www.albion.com/netiquette/
當有很多人回復你的郵件時,郵件的抄送列表會變得很長。請不要將任何人從抄送
列表中刪除,除非你有足夠的理由這么做。也不要只回復到郵件列表。請習慣於同
一封郵件接收兩次(一封來自發送者一封來自郵件列表),而不要試圖通過添加一
些奇特的郵件頭來解決這個問題,人們不會喜歡的。
記住保留你所回復內容的上下文和源頭。在你回復郵件的頂部保留「某某某說到……」
這幾行。將你的評論加在被引用的段落之間而不要放在郵件的頂部。
如果你在郵件中附帶補丁,請確認它們是可以直接閱讀的純文本(如
Documentation/SubmittingPatches文檔中所述)。內核開發者們不希望遇到附件
或者被壓縮了的補丁。只有這樣才能保證他們可以直接評論你的每行代碼。請確保
你使用的郵件發送程序不會修改空格和製表符。一個防範性的測試方法是先將郵件
發送給自己,然後自己嘗試是否可以順利地打上收到的補丁。如果測試不成功,請
調整或者更換你的郵件發送程序直到它正確工作為止。
總而言之,請尊重其他的郵件列表訂閱者。
⑦ 學習linux內核應該看什麼書籍 初級的
學習內核不是件容易事,前面有很多前續課程要讀。
1.C語言,推薦 The programmgin c language被稱為聖經的書,不過沒有中文版,不過C語言不太難,而且讀內核也不需要你對C有多深了解。學習到指針和結構體就夠你用了。
2.數據結構,不懂這個想學是不可能的,推薦《數據結構》C語言版本。
3.操作系統,任何一個大學的教科書都可以。一定要看,雖然是純理論。但不看這個,想看懂內核,那是不可能的。
4.微機原理,內核和底層相關,不知道微機原理是不行的。我學的時候書上是以INTEL 8086為藍本,非常簡單。後來看內核時候,補充了 80386以後出現的保護模式,非常復雜。但還是先看下老版的微機原理,先從簡單的下手。
5.linux系統管理,推薦《linux系統管理手冊》,被linux的作者推薦的系統管理書籍。
6,終於到內核了,我看的是《Linux內核代碼情景分析》雖然有點老。但結合新的源代碼,在了解機制後,代碼實現上差距不大。
是不是有點恐怖,要這么多前需知識,其實如果你是計算機專業的,那麼除了5和6外,其它的課程你應該在學校裡面學過了。
⑧ 《linux內核注釋權威》pdf下載在線閱讀全文,求百度網盤雲資源
《linux內核注釋權威》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/15IP9Ywnfh93BOWzdw8dPmg
⑨ 《Linux內核安全模塊深入剖析》pdf下載在線閱讀,求百度網盤雲資源
《Linux內核安全模塊深入剖析》(李志)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1u1nNqcgqaJNLBZthAbGKOg
書名:Linux內核安全模塊深入剖析
作者:李志
出版社:機械工業出版社
出版年份:2016-12-1
頁數:251
⑩ 《深入理解LINUX內核》pdf下載在線閱讀,求百度網盤雲資源
《深入理解LINUX內核》(Daniel P.Bovet)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1QoQy2yRZi74lKYgX5ywNXA
書名:深入理解LINUX內核
作者:Daniel P.Bovet
豆瓣評分:9.0
出版社:東南大學出版社
出版年份:2006-4-1
頁數:923
內容簡介:
為了徹底理解是什麼使得Linux能正常運行以及其為何能在各種不同的系統中運行良好,你需要深入研究內核最本質的部分。內核處理CPU與外界間的所有交互,並且決定哪些程序將以什麼順序共享處理器時間。它如此有效地管理有限的內存,以至成百上千的進程能高效地共享系統。它熟練地統籌數據傳輸,這樣CPU不用為等待速度相對較慢的硬碟而消耗比正常耗時更長的時間。
《深入理解Linux內核,第三版》指導你對內核中使用的最重要的數據結構、演算法和程序設計訣竅進行一次遍歷。通過對表面特性的探究,作者給那些想知道自己機器工作原理的人提供了頗有價值的見解。書中討論了Intel特有的重要性質。相關的代碼片段被逐行剖析。然而,本書涵蓋的不僅僅是代碼的功能,它解釋了Linux以自己的方式工作的理論基礎。
本書將使你了解Linux的所有內部工作,它不僅僅是一個理論上的練習。你將學習到哪些情況下Linux性能最佳,並且你將看到,在大量的不同環境里進行進程調度、文件存取和內存管理時,它如何滿足提供良好的系統響應的需要。這本書將幫助你充分利用Linux系統。
作者簡介:
博韋,計算機科學專業博士,義大利羅馬大學Tor vergata分校全職教授。
切薩蒂 數學和計算機科學博士,羅馬大學Tor vergata分校工程學院計算機科學系助理研究員。