相爱相杀的CP——初谈Android Kernel与 Linux Kernel
当Linux社区决定将安卓踢出Linux Kernel时,他注定犯下了一个大错。本是同根生,相煎何太急。这次我们来简单聊聊这两对相爱相杀的CP。
话说什么是Linux Kernel呢?Linux Kernel,就是Linux操作系统的内核,是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客 Linus Torvalds为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些Minix 黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。Linux是一个一体化内核(monolithic kernel)系统。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。设备驱动程序可以完全访问硬件。Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置,并在系统运行期间可直接装载或卸载。
Linux Kernel的强大之处在于开源,全世界的工程师都可以获取它的源码,并且帮助改进。当然,为了防止随意乱改乱发布,其核心的开发和规范一直是由一个叫Linux社区的组织控制着,好似最高权力机构。他们掌握着实际修订和发布的权利。安卓系统也正是使用了Linux Kernel作为基础开发的。但与传统的应用不同,为了适应手机的发展,Google自身在不断修改Linux Kernel以达到匹配自己手机的目的,其中之一是Google的Android开发团队采用自主方式解决能耗问题。在忙于修改的同时,他们并没有和Linux社区进行很好的沟通。大佬不开心,后果很严重,于是2009年年末,Linux社区正式将Android驱动程序剔出Linux内核。
Linux社区的气愤是有道理的,举个例子。某国的部分人员决定起义,他们明确制订了作战计划和未来预期,信心满满的向前冲着。但是由于实力较弱,一直不痛不痒。直到某天,一个大财员团说要支持并加入起义。大家都很开心,但大财团加入进来后,重新制订了作战计划和未来预期,往不同的方向开始发展。于是乎两者开始决裂,大财团最终走了,还带走了一部分原先的骨干成员,向着自己的目标起义。而原先起义的队伍由于大财团的撤离,力量反而更弱了...
Linux社区经过缜密的思考后,意识到问题的严重性了,于是开始试图让安卓再次回归到Linux大家庭中。在多方的努力下, Linux社区最高发言人托瓦兹于2014年10月份的内核峰会上,宣布“Android内核代码应当整合到主流内核中”,并因此创建了Android主流化项目(Android Mainlining Project)。尽管Android团队和Linux团队有分歧,但Android从来没有面临因违反GPLv2而遭到Linux团队起诉的风险。托瓦兹曾表示,有关Android违反GPL的说法是“完全错误的”。托瓦兹表示,“尽管还有许多工作需要做,但Android和Linux最终将回归相同的内核,这一工作在4-5年内无法完成。”克罗赫曼当 时也表示,问题之一是,“Google的Android团队人员少,任务紧,资源有限,从长期来看,与我们合作有助于他们降低成本”。托瓦兹说,“我们只是过去一段时间的方向不同,从长期来看我们还会合二为一,所以我没有什么好担心的。”
被打脸,很无奈,但也很真诚虚心,能改就是好孩子。目前,Android代码可以在最新的Linux 3.3中编译,而且能够运行。但克罗赫曼指出,Android的WakeLocks尚未被整合到主流内核中。当然,我们也会持续关注这对相爱相杀的CP。