标签归档:安卓手机不能安装其他系统

为什么安卓手机不能安装苹果IOS或者微软的WP系统?

既然提出了这个问题,那我就从bsp的角度描述下从我视角所看到的刷不同系统这件事。

由于本人比较了解的是android和windows系统的架构,所以需要先从这两个系统入手谈起,从而先给大家建立一个基本的知识基础,有了这个基础后,后面才有可能讲的清楚透彻。

补充知识部分:

Android:从非常笼统的角度区分,可以认为是由 linux kernel + framework + Ui activity 组成三个部分组成(没必要和网上一样分的那么详细,这样分会更容易让大家理解吸收)

linux kernel:提供了所有硬件的驱动,这些驱动的作用是负责各个硬件(sensors 、 panel 、 vibrator、 touch panel 、 以及系统的核心硬件如cpu gpu ram 和emmc等)的初始化工作,初始化成功后,会为framwork层提供出各种接口,framework层只能通过这些接口来调用硬件资源(例如控制sensor 返回数据,调节背光量度,设置cpu工作频率等)。

framework可以简单的理解为一个android的运行库环境,既提供了java 虚拟机的运行环境供所有apk运行,也提供各类库函数和环境,供apk或者系统去调度和响应底层的硬件和上层的请求。

Ui 部分用比较笼统的说法,可以简单认为user在手机上所能看到的所有界面(activity),例如你的设置或者开机后的程序选择界面,其实都是一个个的apk,大家常说的launcher 和setting,其实就是两个apk而已。老罗锤子手机,主界面变化那么大,本质上也只是重写了系统原生的apk而已(当然,也有改到一些framework层的东西,但毕竟主要的改动还是在apk中)

Windows: 这部分我需要借助两种不同的情况来讲

首先我们讲讲Pc的windows系统:对于Pc来讲,系统构架可以同样认为有三个部分组成: Bios+driver(驱动)+windows系统。

Bios其实就是个小系统,负责初始化显卡,RAM,PCI设备和HD等,他不仅能够控制所有正确连接到主板上的硬件设备,还能将各种设备的讯息提供给windows系统。另外,Bios还可以通过ACPI协议,提供各种硬件的电源管理方法(或者理解为接口)给windows系统调用。
这就是为什么windows系统可以装在任何主板上的原因,其实windows系统让Bios帮忙把所有管理实际硬件的接口给自己,然后windows系统会在首次安装时候,会通过Bios报过来的各种接口,来将下层的调度接口注册进自己的调度方案,从而能够使windows系统能够正常的管理和控制整个计算机。

你可能有了疑问,那windows系统既然有了Bios的管理,那它为什么还需要driver(驱动)这种东西呢?

       其实各类硬件都有自己的规范,例如拿显卡来举例,目前大多是显卡都是PCI接口的,高端点的显卡是PCIE接口。但无论显卡是哪种接口类型,他都有基本来规范(我们叫做配置空间)来供Bios获取该显卡的硬件讯息,然后Bios就会根据获取到的这些讯息通过对配置空间的操作来对其进行初始化。

   Bios获取到硬件讯息后,主要做两件事情:

1: 告诉windows系统,我的机器上有这个显卡硬件存在,并且这个显卡是如此的接口,需要如此大的显存空间,是如此的厂商生产的等等;

2:Bios会通过这些讯息,简单的配置显卡,让它可以点亮你的显示器(当然,此时显卡的性能很难发挥到极限,你也不可能指望让一个4M-8M大小的Bios代码可以让所有的显卡性能都发挥到极致,并且Bios代码一般也很少被用户真正的更新到,所以你也无法预知市面上将会出现什么样的新显卡)。这就是你电脑显示器在刚开机时那段黑色画面上能够显示出各种英文指令的原因,其实Bios已经把你的显卡点亮了~~!!

       所以你的疑问应该有了答案,对于有些新装的电脑,之所以需要装显卡驱动的原因。其实就是为了让显卡性能能够正常的发挥到其极致(有些常见的硬件驱动会包默认包在windows系统中,所以有些硬件会在windows系统首次安装时,通过从Bios获取到的硬件讯息,确定如果windows系统中自带的驱动与之匹配,那么就默认帮你安装好了)。另外一个问题:为什么驱动精灵知道你的显卡驱动还没安装或者没安装好呢?这是因为驱动精灵会通过windows系统提供的标准api,来获取所有硬件讯息和硬件运行状态,而这些讯息和运行状态,其实就是由Bios帮忙提供并注册进windows系统的接口,从而让windows系统上运行的这些程序可以正常调用到!

讲到这里,你可能豁然开朗了,其实windows系统只是一个非常完整的调度系统,提供了所有进程调度方案,内存管理方案,函数库等等,这点其实和google提供的android原生framework功能十分类似。

然后我们再谈谈移动的系统与pc系统最大的区别在哪里:

由于一台pc能正确安装windows系统的根本条件在于,Bios提供功能是否完善。所以许多PC厂商在生产PC的时候,会定期的在不同生产批次机器上更新系统,说白了更新系统的动作只是更新出厂前需要默认安装的driver包内容,用户拿到PC的时候,不同批次PC所看到的界面以及预置软件千奇百怪的根本原理就在这里。

但对于移动设备更新driver来说,就没办法实现的这么简单了。由于移动设备EMMC(存储器)空间小,且一般只能通过预烧的方法更新系统,所以虽然我们有办法很容易的做到在出厂时给不同批次机器预装不同的应用,但却很难有办法对有bug的驱动程序提供简单的修补方案。所以目前对于移动设备遇到有bug需要更新driver的情况,我们一般只能通过重刷img的办法弥补….而如果这种情况从移动设备换到PC设备时,我们只需要简单的更新下driver 包中对应的driver即可…

于是我们可以总结出一个非常重要的结论,这就是移动设备与PC构架对于系统依赖度有着根本的区别:一个下层必须固定的与系统绑定,另一个可以动态修改。

OK,有了上面这些基础知识,就可以开始回答你的问题了,下面正式开始

《为什么安卓手机不能安装苹果IOS或者微软的WP系统》

我们可以把这个问题分成如下几个小问题来解析,这样会显得更加有条理

1:安卓系统是否可以刷到任何硬件设备上?

2:windows系统是否可以安装到所有硬件上?

3:IOS系统可以安装到任何设备上吗?

1:安卓系统是否可以刷到任何硬件设备上?

解答:如果我们有android系统的源代码,然后又有 硬件设备的原理图。我们就可以做到将android系统安装到所有硬件上。

不过用程序员严谨的话讲,这句话成立还有个前提,那就是android 源码中所包含的linux 源码中,支持你硬件中cpu执行的指令集。

如果cpu都不认识你编译出来的程序指令,你有如何期望他能够正确跑的写的driver呢?

2:windows系统是否可以安装到所有硬件上?

解答:前面的知识如果你消化了的话,其实你心中应该已经有了基本的答案。

那就是:只要在硬件开机时候,有相应的代码完成了Bios所做的工作(提供windows系统硬件讯息,初始化基本硬件,提供硬件操作接口给系统),这段代码可以是由linux kernel 改写而成或借其他已存在的小系统(Ucos等)修改成的。当然,只要你够牛x,自然也可以是完全由自己写成的独特调度系统。!

只要这个小的调度系统能够完成Bios的所有职责,那么可能肯定的告诉你,你的硬件不仅可以安装windows,而且可以无bug完美运行!

3:IOS系统可以安装到任何设备上吗?

解答:原则上只要有IOS的源代码,而且通过其编译器所编译出的系统程序可以被你手机的cpu硬件架构正确解读并执行,那么我们完全可以通过修改ios系统的driver,来完美支持你的硬件。

可现实是残酷的,ios是没有源码的~ 所以我们也很难了解到他的组成原理究竟是类似于windows的分离思想,还是android的硬件定制思想。

我有特意查了下目前其他种类手机运行苹果ios系统的情况,结果发现,目前绝大多数运行起来ios系统的机器,原理几乎都是运用虚拟机的技术完成的。

这个虚拟机技术,究竟是怎么做到的呢?呵呵,想想你曾经用过的vmware,想必你已经有了大概的概念。

下面我进一步解释下其运行原理: 虚拟机其实就是利用目前已经安装的系统的api,来获取所有硬件的管理接口,有了这些接口,我们就可以做出一个大的应用程序,这个程序既可以控制你机器的所有硬件,也可以将所有硬件的获取的数据获取到你的程序数据库中。设想一下,我们只要在这个程序的基础上,再实现解析代码(这段代码可以将其他平台的cpu运行指令,翻译成当前硬件cpu所认识的代码,然后提供给当前硬件实际的cpu去执行),然后我们再提供一些接口,这些接口会模拟出目标系统(虚拟机中想运行或安装的系统)需要的底层运行环境,让目标系统以为自己就是运行在实际的硬件上。那么该虚拟机中其实就可以实现安装并运行ios 、palm 、webos 、windows、WP等等系统的功能。

所以ios系统原则上很难安装到任何设备上,但能安装到任何安装过符合其运行环境的虚拟机环境上。

相信通过上面三个问题的解答,我已经给出了我对你这个问题的解读。

最后我想补充下另一个问题的解答:<为什么当年HD2那么厉害,什么系统都能刷>..

HD2厉害的前提是,这款手机是个划时代的产品,大家都对其十分熟知和了解。从而使得很多人对其拆解和解密,让他的硬件原理图和各种规范都很容易获取。有了这些东西,加上这款手机充足的货源支持,让很多黑客有了人手一个的实验平台。有了这些优势和鹤立鸡群的关注程度,我并不觉得HD2做到系统众多黑客,并让其做到可以刷各种andrid定制rom 是件很困难的事情。(由WP系统改到能刷android系统会比从android系统改到能刷WP简单的多的多的多,而HD2当年默认就是安装的WP,所以能刷android并不那么困难)。

不过对于开发出HD2上的ios虚拟机的同学,我只能感叹他的技术确实厉害~

你可能也发现了,HD2运行ios系统时候,很卡顿的原因是由于他们写的虚拟机程序的解析和调度效率不高所导致的。另外,HD2再刷完ios后其很多硬件不能正常使用的原因,一方面是由于HD2的硬件设备ios系统原生不支持,其次是由于他们写的虚拟机还没能很好的完成将HD2实际硬件转化为ios 硬件接口的代码部分~~

至此,我应该对这个问题解做了一个比较全面的解读!

谢谢大家

原文转自:ZEALER|ASK社区

原文作者:关关雎鸠