Linux Kernel Development第三版英文版已经出版,目前有几个学生在做两个版本之间文字差异的校对,并插入到第二版译文中,此事繁琐而枯燥。与此同时,我们翻译组正在翻译。合作者康华和张波,是99年分析Linux内核源代码时带的第一届学生。现在的康华,已经属于大牛的行列。作为老师,不仅为他们欣慰,也为他们对Linux的默默贡献而自豪。本书在业界如雷贯耳,其原作者Robert Love,更是一个传奇人物,写作本书时还是在校大学生,追寻他的足迹,或许对我们有所启发,在网上找到早年对他的采访文字:http://www.yuanma.org/data/2007/0516/article_2603.htm
附:第二版的译者序:
Linux
最为人称道的莫过于它的自由精神,所有源代码唾手可得。侯捷先生云:源码在前,了无秘密。是的,但是我们在面对它的时候,为什么却总是因为这种规模和层面所造就的陡峭学习曲线陷入困顿呢?很多朋友就此倒下,纵然
Linux
世界繁花似锦,纵然内核天空无边广阔。但是,眼前的迷雾重重,心中的阴霾又怎能被阳光驱散呢?纵有雄心壮志,拔剑四顾心茫然,脚下路在何方?
Linux
内核入门是不容易,它之所以难学,在于庞大的规模和涉及的层面。规模一大,就不易现出本来面目,浑然一体,自然不容易找到着手之处;层面一多,就会让人眼花缭乱,盘根错节,怎能让人提纲挈领?
“如果有这样一本书,既能提纲挈领,为我理顺思绪,指引方向,同时又能照顾小节。阐述细微,帮助我们更好更快地理解
STL
源码,那该有多好。”孟岩先生如此说,虽然针对的是
C++
,但道出的是研习源码的人们共同的心声。但
Linux
源码研究的方法却不大相同。这还是由于规模和层面决定的,比如说,在语言学习中,我们可以采取小步快跑的方法,通过一个个小程序和小尝试,就可以取得渐进的成果,就能从新技术中有所收获。而
Linux
呢?如果没有对整体的把握,即使你对某个局部的算法、技术或是代码再熟悉,也无法将其融入实用。其实,像内核这样的大规模的软件,正是编程技术施展身手的舞台(当然,目前的内核虽然包含了一些面向对象思想,但还不能让
C++
一展身手)
那么,我们能不能做出点什么,让
Linux
的内核学习过程更符合程序员的习惯呢?
Robert Love
回答了这个问题。
Robert Love
是一个狂热的内核爱好者,所以他的想法自然贴近程序员。是的,我们注定要在对所有核心的子系统有了全面认识之后,才能开始自己的实践,但却完全可以舍弃旁支末节,将行李压到最小,自然可以轻装快走,迅速进入动手阶段。
因此,相对于
Daniel P. Bovet
和
Marco Cesati
的内核巨著《
Understand Linux Kernel
》,它少了五分细节,相对于实践经典《
Linux Device Driver
》,它多了五分说理。可以说,本书填补了
Linux
内核理论和实践之间的鸿沟,“一桥飞架南北,天堑变通途”。
就我们的经验,内核初学者(不是编程初学者)可以从这本书着手,对内核各个核心子系统有个整体把握,包括它们提供什么样的服务,为什么要提供这样的服务,又是怎样实现的。而且,此书还包含了
Linux
内核开发者在开发时需要用到的很多信息,包括调试技术、编程风格、注意事项等等。在这消化这本书的基础上,如果你侧重于内核的了解,可以进一步研究《
Understand Linux Kernel
》和源代码本身;如果你侧重于实际编程,可以研读《
Linux Device Driver
》,直接开始动手实践。