无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3335|回复: 5
打印 上一主题 下一主题

Android、Linux和硬件厂商

  [复制链接]
跳转到指定楼层
1#
发表于 2018-9-12 21:40:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转:Android和Linux的关系  https://blog.csdn.net/qq_2887712 ... tionNum=2&fps=1



都说Android的底层是Linux Kernel,但是具体有什么区别我在网上找来找去都没找到。但是有幸在一本介绍Cortex-A8的嵌入式书上面写了这几段话让我理解了一些她们之间的区别。

为什么Android的驱动不开源
  因为Linux Kernel的版本是GPL,在此版本下,硬件厂商都希望自己的硬件能再Linux Kernel下运行,此时就必须使用驱动程序。但是如果把驱动程序的源代码公开,就等于公开硬件规格,这是广大硬件厂商所不能接受的。所以硬件厂商只提供编好的驱动程序,而不提供原始代码。

  Google想了一个办法,它把驱动程序移到一个它自己定义的“userspace”中,就是让驱动程序在Linux Kernel上面运行,而不是和Linux一起运行,这样就可以避过GPL规则。然后Google再在Kernel上开一个小门,让本来不能直接控制到硬件的“userspace”程序也可以碰得到,此时只需要公布这个Google自己开的“小门”程序的源代码即可。由此可见,Google在Kernel和应用程序之间设计了一个中间层,这样既不违反GPL许可,又能不让外界看到厂商的硬件驱动和应用程序的源代码。

带来的问题
  但是Google的上述做法随之带来了一个问题,Kernel和Android采取了不同的许可证,Kernel采用GPL许可证,而Android采用Apache Software License(ASL)许可证。在GPL许可证中规定,对源代码的任何修改都必须开源,所以Android需要开源,因为它修改了Kernel。而在ASL许可证中规定,用户可以随意使用源代码而不必开源,所以建立在Android之上的硬件驱动和应用程序都可以保持封闭。这种封闭得到了更多的硬件厂商的支持,Google特意修改了Kernel,使得原本应该包括在Kernel中的某些功能都被转移到“userspace”中,所以就避开了开源。

带来的影响
  所有为Android写的硬件驱动都不能合并到它底层的Linux Kernel中,因为它们只在Google的代码里才有效,而在这些驱动在Linux Kernel中根本不能用。
  正因为所有为Android写的硬件驱动都不能合并到Kernel中,这些驱动程序只能在Google的代码中才有效,而在Kernel中根本没法用,所以Google从不向Kernel提交大量的硬件驱动程序和平台源代码。硬件厂商都不开源驱动代码,为生存在Android底层的开发人员,特别是从事驱动开发的成员,带来了巨大的就业机会。开发人员可以为硬件厂商开发不开源的驱动程序从而获得报酬。

评分

参与人数 1无忧币 +5 收起 理由
新空气 + 5

查看全部评分

推荐
发表于 2018-9-13 09:51:10 | 只看该作者
以下发言,我保证真实代表我的想法,不含任何欺骗成分。

究竟是谷歌想要闭源,还是厂商想要闭源,这是个 “障眼法”。我认为那是一种欺骗方式,真正想要 “驱动闭源” 的,是谷歌罢了。谷歌像苹果一样,意欲建立封闭王国。只是由于苹果已经占领了大片江山,所以,谷歌才需要用 “半开放” 策略来击败苹果。谷歌在 Android 中使用 /system/bin/sh 来取代 Linux 中的 /bin/sh。Linux 系统中 shell 的路径是标准的,不是可以随便修改的。但谷歌偏偏就要修改。这就是谷歌故意制造不兼容性的证据。这与厂商无关。谷歌故意制造不兼容性,还有其它许许多多的证据。正如 “EFI 表面上是 Intel 制定的,其实是微软制定的” 一样。微软利用 EFI 带来的不兼容性,加强统治,而 Intel 从中捞不到什么好处。不兼容性对 Intel 不利(尤其在 “Wintel 联盟” 破裂以后)。Intel 的 CPU 在整体上是兼容的。Intel 也曾有过不兼容,但那给 Intel 带来了损失,后来还是得走兼容的路。如果 Intel 不断制造不兼容性,恐怕 Intel 这个公司很难活到现在。我认为 Intel 曾经制造的不兼容性(包括 EFI、AHCI 等规范以及 CPU 方面的不兼容性),都是 Intel 被动制造的,Intel 不是主谋。这年头,硬件厂商的地位低于软件厂商,硬件厂商可以近似地理解为软件厂商的 “附庸” 或 “傀儡”。

无论微软、谷歌、苹果,都是想要封闭。这个 “封闭” 的思路,是 “人之常情”,可以理解的。区别在哪里呢?区别在历史上,是历史形成的。微软、Intel、IBM 当初为了战胜 UNIX 而实行开放政策。当时的主角应该是 IBM 和 Intel(因为在早期,硬件比软件重要)。IBM 和 Intel 都比较开放。这种开放性,帮助它们实现了 “普及个人电脑” 的目标。

然而,后来软件地位逐步提升,硬件厂商沦为附庸和傀儡。微软在自己成功垄断全球之后,也开始做小动作,用不兼容性来封杀竞争对手。到后来不兼容性的力度增大了:干脆彻底改造启动规范,生成新的不兼容规范,那就是 EFI。所以,无论软件厂商还是硬件厂商,他们骨子里都是 “封闭” 的思路,这点是共同的。只是在一定的历史条件之下(比如在有竞争压力的情况下),才可能把一部分封闭的东西转变成开放的。从哲学的高度来看,那么 “开放” 是竞争的结果。不管你承认不承认,你的开放也是竞争的结果。在别人已经封闭并取得市场成功以后,你若也是封闭,那对不起,你来晚了。因此,你选择开放,于是你才走入大众的视野,否则,你根本就像 “不存在” 一样。因此,你自己的 “开放”,实际上也是来源于竞争。我其实是在说,包括 Linus Torvalds 在内,他的开放也来源于竞争,不管他自己是否意识到,也不管他自己是否承认。在 Unix 败给 Windows 之后,如果没有 Linus Torvalds,那 Unix 仍是失败,无法刷出 “存在” 的感觉。Linus Torvalds 让失败的 UNIX 获得了新生。在竞争之中,才有了开源的 Unix,即 Linux。矛盾是永恒的,竞争也是永恒的。今日的失败者,就是明日的希望。

微软垄断统治多年,硬件公司完全是附庸,而第三方软件厂商也被消灭或被控制,严重影响了 Windows 平台下的活跃开发气氛。微软之下,寸草不生,一潭死水。在这种背景下,苹果偷袭微软成功。谷歌用 “半封闭半开放” 策略与苹果进行竞争。而微软此时却 “东施效颦”,反而把苹果的 “封闭” 当成优点来学习,意欲抛弃 Intel 从而实施硬件、软件全封闭的计划——本来属于 “全开放” 的微软,现在要陡然变成 “全封闭” ——这有点 “阴阳倒错” 的感觉了。难道世界要倒退了?大众真的会答应?拭目以待吧。
回复

使用道具 举报

2#
发表于 2018-9-12 22:45:25 | 只看该作者
涨知识了
回复

使用道具 举报

4#
发表于 2018-9-13 16:58:52 | 只看该作者
原理上是如此,不过在真的设计中除非极为关键必须保密代码的硬件,实际上大部分还是依然使用linux驱动的编写方法来做的。谷歌的那种“用户空间开发驱动”反而比普通驱动开发起来更加麻烦得多,目前很多硬件厂商都愿意放开这部分驱动的代码以换取便利性,或许真的是因为某个网友说的话“私有驱动开源也不会有多少人真去看代码”。

因此,目前大部分主流的安卓系统,使用chroot切换到arm版的linux发行版都是可以的,这也是目前很多安卓的linux刷机包的运行原理。不过也不排除有部分厂家额外保留部分闭源驱动造成linux无法运行的情况

目前来看,安卓和linux最大的分歧还是glibc和bionic那里,安卓使用bionic,几乎所有linux都使用glibc,所以程序不移植就没法通用
回复

使用道具 举报

5#
发表于 2018-9-18 23:44:29 | 只看该作者
都是老司机
回复

使用道具 举报

6#
发表于 2022-6-11 18:58:13 | 只看该作者
关注了解一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-11 02:54

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表