内核版常见问题和精华贴总结(VER 0.1) [
zhuan :http://bbs.chinaunix.net/thread-1940276-1-1.html
?
內核版常見問題和精華貼總結
下面是我個人的一些總結。我學習LINUX KERNEL也才1,2年。文中難免有不對的地方,歡迎大家指正。
我的目標是寫的比較完善,然后版主可以置頂。方便新人。
現在只是第一版,還不是很全面,歡迎大家在后面補充,我會及時更新到一樓。多謝。
一、常見問題:
1、如何開始學習LINUX KERNEL:
我覺得首先要有操作系統的基本知識,比如上過課,或者看過一本操作系統方面的書。起碼要理解進程,虛擬內存,分頁,分段等這些基本概念。如果這些你都搞不懂,看后面的會更加頭疼。另外,至少要了解C語言,匯編最好也有些概念。
操作系統的書我只看過這本《Operating Systems: Internals and Design Principles》。現在已經出到了第六版。
然后看LINUX內核的書,看下面3本書,按順序看。
前面是全名,中間是版本,再后面是縮寫。如果有新版的看最新的。。
1)LINUX KERNEL DEVELOPMENT, 2ND EDITION (LKD)(注:非常好的入門書籍)
2) LINUX DEVICE DRIVERS, 3RD EDITION??(LDD)(注:很好的實戰書籍,對KERNEL HACKER一樣有幫助)
3) UNDERSTANDING LINUX KERNEL. 3RD EDITION (ULK) (注:從硬件講到上層,內容豐富,大觀念清楚)
我一般優先看英文原版書,一個是練習英語,另外一個也是英文經典的書多一些。中文的好書也有,不過我不是很了解。
上面說的總共4本書如果你都看完了,大概理解了。那么你已經可以算是高手了,論壇里的60%以上的問題基本都可以回答,或者參與討論了。
我覺得另外一個初學者經常面臨的問題就是不知道該看哪方面的書和資料。這其中一部分原因就是基礎不夠扎實。解決的辦法也是從基礎的書看起。同時在論壇上多問問。
另外,光看書也是不夠的,還要多動手實踐。剛學的時候起碼要學習下怎么編譯內核,內核模塊。然后寫一些小內核模塊啥的。或者參與些項目。
BTW:在本版頁面上面直接點“精華”,就可以看到所有的精華貼,很方便。
如果后面想做硬件相關的話,那么建議看看各種規范。比如INTEL CPU IA32-64手冊,PCI SPEC, PCI EXPRESS SPEC,ACPI SPEC等。
2、如何調試KERNEL
最常用也最方便的還是用PRINTK。具體介紹在LDD里說的很清楚。另外,新的KERNEL 2.6.2x? 之后也開始支持KGDB。還有一個方法是用QEMU或者VMWARE之類的虛擬機來調試。參考下面2個帖子:
VMWare Workstation 6.0調試Linux Kernel,竟如此方便 (作者:albcamus)
用QEMU+GDB 調試LINUX KERNEL的方法 (作者:accessory)
3、什么是虛擬地址,線性地址?
看下面這個精華貼:我理解的邏輯地址、線性地址、物理地址和虛擬地址 (作者:獨孤九賤)(注:在ULK3中也有詳細介紹)
4、系統調用是如何實現的?
在ULK3中有對INT 80和SYSENTER的解釋。不過LINUX中還有一種VSYSCALL,主要用來提高效率,適合那些只是讀取信息的SYSCALL,比如GETTIMEOFDAY. 等我找找精華貼,或者啥時總結下。
5、內核中常出現的do { } while (0)是做什么用的?
6、Segmentation Fault in Linux (作者:zx_wing)
7、關于LINUX在中斷(硬軟)中不能睡眠的真正原因
8、Linux匯編語言開發指南(zt) (轉載者:mmgg00)
9、如何看源代碼?
我一般喜歡用LXR, 常去 http://lxr.linux.no/+trees 這里看。如果你覺得前面這個網站慢的話,也可以自己搭一個LXR,或者搜下其他離你比較近的LXR. 還有很多人喜歡用SOURCE INSIGHT (SI)。不過它是個商業軟件。
二、網絡相關問題
1、基于2.6內核的《追蹤LINUX TCP/IP代碼運行》 (作者:qinjiana0786)
2、教你修改以及重構skb (作者:ubuntuer)
3、Linux內核IP Queue機制的分析 (作者:Godbach)
【FIXME:還有很多其他內容】
三、硬件相關
1、什么是總線地址?軟件如何配置硬件?APIC?
2、INTEL手冊中,APIC部分閱讀筆記 (作者:accessory)
3、寫一個塊設備驅動 (作者:趙磊. 網名:OstrichFly )(注:由淺到深,非常詳細)
4、Interrupt in Linux(硬件篇)(作者:zx_wing)
5、RTL8139網卡驅動程序分析[轉] (轉載者:Godbach)
6、改寫drivers/net/8139too.c (作者:xiongce )
7、Linux-千兆網卡驅動實現機制淺析 (作者:Minit )
四、安全相關
1、Linux下實現劫持系統調用的總結 (作者:Godbach)
2、破linux內核模塊驗證 (作者:W.Z.T)
3、Snort 入侵檢測系統源碼分析 (作者:Godbach)
4、Adore-ng-0.56源碼分析 (作者:ubuntuer)
5、新爆內核高危漏洞sock_sendpage的利用分析的討論 (作者:獨孤九賤)(注:首發于2009.8.18)
6、剖析一個由sendfile引發的linux內核BUG (作者:kouu)
五、其他
1、Linker Script in Linux (作者:zx_wing)(注:介紹內核文件是怎么連接的)
2、Linux內存:內存管理的實質 (作者:frank_seng )
3、linux內存管理報告 (作者:kendyke )
4、一個簡單文件系統的實現 (作者:goter??)
5、內核模塊中對文件的讀寫 (作者:ubuntuer)
6、說一說:關于數據傳送中 address bus 的工作原理 (作者:mik)(詳細介紹讀寫內存時跨邊界的問題)
7、關于 atomic 的話題(作者:mik)
8、基于S3C2410的Linux全線移植文檔(作者:dozec)(嵌入式,ARM)
總結
以上是生活随笔為你收集整理的内核版常见问题和精华贴总结(VER 0.1) [的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书笔记—《销售铁军》随记4
- 下一篇: 高可用性网络