From linux kernel monkey log | 李莘译,转载请注明 ifanr 译文链接。
2.6.33 版内核移除了Andirod的代码。很多人不断地问我发生了什么,对于Android下一步要怎么办。这里是我对整件事情的澄清:
首先,我很喜欢Android平台。直到上周,我还每天使用我的开发手机G1。它工作良好,作为用户我很满意。另外,从技术角度我也很喜欢他。令人惊奇的是,Google仅仅使用Linux内核构建了一个可移植的和健壮的手机平台,而并没有使用”传统”Linux的任何其他东西。更加难能可贵的是,你可以 在Android系统之上安装一个”真正”的Linux镜像,两者都能正常工作而无需任何修改。
Android 也解决了手机制造商多年来遇到的问题:它创造了一个免费的Java虚拟机和统一的应用软件层,使程序可以在所有集成它的手机平台上运行。因为他它的出现, 所有现存的”Linux手机协会”(”Linux Phone Consortium” )组织都宣告终结,或者即将关闭。
出了什么问题?
发生了什么致使Android内核代码被删除? 简单的说,没有人关心代码,所以他被删除了。正如我之前的声明,开发分支的代码需要继续修改才能合并进内核主线内核树,否则将被删除。但是,这儿还有更严重的问题。Android代码不仅仅是drivers/staging/android目录下的一些驱动程序。 Android系统的正常运行,需要Google创建的一种新的内核锁和其安全模型锁依赖的核心系统中的钩子(hooks)。要写出能够在Android上执行的驱动程序,你需要恰当的使用新的内核锁,有时候还需要使用怪异的安全模型。
这意味着所有为Android硬件平台编写的驱动都不能融合进主线内核树,它们在主线内核中会编译失败。因为它们依赖的代码只存在于Google的内核分支中。因为上面这些,Google阻碍了大量硬件驱动、平台代码和主线内核树的整合。并创建了一个很多制造商现在依赖的内核分支。(译者评论:邪恶的做法,利用开源的成果谋利,而并没有回馈开源社区)
创造内核源代码分支并没有问题,几乎每一个发行版都有自己的分支。但是更糟的是,Google不把他们的代码整合进主线内核树,使编写驱动和平台代码的公司无法回馈开源社区。内核开发社区早在几年前就告诉这些公司使他们的代码合并进主线内核,以得到自动的安全修复和自动处理API变动,很多公司听从建议,内核的每次发布都包含大量这些公司贡献的代码。
但是现在他们被卡主了,Android相关平台代码和驱动不能被整合进上游系统,这迫使这些公司维护和开发周期的大幅延长。
具体要怎么做?
我真的不知道。Google没有表现出要使他们的代码向上游整合的任何迹象。一些公司想要修改Android相关接口使其向上游整合,但是这需要大得多的努力,这并不是必须的。
希望
我还抱有希望,希望Google能花时间修改他们的代码库,使其融合进上游代码,停止他们对大量嵌入式Linux硬件公司造成的巨大阻碍。
过去,我私下里提议帮助完成这个工作,现在我再次公开表态,但是我需要Google开发人员的帮助。没有他们,什么都改变不了。好消息是所有对内核/用户空 间API的修改对于Android堆栈上层所有的代码(例如应用程序)都没有任何影响,所以这些工作可以在不对全局造成影响的情况下完成。
我会在”2010Linux消费电子论坛”(CE Linux Forum 2010 conference.)上再次讨论这个问题。希望他们在会议之前改进这个问题,否则论坛将遵循长久以来的传统,由演讲者对与会者们大声控诉他们正在做的坏事。