0. 跟著專案走;
1. 學會用、熟練用linux系統;
2. linux kernel development.
3. understanding the linux kernel.
4. linux device driver.
5. 找乙個感興趣的子系統研究,認真研究**,這裡的建議是可以看提交的每個change。比如網路子系統:understanding linux network internels.
「嚴謹而細緻的仔細分析它的**,不懂的地方就通過社群、郵件列表或者直接發email給maintainer請教等途徑弄懂,切勿得過且過」。
「通過kconfig與makefile定位目標**」。
6. 融入社群做貢獻……
堅持!堅持!!堅持!!!
參考:以下**:
1. 了解作業系統基本概念。如果不會,可以學習《作業系統:設計與實現》andrew s.tanenbaum 寫的那本。以minix為例子講解作業系統的概念。非常推薦。
2. 有了作業系統的基本概念以後,可以了解linux的機制了。推薦《linux核心設計與實現》robert love 寫的。這本書從概念上講解了linux有什麼,他們是怎麼執行的。這本書要反覆認真看透。
3. 有了linux核心的了解,還需要具體研究linux核心原始碼。最經典的就是《深入理解linux核心》daniel p. bovet 寫的。學習這本書的時候,要對著核心**看著學。這本書學起來相當費力了,那麼多多**要研究。不過這本書如果學明白了,恭喜你,linux核心你已經很熟悉了。
4. 如果要開發裝置驅動,可以學習《linux裝置驅動程式》o'reilly出版社的。這本作為驅動的入門是很好的資料。另外還有一本《精通linux 驅動程式開發》也是不錯的教材,可以參考著看。學習驅動,免不了要學習一些硬體的協議和資料,研究哪個就找到相應的硬體文件,把硬體的工作原理搞明白。這些就不細說了。
5. 網路部分,學些linux網路部分就學習《深入理解linux網路技術內幕》。這本書把linux的網路部分講的非常清晰透徹。但是通常不做這方面的工作研究,也不用研究這麼深,畢竟現在國內相關職位較少。
6. 現在linux相關的工作,多集中在一些嵌入式開發領域,arm,mips等,要學習以下這些體系架構的的資料,了解cpu的設計和工作方式。arm就看對應的晶元手冊,講的很細緻。mips就看 《see mips run》,有一二兩版,兩版內容有些差異,推薦都看。
7. 補充一點經驗。不要認為linux很龐大,很複雜,就覺的很難學。任何東西認真學下來都是能學會的,看你的恆心和毅力了。另外,不要走彎路,不要看市面上講什麼linux0.11的那些書,直接學你要學的東西。就像學c語言看什麼譚浩強一樣,彎路走了,力氣沒少花,還嚴重影響學習效果。
你問的核心,多給你說幾句應用程式設計,有時候經常會需要的:
1. 學習linux應用程式設計,建議看《unix環境高階程式設計》,把裡面的例子都做一遍,會對整個linux程式設計有系統都認識。
2. 針對linux,有本 《linux系統程式設計》,學完上一本,這本很快看一遍就懂了。主要是針對linux具體懂一些內容,講的挺全了,很實用。
3. linux網路程式設計,系統的學習一下《unix網路程式設計.卷1,套接字聯網api》,基本上網路應用相關的程式就都沒問題了。
這些內容,你分幾年時間,分步計畫學習,就會成為linux高手了。
Linux核心學習
交叉工具鏈 核心相關知識 linux系統的構成 使用者空間 核心空間 思考 為什麼劃分為兩個層次?目的其實是為保護作業系統,防止應用程式的異常導致作業系統崩潰。核心空間與使用者空間是程式執行的兩種不同狀態,通過系統呼叫和硬體中斷能夠完成從使用者空間到核心空間的轉移。那麼linux的核心由哪些構成呢?...
linux 核心學習
linux核心獲取 官網 linux作業系統的核心是模組化,可以使用lsmod命令檢視核心模組,下面展示已載入系統的模組 root 172.16.0.55 vendor composer test lsmod module size used by nfnetlink queue 8111 0 nf...
linux 核心學習(2)
linux核心原始碼樹大體結構 由於linux的原 持續在變化,所以不可能給出太詳細的內容,只能指出乙個特殊的驅動大概會出現在什麼地方。makefile 這是整個的原始碼樹的最頂層的makefile。它定義了很多的有用的變數和規則,如預設的gcc編譯標誌。arch 所有的特殊的體系結構的 都在這個目...