Re: [問題] 學Kernel方法

作者: bendog (bendog)   2015-01-04 01:16:35
※ 引述《shihyuyao (shihyuyao)》之銘言:
: 請問一下學習Linux kernel 前需要先學 Linux 系統程式嗎?
: 如果我直接學kernel 會不會有什麼困難度?
: 我有唸過恐龍書, 基本的 process ,thread 也有概念只是沒有寫過很多Linux 系統程式
: 網路看到有人建議學kernel 可以從 linux driver 入門
: 先看 Linux Device Drivers, 3rd Edition
: 這樣學方式對嗎?
: 如果從 kernel 書入門先看
: Robert Love 在 Linux Kernel Development (3rd Edition) 是嗎?
: 還有看到前面PO文可以用Qemu + kernel + gdb 學kernel 這樣效果好嗎?
: 謝謝
可以先決定要看哪一部分,例如memory, process, network, file system. 我是從netwo
rk 進入。看書搭配linux 2.6 source code. 通常英文書都只講個大概,如果要細講sour
ce code 的話,簡體書比較多。 看kernel 先專注自己想知道的部分,比如封包在ipv4
層的接收處理,其實稍微想一下就是fragment, option, 拔header, 往上送的處理。但是
會看到spin_lock, spin_lock_bh ... , timer, kmalloc, softirq, netlink 等一堆不
是主要ipv4層 概念的程式碼。我會選擇性忽略一些像是timer 的做法只專注我想知道的
地方,我只要知道哪些API 可以對imer做處理。當然也可以trace timer code, 但就偏掉
原本想知道的部分。我覺得入手不要直接看device driver 。Driver 有很大一部分是處
理hardware 的程式碼,只有一小部分是銜接linux kernel. 你的是動機是想學linux ker
nel ,但沒有特別針對哪一部分的話,可以先看 kernel context 有哪些,比如 hardwar
e irq, softirq, kernel thread. 然後是spin_lock, rcu 的實現,這些在kernel 蠻長
看到的。另外,我是用gtags/htags 來trace code 的。
作者: mshockwave (夏克維夫)   2015-01-05 08:50:00
推!
作者: hl4 (Zec)   2015-01-05 22:28:00
http://eudyptula-challenge.org/ 有人玩過這個嗎?
作者: wgst88w (清楚明「熙」)   2015-01-06 12:00:00
樓上那個Challeng表示國外真的有人已經注意到這個問題:
作者: fyon (單兵徒手基本教練)   2015-01-09 21:21:00
2F的那個挑戰蠻有趣的,雖然小弟也是新手,但寫信去挑戰了

Links booklink

Contact Us: admin [ a t ] ucptt.com