Linux内核导航:Kconfig与Makefile的重要性

需积分: 10 1 下载量 38 浏览量 更新于2024-07-22 收藏 216KB PDF 举报
学习Linux内核是一项深入且富有挑战性的任务,而理解并掌握Kconfig和Makefile则是入门的关键。这两个文件在整个Linux内核架构中扮演着导航图的角色,使得开发者能够有效地定位和理解代码结构。Kconfig文件类似于配置脚本,它以一种灵活的方式定义了内核模块的配置选项,这些选项包括功能开关、依赖关系和帮助文本。通过阅读Kconfig,开发者可以根据自己的需求选择启用或禁用特定功能,从而了解哪些代码片段是与他们的研究目标相关的。 Makefile则是编译系统的核心,它负责根据配置决定哪些源代码文件需要编译,以及编译过程中的链接和优化选项。通过查阅Makefile,你可以追踪到驱动程序(如U盘驱动)的具体实现路径,比如在drivers/usb/storage目录下,你需要查找与storage设备交互的函数和数据结构。例如,上述提到的`configUSB_STORAGE_DATAFAB`选项表明了一个特定厂商(Datafab)的CompactFlash读者支持,这与普通的U盘驱动并不直接相关,因此,你需要进一步筛选出真正处理USB Mass Storage协议的代码。 总结来说,学习Linux内核时,不仅要熟悉目录结构,更要学会使用Kconfig和Makefile作为导航工具。通过逐个检查这些文件,开发者可以逐步理解和掌握内核的各个组成部分,从而提高代码理解和修改的效率。此外,理解这些文件的逻辑有助于你更好地参与到开源社区的贡献中,无论是维护现有代码还是开发新的模块。所以,对Kconfig和Makefile的深入研究是成为Linux内核专家不可或缺的基础。
2012-01-04 上传
译 者 序 当着手翻译这本书时,我不由得回想起开始接触Linux的那段日子。 几年前,我们拿到Linux内核代码开始研究时,可以说茫然无措。其规模之大,叫“覆压三百余里,隔 离天日”似乎不为过;其关系错综复杂,叫“廊腰缦回,檐牙高啄,各抱地势,勾心斗角”也不言过其实; 阿房宫在规模和结构上给人的震撼,可能与Linux有异曲同工之妙。“楚人一炬,可怜焦土”,可能正是因 为它的结构和规模,阿房宫在中国两千多年盛极的封建历史中终于没有再现,只能叫后人扼腕叹息;但是, Linux却实实在在的矗立在我们面前,当我们徘徊在这宏伟宫殿之前时,或许,我们也需要火炬——不是用 来毁灭,而是为了照亮勇者脚下的征途。 Linus Torvalds在我们面前展现的Linux魔法卷轴,让我们的视野进入一个自由而开放的新世界。自由 意味着自我价值的实现,开放代表着团结协作的理想,这对于从没把握过核心操作系统的中国人来说,无 疑点燃起了心中的梦想。于是,许多人毫不犹豫地走进来了,希望深入到那散发自由光彩、由众人团结协力 搭造起的殿堂。但是很快,不少人退缩了。面对这样一个汪洋大海,有的人迷惑了,出海的航道在哪里?有 的人倒下了,漫漫征途何时是尽头?我常常想,如果那时他们手中就有这本书的话… Daniel P.Bovet和Marco Cesati携手,为我们打造了这本鸿篇巨著,自此我们有了火把,有了航海图, 于是我们就有了彼岸,有了航道,也有了补给码头。不是吗,中断虽繁,但第四、六两章切中肯綮地剖析, 肯定能让你神清气爽;内存管理虽难,但多达三章细致入微的说理,一定会让你茅斯顿开。而内容的组织更 是别具匠心,每章开始部分一般性原理的描述,打破知识的局限,将每个部分的全景展现在你面前。而针对 每个知识点,落到实处的独到分析,又会使你沉迷于知识的融会贯通之中。第三版对Linux2.6的全面描述, 会使你为2.4与2.6之间的沟壑而感叹,但请放心,你曾从Linux旧版本获取的点滴依然是你前进的基石。总 之,你面对的不再是赤裸裸的代码,而是真正能雅俗共赏的艺术。 对整个Linux社区来说,这绝不是微末的贡献而已,连Andre Morton都已经指出:“内核的学习曲线 变得越来越长,也越来越陡峭。系统规模不断扩大,复杂程度不断提高。长此以往,虽然现在这一拨内核开 发者对内核的掌握越发炉火纯青,但却会造成新手无法跟上内核发展步伐,出现青黄不接的断层”。而这本 书的目的,无疑于此吻合。按照这本书指明的道路,我们可以躲过暗礁,绕过险滩,穿过逆流,勇往直前。 这也是为什么这本书总在Linux书籍排行榜中稳居前列的原因之一。 不过,除非行动,否则地图再好,也不会让人向自己的目标迈进半步。所以,在读书的同时,你还一定 要亲身实践:理解内核某部分的捷径就是对它做些修改,这样你才能越过代码本身看到内核深层机理。 Linux是一个全新的世界,世界意味着博大精深,而新或许代表对旧的割舍和扬弃,加在一起,就是要 我们在割舍和扬弃的同时还要积累知识到博大精深的地步,这容易做到吗?是的,这不容易做到。Gerald M. Weinberg在《Becoming a Technical Leader: An Organic Problem-Solving Approach》一书中总结成长为高 原-低谷模式:“成长是跳跃式的,要经过量的积累,在积累的过程中,往往要伴随着扬弃,所以常常会跌 入低谷”。面对Linux这个需要长期孜孜以求的学习对象,无疑这种震荡会加重我们的疑虑,降低我们的信 心,消磨我们的意志,使我们轻易的认为达到了自己的成长上限。 根据我们的经验,这需要系统思考来改变心智模式,最好有一个学习型组织来提供帮助:团队是学习 的最佳单位。(可以参看彼得.圣吉的《第五项修炼》,这本书值得有心改变自己,并进而改善周围世界的人一 读再读)所以,我们希望结合这本《深入理解Linux内核》,创造这样的一个氛围,一种环境。为此在 www.KernelTravel.net 建立了中文网站“内核之旅”,不但有一些有价值的资料,而且我们会把这些资料按 照学习路径组织起来,让它们真正伴随内核学习者前进。 阅读本书,需要一份耐心,更需要一份执着。当你闯过一道道难关,阅读到本书的最后一章时,会有“ 蓦然回首,那人却在灯火阑珊处”的感觉!