Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103987
  • 博文数量: 27
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-26 15:43
文章分类

全部博文(27)

文章存档

2011年(1)

2010年(8)

2009年(18)

我的朋友

分类: LINUX

2010-05-05 09:49:56


内核版常见问题和精华贴总结

下面是我个人的一些总结。我学习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个帖子:

(作者:albcamus)

(作者:accessory)


3、什么是虚拟地址,线性地址?

看下面这个精华贴: (作者:独孤九贱)(注:在ULK3中也有详细介绍)

4、系统调用是如何实现的?
在ULK3中有对INT 80和SYSENTER的解释。不过LINUX中还有一种VSYSCALL,主要用来提高效率,适合那些只是读取信息的SYSCALL,比如GETTIMEOFDAY. 等我找找精华贴,或者啥时总结下。

5、


6、

7、

8、

9、如何看源代码?
我一般喜欢用LXR, 常去 这里看。如果你觉得前面这个网站慢的话,也可以自己搭一个LXR,或者搜下其他离你比较近的LXR. 还有很多人喜欢用SOURCE INSIGHT (SI)。不过它是个商业软件

二、网络相关问题

1、 (作者:qinjiana0786)

2、 (作者:ubuntuer)

3、 (作者:Godbach)

【FIXME:还有很多其他内容】


三、硬件相关

1、

2、 (作者:accessory)

3、 (作者:赵磊. 网名:OstrichFly )(注:由浅到深,非常详细)

4、(作者:zx_wing)

5、 (转载者:Godbach)

6、 (作者:xiongce )

7、 (作者:Minit )



四、安全相关

1、 (作者:Godbach)

2、 (作者:W.Z.T)

3、 (作者:Godbach)

4、 (作者:ubuntuer)

5、 (作者:独孤九贱)(注:首发于2009.8.18)

6、 (作者:kouu)


五、其他

1、 (作者:zx_wing)(注:介绍内核文件是怎么连接的)

2、 (作者:frank_seng )

3、 (作者:kendyke )

4、 (作者:goter  )

5、 (作者:ubuntuer)

6、 (作者:mik)(详细介绍读写内存时跨边界的问题)

7、(作者:mik)

8、(作者:dozec)(嵌入式ARM



最后:感谢各位原创作者和转载者的辛勤劳动。

(UPDATE: 1.16.2010.  加入了作者或者转载者的名字。有些是集体讨论贴,没有加。)
(UPDATE: 1.28.2010.  加入了MIK老兄的2篇)
(UPDATE: 2.7.2010.    更改了超级连接格式)
(UPDATE: 4.29.2010.  加入五.8 )
阅读(1130) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~