如何精简linux内核精简

任桥伟 的BLOG
twitter: @fudan_abc镜像:blog.csdn.net/fudan_abc
用户名:任桥伟
文章数:22
评论数:30
访问量:61737
无忧币:20
注册日期:
犹自忆起多年以前一位前辈训导时的箴言:今天的必然正是由之前一系列的偶然所决定的。过去的某年某月,我偶然初识Linux就身陷其中,至今仍找不到出去的路,而正是这次乃至之后的多次偶然相联合,从而决定了今日的我要在此写下这些话。那么,当您偶然地拿起这本书,偶然地看到这段话,您是否会问自己:这样的偶然又会导致什么样的必然?
在6月份做过一次《高效学习Linux内核》的presentation,下面是前面的一部分内容及讲义,或许对大家有用吧。至于剩余的,因为和之前博客中的部分文章内容差不多,就不贴了。
1992年,那是一个春天。不过其实1991年又何尝不是一个春天呢,因为正是在那一年,Linux诞生了。又因为开放源代码的缘故,十几年来Linux是越来越火,熊熊火焰也烧到了华夏大地。诸多高校开始开设Linux相关的课程,诸多企业开始招聘Linux相关的人才。市面上关于Linux的书籍也层出不穷,而这其中大致分为两类,一类是应用方面的,比如介绍如何组建各种服务器啊,另一类是内核方面的,主要都是对内核源代码的进行分析,这方面的书籍则以《Linux设备驱动程序》和《深入理解Linux内核》为经典代表。而从眼下国内的人才市场来看,懂Linux内核的找工作肯定不用发愁。事实上,可以不夸张的说,当代大学生,如果能够看完以上这两本书,并且能够看懂,那么在北京在上海在深圳这些一线城市,很容易就能找到一份体面的技术类工作。
欣闻在SB会试运行期间,参观的上海市民情绪非常稳定的,很好很舒服的展示了自己的风采。于是我们要在这里要反思一下,为什么内核的API就不能同样的稳定?
对新人来说,在众多的发行版中选择一个是一件很让人头痛的事情,还是那句话:所有的痛苦都来自选择,所谓幸福,就是没有选择。这里介绍几种挑选的方法以供参考。
掌握了这些潜规则,我们在研究某个子系统时,就可以获得初始化函数的执行顺序,并按照该顺序使用韩峰同志对待日记的态度进行深入的分析。
朱德庸在《关于上班这件事》里说,要花前半生找入口,花后半生找出口。可见寻找入口对于咱们这一生,对于看内核代码这件事儿都是无比重要的。
首先感谢国家。其次感谢上大的钟莉颖,让我知道了大学不仅有校花,还有校鸡,而且很多时候这两者其实没什么差别。最后感谢清华女刘静,让我深刻体会到了素质教育的重要性,让我感到有责任写写子系统的初始化。
早上上班坐地铁要排队,到了公司楼下等电梯要排队,中午吃饭要排队,下班了追求一个女孩子也要排队,甚至在网上下载个什么门的短片也要排队,每次看见人群排成一条长龙时,才真正意识到自己是龙的传人。那么下面咱们就说说队列(链表)。
设备模型之外,对于驱动程序的开发者来说,有三样东西是不可缺少的:第一是协议或标准的spec,也就是规范,比如usb协议规范;第二是硬件的datasheet,即你的驱动要支持的硬件的手册;第三就是内核里类似驱动的源代码,比如你要写触摸屏驱动的话,就可以参考内核里已经有的一些触摸屏驱动。
&&页数 ( 1/3 )
一周热赞排行
51CTO推荐博文2009年7月 硬件/嵌入开发大版内专家分月排行榜第二2009年6月 硬件/嵌入开发大版内专家分月排行榜第二2009年1月 硬件/嵌入开发大版内专家分月排行榜第二2008年5月 硬件/嵌入开发大版内专家分月排行榜第二
2009年8月 硬件/嵌入开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。您所在的位置: &
Linus在日本:漫谈Linux 3.0,内核精简及嵌入式
Linus在日本:漫谈Linux 3.0,内核精简及嵌入式
在最近的LinuxCon大会日本站,Linux内核稳定分支的维护人Greg Kroah-Hartman和Linux之父Linus Torvalds进行了一次访谈。这次访谈的范围很广,涉及到了很多内核开发和用户社区的有趣问题,如Linux 3.0,Linux内核臃肿的问题,嵌入式开发的问题,许可协议的问题,等等。
Linus是出了名的不喜欢在公共场合演说,所以他出现在大会上比较少见,也无迹可寻。在LinuxCon大会日本站,Linus回答了Greg Kroah-Hartman(译者注:Greg Kroah-Hartman,他是Linux内核稳定分支的维护人)的提问。这次访谈的范围很广,涉及到了很多内核开发和用户社区的有趣问题。
开场第一个话题早在预料之中。下一个内核版本为什么要切换到3.0?Linus说,这个是因为目前的版本号太长太复杂了。当前的内核版本是2.6.x,Greg如果发布一个稳定版本,就变成2.6.x.y。如果发行商再添加他们自己的版本号,那就变成5个数字,这就比较难看了。即便如此,这个版本号规则也用了八年。当前版本号中的&2.6&已经没有任何意义了。
Linus说,以前,主版本号的变化代表了一些重要里程碑的实现。1.0内核第一次支持网络,1.2加入了对非x86体系结构的支持,2.0加入了&勉强能用&的对SMP的支持,等等。我们习惯于认为,主版本号的提升就必须伴有重大功能的实现。但是,在2.6.x时代,我们不再因为功能实现而发布版本。当前的开发模式工作得很好,但是它使2.6.x的版本号命名规则变得模糊不清。现在马上要到Linux内核发布的二十周年了,这是一个好机会去说,&够了&。所以Linus就这么做了。
3.0也不会一直延续下去,甚至不会延续到30周年的时候。Linus说,他预计会演进到3.20左右。
Linus指出,有些人认为,3.0意味着该加入一些重大的新功能了(或移除老的代码),但事实不是如此。这只是一个数字的变化,没有其他意思。他说,&一直保持内核的稳定&这种开发模式工作得很好,所以不会改变。Greg对这种变化很高兴,他送了Linus一瓶威士忌以示感谢。他们先是争论了要不要当场打开这瓶酒(Greg还带了纸杯,以防万一),后来决定最好先完成这次讨论再说。
Greg问:最近的内核改动中,你最喜欢哪些?Linus说,他倾向于喜欢枯燥乏味的功能,那些东西一般人都不会注意到。性能的改进,他举了&缓存伸缩性(cache scalability)&的例子,这个不会改变用户接口,只是使一些旧代码运行得更快。
功能臃肿?
是不是如Linus在2009年所说,内核的功能有点臃肿?Linus回答说,内核确实太大了,在他20年前用来开发内核的机器上,很有可能无法运行。但现在,就算手机也远比老计算机强大,所以没人会真的在乎这个。内核一直在变大,但是这种增长是必要的,它满足了当前的硬件和用户的需求。
关于那些只是为了好玩而加入的功能&&这些新东西的研发,严格来说,都不是由硬件的需求来驱动的。现在我们还能加入这类功能吗?Linus说,当然还有这样的开发人员,他们在做一些目前没人用的功能,他们看得更远,提早了大约五年。有时候,他们会成功,有时候会后悔加入这些代码。Linus说他越来越坚持这样的观点,只有当一个功能真正有人用的时候,他才会考虑合入这个功能。
Greg问了&控制组(control groups)&,提到很多内核开发人员反对这个功能。Linus回答说,&控制组&一开始没多少人用,但现在有很多人在用。&控制组&一开始是为了某些特定的服务器而加入的,当时几乎没有其他人感兴趣。开发人员不喜欢这个功能,因为它使Linux整体框架变得更复杂。但这个功能逐渐在其初始用户之外找到了知音,最终成为一个成功的功能。
对称多处理(SMP)也是这样,一开始没有多少人用。它是一块很大的功能。现在我们看到了对称多处理运用在各种板子上,甚至手机上。Linus说,这表明了Linux的一个核心优势:我们在各种平台上使用同一个版本的内核。他说,没有其他人能做到。他们倾向于区分小系统内核和大系统内核&&比如iOS和Mac OS。Linux不会这么做,比如,从来没有专为嵌入式系统准备的瘦身版内核。因为在嵌入式系统这个领域,完整的内核也适用。Linux在嵌入式领域非常成功。
嵌入式系统、统治世界、以及下个二十年
继续嵌入式系统的话题。Greg问了关于最近对于ARM内核的争吵。Linus说,这个领域的开发人员有一点点狭隘,他们只解决他们自己关心的问题,不干其他的。这会导致一些混乱,但他很高兴看到事情有所进展。在他和其他人的推动下,ARM开发社区开始响应。Linus认为,3.0内核会是史上第一个ARM代码不增反减的版本。嵌入式开发人员过去只会考虑他们在用的小系统,而不会顾及整个Linux的生态系统,但情况正在改变,这个社区也在成长。
很多年前,Greg说过,Linus曾经谈过Linux&统治世界&的目标,并且应用程序的数量将是达成这个目标的关键。真有其事吗?Linus回答说,过去还有这么点想法,现在淡然了。现在我们已经有大量的应用程序了。他也不再开这个玩笑,只是为了好玩罢了。
目前,我们在各个领域都做得很好,除了传统的桌面应用。这个有点讽刺意味,因为Linus最初开发Linux就是作为桌面应用的&&他希望它能在他的桌面系统上跑起来。现在该有的我们都有了,包括很多应用程序,但是桌面系统市场是很难进入的,因为用户习惯很难在一朝一夕改变,我们只能说在将来的某一天能实现这个目标。
在内核中,我们还能做什么来推进这个目标的实现?Linus回答说,他也想过这个问题,但是他真的不知道。内核已经做了很多的工作来支持桌面应用场景。毕竟内核开发人员平时也拿Linux做桌面系统,所以他们很清楚目前的情况。但是要定位目标市场,开发一个完整的产品,这还是要依靠发行商。
Greg提到,二十年如一日地为同一个项目工作,实在是有点漫长,Linus有没有想过是否要继续下去?Linus回答说,他真的很喜欢专注于一件事情,他不喜欢同时承担多个任务。他真的很高兴他能把这件事做好,他从来没预料到这件事情要干这么久。当被问道是否会再干二十年的时候,Linus说到那时候他岁数已经很大了。总有一天会有充满活力的年轻人出现,并证明他也能做好这件事情,那时候就意味着Linus要隐退了。
我们如何保持内核的与时俱进?Linus说,与时俱进不是问题。UNIX存在都已经40年了,还是和过去一样能胜任当前的任务。Linux再过20年也是如此。但我们会持续地演进。他很不愿意看到Linux进入一种维护的状态,不再开发重要的新功能。
光辉岁月、挑战、以及许可证
一位与会者请Linus描述一下他过去20年中最值得回忆的时刻。Linus回答说,真没有。Linux内核是在长时间内,依靠无数开发人员一点一滴的构思而形成的。Linux内核的历史上没有惊天动地的时刻。Linus接着说了一个他无法忍受的,关于技术产业的观点:人们总是谈论&创新&和&高瞻远瞩&,总是认为有这么一个宏伟的构想,能毕其功于一役。但现实世界不是这样的。实际上没什么高瞻远瞩的构想,有的只是很多好主意,这些好主意在当前看起来都不能改变世界,但是在经过辛勤的耕耘后,它们会变成伟大的事物。
他承认确实有一些很有意思的时刻。回顾将近二十年,Linux从一个个人项目变成了一个大项目,大到很多为之工作的成员他都不认识,这个时候,他意识到Linux不再是他个人的玩具。这里面有很多激动人心的事。甲骨文(Oracle)宣布支持Linux,算是其中之一。但归结起来,最重要的还是坚持和千万人的努力。
还有一个人问,网页应用最近越来越成功,这是否意味着Linux已经走到头了?Linux回答说,这种向浏览器靠拢的趋势,反而对Linux有利。曾经有很多特定的应用,只能在Windows下用,比如银行类应用。现在这些都消失了。当应用程序能在浏览器中跑时,底层的操作系统就不重要了,关键看技术、许可证、价格&&而这些都是Linux的优势。
下一个问题是:你对Ubuntu满意吗?Linus建议Greg来回答这个问题效果更好(译者注:Greg曾经炮轰过Ubuntu)。他接着说,Ubuntu采用了一种不同的开发方式,并且取得了很有意思的成果。他们这种方式以用户为中心,而不是技术,有这样一个发行商挺好。用这样一种方式,Ubuntu已经很成功了,向其他发行商展现了一片被他们所忽视的市场。Greg补充道,他的主要关切是希望看到内核社区在壮大,一切都在向好的方向发展。
Linus处理过的最棘手的技术问题是什么?Linus回答说,他面临的最大问题不是技术方面的。技术问题早晚都能解决。有时候我们会作出错误的决定,但是时间一长,这些问题肯定能被纠正过来。如果说我们有严重的问题,那就是硬件开发商提供的文档和帮助不够多。某些硬件开发商不仅拒绝帮助我们来支持他们的硬件,还会故意捣乱。Linus说,这使他很难受,不过情况在慢慢变好。
真正棘手的事情,是协调全世界那么多开发人员和公司。在决定哪些代码应该合入这个问题上,有时候会有重大的分歧。把Linus搞得睡眠不足的,是人和政治,不是技术问题。人与人之间的交互,有时候会使他很难堪。我们也能解决这些问题,但是解决方案会使人在一段时间内产生厌恶感。
Linus说,linux-kernel邮件列表以直言不讳闻名。有时候对于想参与的人来说,经常会被浇冷水。这里需要澄清一下,大家都应该诚实地告诉别人,自己是怎么想的。如果你在网上含糊其辞,别人很难搞懂。这会导致开发人员花费多年的时间来做别人根本不喜欢的功能。Linus说,长期来看,一开始就说不,并且让别人知道,这样会更好。当然,如果最后证明我们错了,我们也会承认。
最后的问题是关于通用公共许可证(GPL):他对这个许可证还满意吗?Linus说,他仍然很满意通用公共许可证第二版(GPLv2)。他曾经自己创建了一种许可证,以禁止商业用途。但事实马上证明了这会使发行商和其他人更难生存。他说,所以他一直很满意切换到通用公共许可证,这是一个公平而成功的许可证。他觉得没有必要去扩展这个许可证(或升级到第三版(GPLv3))。他说,这个许可证工作得很好,为什么要改变?
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
SELinux旨在提高Linux系统的安全性,提供强健的安全保证,可防御
那些由“补丁周二”引发的大麻烦已经成为传说,但却依
日前,微软宣布 Windows 8.1 企业预览版开放下载,很
《Linux运维趋势》是针对 Linux/Unix 系统运维人员的
本书提供了.NET框架下C#编程的详尽指南。书中详细介绍了.NET框架中的核心概念、使用GDI+编写高级用户界面、多线程程序设计、使
51CTO旗下网站&&&&最精简的linux内核说明,Linux内核入门必读
最精简的linux内核说明,Linux内核入门必读
最精简的linux内核说明,Linux内核入门必读
若举报审核通过,可奖励20下载分
被举报人:
jiangyl2012
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
操作系统下载排行

我要回帖

更多关于 如何查linux内核版本 的文章

 

随机推荐