1,是否具备最基础的知识背景?
     你能想象大字不识的人能读懂文章吗?还是从识字开始吧!
     阅读Linux也是一样!那么阅读Linux需要哪些前体条件呢?我觉得大体可归结如下:
     1)明确的目的:没事还是别招惹linux了,别的好玩的多得是,linux并不像你想象的那么有趣,过程是痛苦的。不信?打个比方,把你一个人丢到太平洋中央,除了一个救生圈什么都不给你,你怎么回家?此刻你最想的是什么?食物?水?当然,还有更多是吧?比如一个指明方向的指南针或地图!不好意思,你得自己摸索,粗略的建议到是有的。
     2)强烈的热情:所谓强烈即足够支撑你度过最迷茫无助的那段时期。真正的牛人是神龙见尾不见首的,很难有机会向他们讨教,绝大多数时候你只能靠自己。没有足够的热情也没关系,那就靠强大的自控力坚持吧。
     3)自信+思考: 没有人会相信你能成功,失败的是大多数,那些成功了的你看不见,那些失败了的会软化你。自信点,狂妄点,这么伟大的事业是留待你来完成的。你光拼命地学是没有用的,linux太庞大了,你得把握好节奏,不能太慢,太慢了你的热情持续不了那么久;不能太快,太快了你咀嚼不出精髓,太快了你的思考不够可能会被碰到的困难击倒。
     4)Open your mind! Yes,你得像我这样,把自己的成长记录下来。为了你自己,真的,linux太庞大了,你得时常回头看看!为了别人,你要记住你当初被抛弃在太平洋中间的孤独无助,如果你不至于太自私的话,linux是开放的,把自己贡献出来吧,为那些当初像你一样迷茫无助的人照亮前行的道路。
       以上说的是品质方面的,肯定不全面,但是挑我觉得最重要而又想到了的说了,大家可以补充。光有优良的品质是不够的,不识字依然看不懂文章!所以,你起码还得具备以下这些知识背景:
      1)几门专业课你得起码有点感觉:操作系统、计算机组成原理、计算机网络、数据结构、C&汇编。学得不精没关系,在阅读linux的时候会逼着你好好学的。是的,等你终于熬过来的时候,你的专业已经学得很牛了!高兴吧?应该能让你多持久一会儿了。
      2)学linux却不会用linux?你是在开玩笑吗?那太可怕了,几乎可以肯定你是不会成功的。最佳的学习材料是源码+书籍,最佳的学习方式是阅读源码+修改编译,是的,如果你发现你可以不用编一行代码,那么你肯定错了!赶紧装一个linux操作系统,熟练地配置使用它再开始我们伟大的征程吧!
      3)起码的工具你得会用吧!不然你怎么看代码?你以为会有整本的都是代码的书?幸好没有那种书,不然你会晕掉的!起码的工具是指VC和Source Insight。工具总是有很多的,不过会这两样就可以开工了。
      所需要的就这么多了,比起linux所能给你的这点应该不算多。当然了,还是要强调下,必要的 C&汇编+intel硬件基础 肯定是要的,而且越好越好,是的,越好越好。
 
2,需要哪些材料?
     其实在上一点已经零星都涉及到了,这里在总结如下:
     1)阅读材料:内核源码 + 《linux内核设计与实现》
       这里有几个问题。
       首先,内核版本的问题。最新2.6稳定版的linux内核代码量已达到600万行的规模,你知道全部读完得多久吗?反正我是不知道。一般是建议入门从0.11版开始,其代码量只有一万多点,入门之后可以根据需要在选择更高版本的进行学习。但并不是说就不能从较高版本开始,从高版本开始的就要找准一个切入口,就其中某一部分进行研究,比较流行的是usb驱动这一块,网上这方面的资料比较多。还有的就是从两极端开始,像我这样,呵呵,不过不推荐大家也冒险这样做。
       其次,入门的书籍,还是有些的,比如赵炯老师的那本,但公认《linux内核设计与实现》这本是最适合引导入门的。为什么只推荐这一本,因为这篇文章只负责入门,其他的入门后大家自会知晓。
      2)辅助工具:Source Insight
       这款工具是普遍认可地还用,也确实好用!如果是阅读0.11版的linux内核,那么用VC版就OK了,网上有VC版的内核,直接打开文件中的工程空间文件就可以了,经编译验证是正确的。
      3)linux操作系统:版本很多,如Redhat、Ubuntu比较大众化,适合初学者使用,本人使用的是Fedora 13。各种操作系统大家都可以从网上免费获得,在虚拟机中配置好就可以了。不会使用linux操作系统无论如何是说不过去的。
     
3,就这么贸然闯进去?你总得先想点什么吧?
       你可以再次想象一下:当你独自置身于茫茫大海上,除了有限得很的提示和救生圈,你如何成功抵达海岸?你最先要思考的是什么?
       是的,方向!你得确定前进的方向,这直接关乎你的生死存亡(成败)。那么进入linux神秘地带的方向有哪些呢?
      1)加载初始化。从开机启动到引导加载操作系统再到基本的初始化,遵循这一过程进行linux的探索。比较适合有硬件基础的入门者。
      2)系统调用。依照操作系统对各子模块的调用进行学习,比较适合对操作系统工作原理有一定认识的入门者。
       你也可以向许多人选择的那样,专门选定一块进行钻研,比如usb驱动,涉及到其他模块的时候再扩展开来,不过始终以选定的模块为核心。不管你选择哪种方向,你都必须首先对linux内核源码的组织结构有一个整体的认识,是的,就是你看到的那些树状结构的文件。你得知道每一文件里面放的是什么东西,相互之间都有些什么关联。阅读linux反复需要强调的一点是,必须首先建立整体的认识再进行!当你一旦踏入linux的神秘地带,真正能帮助你的就只有你自己了,兴许还有Makefile和Readme这两个文档,好好利用它们,它们是你前进的向导!
 
4,那么,我们能要求更多吗?
       是的,那么多前辈,有的突围出去了,有的倒下了,有的仍在坚持,我们能从中获得些有益的建议或者指导吗?当然,无论成功的还是失败的,经验于我们总是×××的。但不要抱太大希望,因为网上真正有价值的经验不多,大多数的都不具有借鉴性。建议去网上了解以下方面的经验,别的还是不要浪费精力了,早早踏入征程吧,要知道拖得越久成功的希望越渺茫!
       1)关于从何处开始阅读的
             赵炯老师的那本《Linux内核完全注释》上有提到,可以参考。
       2)关于linux内核代码结构的
     就这么点,别的都是重复又重复,copy又copy。
 
5,英语!
       是的,英语!尽管我并不讨厌,甚至还有点喜欢英语,但我知道大多数的你们对它可是深恶痛绝。对总是把英语置于首要位置,这点我也是无比反感的。天哪~我们伟大的汉语颜面何在!所以我决定把它放在最后,只是顺带提一下。 
       不过英语真的很重要,英语本身是无罪的,有罪的是扭曲英语的人!所以,征服它吧!它会帮助你更好地征服linux!
 
小结:
       首先,希望对大家有所帮助!
       其次,赶快开始吧!
       再次,Just do it !!!