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

如何成為一個(gè)Linux系統(tǒng)內(nèi)核開發(fā)者

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

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

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

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

請記住你是在嘗試學(xué)習(xí)如何與已經(jīng)存在的開發(fā)社區(qū)一起工作。這是一群成分復(fù)雜的人們,他們對(duì)于代碼,風(fēng)格和步驟有高的標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)是經(jīng)過時(shí)間檢驗(yàn)的。

他們發(fā)現(xiàn)遵循這些標(biāo)準(zhǔn)對(duì)于這樣一個(gè)大規(guī)模的且地理上分散的團(tuán)隊(duì)是最佳的選擇。嘗試提前學(xué)習(xí)盡可能多的有關(guān)這些標(biāo)準(zhǔn)的知識(shí),因?yàn)樗鼈兌加泻芎玫奈臋n;不要期望別人會(huì)遵照你或者你公司的行事方式。

法律問題

Linux內(nèi)核源代碼依照GPL發(fā)布。請參考源代碼樹下的COPYING文件,以獲取有關(guān)這個(gè)許可證的詳細(xì)信息。如果你對(duì)這個(gè)許可證有疑問,請聯(lián)系你的律師,不要在Linux內(nèi)核郵件列表里詢問。郵件列表里的人們不是律師,你不應(yīng)該依賴于他們對(duì)于法律問題的解釋。

文檔

Linux內(nèi)核源代碼樹有很多文檔,它們對(duì)于學(xué)習(xí)如何與內(nèi)核社區(qū)交流來說有不可估量的價(jià)值。當(dāng)新的功能加進(jìn)內(nèi)核的時(shí)候,通常建議作者把解釋這個(gè)新功能的文檔也加進(jìn)內(nèi)核。如果一個(gè)內(nèi)核變動(dòng)導(dǎo)致了內(nèi)核對(duì)用戶空間界面的改變,建議你把這個(gè)信息或者一個(gè)解釋了這個(gè)變動(dòng)的manpage的補(bǔ)丁發(fā)送給手冊頁的維護(hù)者 mtk-manpages@gmx.net。

這里有一個(gè)內(nèi)核源代碼樹里需要閱讀的文件列表:

README

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

Do*****entation/Changes

這個(gè)文件介紹了成功編譯和運(yùn)行內(nèi)核所需要各種不同軟件的列表。

Do*****entation/CodingStyle

這個(gè)文件描述了Linux內(nèi)核代碼風(fēng)格,還有背后的一些原因。所有的新代碼的要符合這個(gè)文檔里的準(zhǔn)則。大多數(shù)維護(hù)者只會(huì)接受符合這些規(guī)則的補(bǔ)丁,很多人只看符合正確風(fēng)格的代碼。

Do*****entation/SubmittingPatches

Do*****entation/SubmittingDrivers

#p#

這些文件非常詳細(xì)的介紹了如何成功的創(chuàng)建和發(fā)送一個(gè)補(bǔ)丁,包括(但不限于):

-Email內(nèi)容

-Email格式

-發(fā)送給誰

遵守所有這些規(guī)則并不能保證成功(對(duì)所有的補(bǔ)丁都需要進(jìn)行內(nèi)容和風(fēng)格的詳細(xì)檢查),但是不遵守這些規(guī)則就一定不會(huì)成功。

其他關(guān)于如何創(chuàng)建補(bǔ)丁的很好的文章有:

“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

這個(gè)文件解釋了有意識(shí)的決定-不在內(nèi)核里使用穩(wěn)定的API-的原因,包括:

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

-操作系統(tǒng)之間的驅(qū)動(dòng)可移植性

-緩和(或者阻止)內(nèi)核源代碼樹的急速變動(dòng)

這個(gè)文檔對(duì)于了解Linux的開發(fā)哲學(xué)是非常關(guān)鍵的,對(duì)于由開發(fā)其他操作系統(tǒng)轉(zhuǎn)而開發(fā)Linux人也是很重要的。

Do*****entation/SecurityBugs

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

Do*****entation/ManagementStyle

這個(gè)文檔描述了Linux內(nèi)核維護(hù)者如何運(yùn)作,以及他們?yōu)槭裁催@樣做。它對(duì)于任何內(nèi)核開發(fā)新手(或者任何對(duì)本話題感興趣的人)來說是非常重要的。

因?yàn)樗忉屃艘恍T有的錯(cuò)誤概念,可解決有關(guān)內(nèi)核維護(hù)者獨(dú)特行為的疑惑。

Do*****entation/stable_kernel_rules.txt

本文件描述了穩(wěn)定版本內(nèi)核釋出的規(guī)則,還有如果你想對(duì)其中的一個(gè)版本做一些改動(dòng)應(yīng)該做些什么。

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

一個(gè)有關(guān)內(nèi)核開發(fā)的外部文檔的列表。如果你在內(nèi)核內(nèi)部文檔里沒有找到? 要找的東西,你可以參考這個(gè)列表。

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

介紹了對(duì)于什么是補(bǔ)丁,以及如何應(yīng)用補(bǔ)丁于不同的內(nèi)核開發(fā)分支。

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

成為一個(gè)內(nèi)核開發(fā)者

如果你對(duì)Linux內(nèi)核開發(fā)一無所知,你可以看看Linux KernelNewbies項(xiàng)目:

kernelnewbies.org

它包含一個(gè)郵件列表,在那里你可以問任何有關(guān)內(nèi)核開發(fā)的基礎(chǔ)問題(在問問題之前先搜索一下存檔,很可能這個(gè)問題已經(jīng)被解答過了。)它還有一個(gè)IRC頻道,你可以在里面實(shí)時(shí)的提問。它還有很多有用的文檔,對(duì)于學(xué)習(xí)Linux內(nèi)核開發(fā)很有用。

這個(gè)網(wǎng)站有有關(guān)代碼組織,子系統(tǒng),當(dāng)前項(xiàng)目(代碼樹之內(nèi)的和之外的)的基本信息。它也描述了一些基本的“物流”信息,比如怎么樣編譯內(nèi)核和怎么樣打補(bǔ)丁。

如果你不知道從何處起步,但是你想找一些任務(wù)來做以加入內(nèi)核開發(fā)社區(qū),請看一下Linux Kernel Janitor項(xiàng)目:

janitor.kernelnewbies.org/

這是一個(gè)很好的起步的地方。它描述了一些相對(duì)來說簡單的內(nèi)核中需要清理的和解決的問題。和負(fù)責(zé)這個(gè)項(xiàng)目的開發(fā)者一起工作,你會(huì)學(xué)到如何令你的補(bǔ)丁進(jìn)入Linux內(nèi)核樹的基本知識(shí),而且可能會(huì)為你指明下一步的發(fā)展方向,如果你自己尚不明確的話。

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

selenic.com/mailman/listinfo/kernel-mentors

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

所有這些事情有時(shí)候很難做到。要想完美做到這些要求可能需要幾年的時(shí)間。這是一個(gè)持續(xù)的發(fā)展過程,需要很多耐心和決心。但是不要放棄,這是可以實(shí)現(xiàn)的。很多人已經(jīng)做到了這一點(diǎn),每個(gè)人都經(jīng)歷過你現(xiàn)在這個(gè)階段。

【編輯推薦】

  1. 黑客再爆Linux內(nèi)核高危漏洞 可以攻擊所有Linux系統(tǒng)
  2. 輕松獲root權(quán)限!Linux內(nèi)核連爆高危漏洞
  3. Linux內(nèi)核20天內(nèi)連爆兩高危漏洞
責(zé)任編輯:趙寧寧 來源: chinaitlab
相關(guān)推薦

2010-08-24 08:58:42

開發(fā)者

2015-09-01 09:53:04

Java Web開發(fā)者

2024-02-28 07:48:05

Rust項(xiàng)目框架

2014-04-17 10:42:50

DevOps

2015-07-22 16:08:46

OpenStack開源貢獻(xiàn)代碼

2020-03-31 09:47:04

Vue開發(fā)代碼

2012-04-11 09:26:13

內(nèi)核Linux 開發(fā)

2012-10-23 14:01:21

Yibo 客戶端已經(jīng)停

2019-06-27 10:15:46

架構(gòu)代碼項(xiàng)目

2013-07-25 17:28:02

2011-12-27 09:31:13

程序員

2024-10-31 15:22:31

安全Linux開源

2011-10-10 14:56:24

Android開發(fā)者

2012-08-27 09:31:35

創(chuàng)業(yè)程序員

2023-12-06 17:57:07

開發(fā)云服務(wù)

2014-05-22 10:43:26

移動(dòng)開發(fā)者優(yōu)秀

2014-06-18 09:55:29

iOS開發(fā)者學(xué)習(xí)Android

2016-01-21 10:58:41

Node.js開發(fā)者

2020-11-17 10:02:47

WindowsLinux開發(fā)

2015-06-05 09:15:37

移動(dòng)開發(fā)者
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 黄网免费看 | 色综合天天天天做夜夜夜夜做 | 亚洲视频在线一区 | 成人一级视频在线观看 | 日日操夜夜操天天操 | 欧美日韩一区二区三区四区 | 91精品国产综合久久福利软件 | 视频一区中文字幕 | 日韩看片| 中文字幕日韩欧美 | 亚洲国产精品久久久 | 国产japanhdxxxx麻豆 | 亚洲免费观看视频网站 | 久久久精品视 | 国产一区二区三区四区在线观看 | 午夜寂寞影院在线观看 | 一区精品国产欧美在线 | 国产99久久久国产精品下药 | 国产福利在线播放麻豆 | 嫩草研究影院 | 中文字幕第一页在线 | 成人免费视频网站在线看 | 中文字幕精品视频在线观看 | 狠狠干av| 91精品中文字幕一区二区三区 | 国产精品久久久久一区二区三区 | 一区二区精品在线 | 日本一二三区高清 | 久久精品一 | 亚洲国产一区二区三区, | 久久午夜国产精品www忘忧草 | 2一3sex性hd| 黑人巨大精品欧美一区二区免费 | 亚洲三区视频 | 欧美成人高清 | 黄色欧美 | 操久久 | 亚洲一区 中文字幕 | 九九久久精品视频 | 国产欧美三区 | 国产一级一级 |