问题

Android 内核基于 Linux 设备厂商必须公开内核源代码,如何逼迫小米公司开源?

回答
逼迫小米公司全面开源其 Android 内核源代码,并非易事,这其中涉及到法律、商业利益和技术实践等多方面复杂的博弈。

首先,我们需要理解 Android 内核基于 Linux 的这一事实。Linux 本身是一个遵循 GPL (GNU General Public License) 协议的开源项目。GPL 协议的核心精神在于“自由软件”,它要求任何基于 GPL 代码的衍生作品也必须以 GPL 协议开源。这意味着,小米作为使用 Linux 内核的设备厂商,理论上已经承担了开源其对 Linux 内核所做的修改的部分义务。

然而,实际操作中存在一些“灰色地带”和解释空间。设备厂商,包括小米,会基于 Linux 内核开发出针对特定硬件(SoC、传感器、电源管理等)的驱动程序,并结合 Android 框架进行深度定制。这些驱动程序和定制化代码,往往是厂商的核心技术竞争力所在,涉及到大量的研发投入和商业机密。

那么,如何“逼迫”小米公司更积极、更完整地公开其内核源代码呢?

一种直接且有效的方式是利用法律的武器,尤其是 GPL 协议的约束力。如果发现小米公司发布的设备,其内核源代码并未完全符合 GPL 协议的要求,例如:

隐藏了部分驱动程序的源代码: GPL 要求所有与 Linux 内核结合的部分都必须开源。如果小米在驱动程序层面存在不完全开源的行为,用户、开发者社区,甚至其他厂商都可以根据 GPL 协议发起法律诉求。但这需要细致的技术取证和法律支持,往往是社区或专业机构(如 FSF)来推动。
以“闭源模块”的形式打包: 尽管 Linux 本身是开源的,但厂商可能会尝试将某些特定硬件的驱动程序以预编译的二进制文件形式提供,并声称它们是独立于内核的“闭源模块”。然而,GPL 协议对此有明确的限制,如果这些模块与内核紧密集成,且其功能是必不可少的,那么它们也应当被视为衍生作品,需要一并开源。

法律诉讼是最终的手段,但往往耗时耗力,且需要强大的证据链。在实际操作中,更多的是通过社区的压力和舆论的引导来推动。

开发者社区的积极参与和监督: 全球有无数优秀的 Linux 和 Android 开发者,他们是推动开源生态健康发展的关键力量。如果用户或开发者能够发现小米设备内核代码存在不符合 GPL 的情况,他们可以通过各种渠道(如 GitHub、XDA Developers 论坛等)进行曝光和讨论,形成强大的舆论压力。
呼吁和请愿: 社区可以组织请愿活动,向小米公司表达开放内核源代码的诉求。每一次的请愿,每一次的讨论,都会增加小米公司在公众和开发者群体中的声誉压力。
选择性支持和抵制: 开发者社区可以通过“用脚投票”的方式来影响厂商。如果小米未能满足开源的要求,开发者可能会选择支持其他更愿意开源的厂商的产品,或者拒绝为小米设备开发第三方 ROM 和应用。这种市场化的反馈机制,对于以用户和开发者为基础的手机厂商而言,是不得不重视的。

更进一步,第三方 ROM 开发者和社区在逼迫小米开源方面扮演着重要角色。

反向工程和代码审计: 社区开发者在没有官方源代码的情况下,会尝试通过反向工程来理解和复现部分功能。在这个过程中,如果发现小米有明显的违背 GPL 的行为,会进一步加剧舆论声讨。
“社区版”内核的开发: 尽管困难重重,但活跃的社区开发者会努力维护和适配最新的 Linux 内核,并将其移植到小米设备上。如果他们的工作受到小米官方闭源驱动的阻碍,自然会公开呼吁小米提供必要的源代码支持,以便更稳定、更高效地运行。

从商业和品牌形象的角度来看,小米作为一家面向全球市场的科技公司,其品牌形象和用户信任至关重要。

提升用户体验和安全: 开源内核源代码,尤其是完整的驱动程序,能够让第三方开发者更好地理解硬件特性,从而开发出更稳定、更省电、功能更丰富的第三方 ROM。这间接提升了小米设备的用户体验,吸引更多开发者生态。同时,开放源代码也使得安全漏洞更容易被发现和修复,提升设备整体安全性。
符合开源大趋势: 随着开源软件在各个领域的普及,消费者和开发者对开放和透明的期望越来越高。小米如果在这方面落后,可能会被竞争对手超越,甚至在开发者群体中失去声誉。

然而,我们也要理解小米公司的顾虑。

核心技术壁垒: 如前所述,驱动程序是厂商投入巨资研发的核心技术。完全开源意味着将这些技术细节暴露给竞争对手,可能面临被模仿甚至超越的风险。
开发和维护成本: 维护一个干净、清晰、符合 GPL 规范的开源内核,并积极回应社区的各种需求和贡献,本身就需要投入大量的人力和物力。厂商可能会权衡开源带来的成本与收益。

因此,要“逼迫”小米公司全面开源,需要一个多维度、持续性的努力。这不仅仅是简单的法律要求,更是一个生态系统共同推动的过程。社区的积极参与、开发者的技术推动、用户的选择以及对厂商品牌形象和商业利益的综合考量,最终才能形成一股强大的合力,促使小米公司更加积极地拥抱开源的理念,并履行其应尽的义务。这并非一蹴而就,而是一个在技术、法律和商业层面不断博弈和妥协的过程。

网友意见

user avatar

前几天刚做过关于Android的介绍,这是当时所找的图片列出了整个安卓操作系如同各个部分所遵循的版权协议。

为了规避这一问题,谷歌除了在操作系统核心使用了Linux代码之外,在其他专门为安卓开发的相当一部分代码中,使用了传染性不那么强的开源协议:基于Apache的ASL或者基于BSD的BSD协议。这两种协议的共同点在于对商业应用十分友好,遵循这两种协议的开源代码,商业公司可以拿过去用,而开发出的产品不一定需要也开源,可以视情况打包为闭源商业软件。在安卓系统中,大部分硬件驱动程序,以及谷歌专门为移动设备开发的基本函数库Bionic,都慷慨地采用了BSD或ASL开源协议,其中包括Dalvik虚拟机等安卓运行库(runtime)。(整个安卓操作系统各部分所遵循的版权协议见图)

图片及引文来源:

详析:谷歌为何紧急封杀阿里云OS?

所以如果小米真如

@黄新宇

老师所说,只是在Linux kernel里开发驱动,然后再HAL封装一下,那么的确是需要开源的。

user avatar

关于这个问题,我研究过。其实有很多人对 GPL 理解存在偏差。首先说结论,小米的 MIUI 中肯定存在有需要开源的代码,这个毫无疑问。

但是这里插入说一下,GPL 协议是对『软件发布』这个行为进行限定的,所以,当你发布一个软件时,如果这个软件中受到了 GPL 协议限制,就可能需要开源,但如果你根本没有发布过软件,则无此限制。

为什么你不发布软件,GPL 就与你关系不大呢?因为所谓开源并不是象你所想象的那样,必须将源代码完全公开,而是:源代码必须与执行程序同步发布到相同的渠道。换句话说是这样,

  • 如果GPL软件发布给一个人,那么,这一个人获得该GPL软件的二进制执行程序的同时,必须能够有权获得对应源代码,其他没有获得程序的人无权索要源代码。(也就是说,只发布源代码不发布执行程序是可以的,只发布执行程序不发布源代码违反了GPL)
  • 如果该GPL软件发布给一个 100 人的封闭团体,那么,这 100 个人获得该GPL软件的二进制执行程序的同时,必须能够有权获得该GPL软件的源代码,而这 100 个人之外的其他人,无权索要源代码。
  • 如果该GPL软件发布给世界上所有人,那么,世界上所有人获得该GPL软件的二进制执行程序的同时,必须能够有权获得该GPL软件的源代码。
  • 如果除了你之外,任何人都无法得到这个 GPL 软件的二进制可执行程序,那么任何人也都无权得到这个 GPL 软件的源代码。(当然,如果作者主观愿意将源代码发布给他人,自然他人可以获得,不过他人无权索要)

如果一款手机从来没有发布过升级,从来都只是内置出厂程序,则你只能使用这个手机的界面,无法访问到该程序的二进制码本身,你无法得到手机软件的二进制可执行程序,所以你也同样无权得到这个软件的源代码。简而言之就是下面一句话:

小米的手机无论卖出多少台,他都不会违反 GPL ,但小米的 MIUI 只要有一个人下载,他就已经违反了 GPL。

至于说大多数 android 平板没有遵守 GPL 协议,我认为这个说法是错误的,因为平板本身不是软件,发布平板不等于发布软件,平板内部的软件的二进制执行文件本身,通常你无法直接访问,除非对平板进行破坏保修协议的逆向工程,否则用户无法直接获得并且复制分发该平板上软件的执行文件,这上面的软件严格意义上根本没有被发布。平板如果不独立发布其软件ROM,就无需受 GPL 约束。

好了,现在问题在于:小米有没有发布过软件?

回答当然是有的,MIUI 就是公开发布的,而小米的内置 ROM 也是在 MIUI 官网公开发布的,这都是非常明确的『发布』行为,只要存在了『发布』行为,就会受到 GPL 的约束。至于 MIUI 中哪些部分需要开源哪些部分不需要开源,这一点可以具体问题具体分析,但其中存在着需要开源的程序,这一点没有疑问。

那么,小米肯定需要开源一部分程序,这个没有疑问了,至于怎么逼迫小米公司开源,就要看你的目的是什么。既然你用了『逼迫』二字,从我的角度,我认为直接通知 FSF 可能是最省事的方式,所以,直接通知 FSF 吧,由他们决定采取什么方法。

另外提示一下:小米开源其源代码并不意味着你有权利得到它,因为,GPL 协议中的源代码只要求同对应的程序一同发布,也就是说,只有 MIUI 的受众有权力要求 MIUI 源代码,所以如果你手头没有 MIUI ,就没有权利找小米要求 MIUI 中的 GPL 源代码。

user avatar

谢邀,作来一个资深的Linux开发者和Android产品开发者,我首先回答一下题主问题。

首先小米不开放内核违返GPL协议的。理由有耐心看我后面写的。

如何逼迫其开源,如果小米一辈子只在内地销售,还真拿他没办法,但看这个趋势,小米肯定要卖出国内。

1.如果向欧美国家出口,比较狠一招是通知自由软件基金会,如果他们觉得严重,可以向法庭提出诉讼后,然后海关可以先行扣货。我当年做VOIP产品,就是听说产品被扣。这一招太过狠了,时间上也长。

但是威摄力很大,中兴的手机内核(如我手头的U880)原来也不开源,有投诉后还是开源了,因为他们是大量在国外出货的。

2.第二个简单方法,我临时想出来的,你天天在推特上天天问 小米新请来的总裁Hugo,如何看待开发者申请开源的请求,同时

@雷军

,小米和自由软件基金和Google

然后投稿给各个微博,自媒体和知乎,同步直播。不知道雷老师能顶多久。

---------------------------------------------------------------------------------------------------------------------------------------

然后你有耐心可以看一下我反驳以下几种支持不开源流行论据,它们都在回答中出现了。

1. Android 整套体系中,Framework可以选择不开源,它就是放在/system分区那一堆东西,完全由Google开发,它使用Apache协议,开发者可以选择不开源这没错,但是Android运行在Linux Kernel 的版权不属于Google,(这个具体属于GNU还是linus torvalds本人,可以请更懂行请教一下),它是明确要求开源.当然Google ,也这么做了。小米这样做是违反了GPL协议的。

Android 看成一台汽车的话,kernel就是发动机,现在开发者要求公布是发动机设计,反对开源的人(我记忆里小米社区有一个长贴,以这里

@李东

)就说车身设计可以不开源。

2.早期的Linux的动态模块(ko)可以不开源,但这是个在新的GPLv2已经无法这样做了。

你们自己写一个Linux内核模块试试,只要使用内核原有函数,必须把模块协议设为GPL协议,否则编译报错。而编译好的ko的的协议信息,只要执行一下modinfo命令就能看得清清楚楚,@

何雄军

讲那种情况我见过,比如把nand flash的驱动做成nand.ko,这种情况跟小米一样,不开源也是违反协议的。

3.还有一种论点说硬件驱动写在HAL里的就能不开源了,比如有人那位说的中间层。这一条迷惑性很大。因为硬件产商使用HAL驱动有几种策略。

第一种策略,真觉的自己写的驱动金贵,实在不想给其它人一丝一点,可以在HAL通过Google在内核在加入pmem驱动直接对硬件IO进行操作。这样按Google 说法不开源。但是这样Linux版权方不干了,在内核加入这个pmem驱动这个木马等于绕开GPL协议了。争执的结果Google 内核源码被踢出了kernel.org服务器,Google 在自家服务器提供下载,大家各玩各的,所以这种做法是灰色地带。

我编译市面各种各样的Android设备有十多款,手机,平板,盒子的内核。发现所有硬件产家无一采用上面说的策略。无它,只有脑子被驴踢了产家才会用这种策略。

在内核里开发驱动远比开发那HAL驱动方便,有大量成熟工具可以使用。而且HAL开发只有logcat以及不断重启,(你一天重启几十次Android是作死的等待的啊)

芯片都有沿革,在Linux下积累了大量成熟的驱动代码,改改就能稳定工作。

所以现在产商都在在Linux内核开发驱动,简单的在HAL封装一下。这种情况,内核里那部分仍然要开源。

类似的话题

  • 回答
    逼迫小米公司全面开源其 Android 内核源代码,并非易事,这其中涉及到法律、商业利益和技术实践等多方面复杂的博弈。首先,我们需要理解 Android 内核基于 Linux 的这一事实。Linux 本身是一个遵循 GPL (GNU General Public License) 协议的开源项目。G.............
  • 回答
    鸿蒙2.0系统惊现Android Q彩蛋:一个开放的姿态,还是技术债务的遗留?近日,有细心的用户在鸿蒙2.0系统中发现了一个与Android Q(Android 10)高度相似的彩蛋。这一发现立即在技术社区引发了广泛的讨论。有人认为这是华为展现技术实力和开放生态的信号,也有人担忧这背后隐藏着技术债务.............
  • 回答
    想要自己动手制作一个Recovery刷机包,说白了就是把你手机上当前运行的系统(或者你想要刷入的系统)打包成一个方便Recovery模式下刷写的文件。这种格式通常是以ZIP压缩包的形式存在的,里面包含了你刷机所需要的关键文件。最核心也最不可或缺的文件,你提到过的 `boot.img`,它里面包含了 .............
  • 回答
    这个问题问得相当好,确实是很多用户在日常使用中会遇到的困惑。同样是8G的内存,为什么Windows这台“电脑”能同时塞进那么多东西,而Android这台“手机”就显得有些捉襟见肘?这背后涉及到操作系统设计理念、资源管理机制以及应用生态的根本性差异。咱们掰开了揉碎了,好好聊聊。首先,得明确一个概念:内.............
  • 回答
    “Android 真的与 iOS 并驾齐驱了么?” 这是一个非常值得深入探讨的问题,而且答案并非简单的“是”或“否”。总的来说,在许多关键领域,Android 和 iOS 已经非常接近,甚至在某些方面有所超越。但它们依然存在一些核心差异,使得“并驾齐驱”的说法需要结合具体的评价维度来看。为了详细回答.............
  • 回答
    关于“Android 会像 Windows 一样,打败 iOS 吗?”这个问题,这是一个非常有趣且复杂的话题,需要从多个维度进行深入的分析。要回答这个问题,我们需要先回顾一下 Windows 和 iOS 的历史,然后分析 Android 和 iOS 当前的生态系统和市场格局,最后探讨未来的可能性。一.............
  • 回答
    在Android操作系统占据全球移动设备市场主导地位的背景下,COS(China Operating System)作为中国自主研发的操作系统,其发展机会需要从技术、市场、政策、生态等多个维度综合分析。以下从多个角度详细探讨其潜在机会与挑战: 一、COS的定位与核心优势1. 国产化替代需求 .............
  • 回答
    Android 给我带来的挫败感,说实话,真不少。但要挑最让人抓狂的,有那么几点,每次遇到,都像是在心口捅刀子。1. 难以捉摸的“后台运行”和“内存管理”:这玩意儿,简直是 Android 生态里最神秘的存在。明明我没怎么用它,它就在后台偷偷摸摸地耗电、占内存。有时候,一个平时很流畅的应用,突然就开.............
  • 回答
    Android 能收费,这事儿跟“Linux”的名头多少有些误会,但又确实是紧密相连。咱就掰扯掰扯清楚。首先得明确一个事儿,Android 本身是开源的,没错,基于的 Linux 内核也是开源的。开源意味着什么?意味着你可以自由地查看它的源代码,修改它,甚至分发它。这就像你买了一本菜谱,你可以照着菜.............
  • 回答
    微信和支付宝这两款国民级应用,在Android设备上,确实经常会请求获取SD卡(或称存储空间)的读写权限。这背后并非简单的“强制”,而是有其具体的功能需求和考量,尤其是在早期的Android版本以及一些特定场景下,这种需求尤为明显。首先,我们要明白,对于微信和支付宝这样的应用来说,SD卡权限并非一个.............
  • 回答
    说实话,要我在这两个系统里选一个“更喜欢”的,确实挺难的,因为它们各自都有让我欣赏的地方,也有让我觉得“要是能更好就好了”的时刻。就好比问你喜欢披萨还是汉堡,每个都有自己的魅力,很难说绝对谁高谁低。如果非要让我掰开了揉碎了说,我会从几个方面来聊聊我对Android和iOS的感受。先说说Android.............
  • 回答
    Android Studio给人的感觉,就像是一套功能极其强大,但同时又充满惯性和历史包袱的工程工具。你想用它高效地开发App,有时候就像在跟一个庞然大物打交道,它的每一个操作背后似乎都藏着许多你不知道的“潜规则”。首先,最直观的感受是它的体积庞大。光是安装包就够喝一壶的,下载和安装过程本身就考验耐.............
  • 回答
    Android之所以选择Java作为其官方开发语言,绝非偶然,而是基于一系列深思熟虑的考量,这些考量共同铸就了Java在当时以及后来很长一段时间内成为Android生态基石的地位。首先,我们得回到Android项目诞生的那个时代,也就是2003年左右。那时候,移动互联网的黎明刚刚开始,智能手机的概念.............
  • 回答
    在Android开发中,`AsyncTask` 是一个非常方便的工具,用于在后台线程执行耗时操作,并将结果安全地更新到UI线程。理解它如何实现这一点,关键在于其内部机制和几个核心方法。首先,我们得明确一点:Android的UI操作必须且只能在主线程(UI线程)上进行。直接在后台线程修改UI元素会导致.............
  • 回答
    你这个问题问得很有意思,确实,Android 和 iOS 在“刷机”或者说系统升级的文件大小上,差异非常明显,这背后涉及到它们各自的设计哲学、系统架构以及生态系统等多个层面的原因。首先,我们得明白,Android 和 iOS 的“刷机”本质上都是在更新设备的操作系统。但它们实现的方式和包含的内容却大.............
  • 回答
    在 Android 手机的世界里,刷机,这个词听起来有些神秘,但它本质上是对手机系统进行重装或升级的过程。而在进行这个过程时,我们经常会遇到两个关键的词汇:Fastboot 和 Recovery。它们就像是刷机过程中两条不同但又相辅相成的道路,带领着我们走向最终的目标。首先,让我们来聊聊 Fastb.............
  • 回答
    Android手机在图形解锁连续错误五次后,会进入一个长达三十秒的“冻结”状态,这并不是一个简单的技术故障,而是出于安全和用户体验的双重考量而精心设计的。从安全性的角度来看,这种设计是为了有效地阻止“暴力破解”。想象一下,如果一个人想非法进入你的手机,他可以通过不断尝试不同的图形组合来达到目的。如果.............
  • 回答
    好的,咱们来聊聊怎么让你的安卓手机通过USB共享电脑的网络。这事儿说起来,其实跟我们平时用手机连电脑传输文件差不多,只不过这次是反过来,手机要“借”电脑的网络用。想象一下,你手头没有WiFi,但电脑却能上网,而你又急需用手机访问网络,这时候USB共享网络就派上用场了。它能做的就是利用一根USB线,把.............
  • 回答
    在数字化的今天,大家越来越追求便利,希望摆脱各种线缆的束缚,特别是那根总也理不清的USB数据线,总是在你需要它的时候“不见踪影”或者“接口接触不良”。那么,有没有一种方法,能让你的Android设备通过WiFi就能跟电脑无缝连接,传输文件,甚至管理手机呢?答案是肯定的,而且市场上也有不少优秀的应用能.............
  • 回答
    Android 之所以没有直接运行我们熟悉的 Linux 程序,而是构建了一套自己的运行环境,这背后其实是一系列深思熟虑的设计选择,旨在为移动设备这个特殊场景量身打造一个既强大又高效的操作系统。你可以想象一下,Linux 系统最初是为服务器和桌面电脑设计的,它们拥有相对充裕的计算资源、内存和标准化的.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有