序言、Unix之争
这事得从上世纪80年代说起,70年代末,AT&T总算发觉了自己旗下技术人员K&R开发的Unix系统的商业价值,企图通过诉讼并完全封锁源代码来制止竞争对手模仿甚至完全拷贝发布Unix的代码,其中典型的就是与伯克利学院的BSD系统的诉讼案,从80年代仍然打到了92年,最终以BSD学院完全删掉所有与Unix相同或相像的代码终结。
其实从某种程度上说,AT&T的系列诉讼奠定了现代正版软件专著权与版权的基础,为商业正版软件的盛行提供了法律基础,但同时这些封锁代码的做法也一定程度激怒了以大学派为主的黑客们。
大学派黑客们觉得,封锁源码(简称闭源)是一种极为恶劣的商业垄断行为,既不正义也不道德,
一方面,闭源妨碍了技术的发展,不在商业公司就职的人员就难以跟上技术发展(你瞧瞧一线大厂程序员出去和二三四线出去的身家差多少,真是技术缘由吗?)
另一方面,造成了软件逻辑对用户不透明,完全失去了安全性(简单说就是不给我看代码,鬼晓得你的代码背着我偷偷在干嘛?)
一、GNU
因为上文缘由,当时就职于MIT的RichardStallman一怒之下就成立了一个名为GNU的基金会,期望由基金会孵化一个完全自由的新操作系统,不受任何商业公司制约,并以此想促使全球所有商业软件的“自由化”,此处须要注意,自由软件并不等于免费软件,自由软件的含义是“开放源代码”,而不是100%免费使用,自由软件也完全可以是收费使用的软件(尽管大部份自由软件基本都是免费软件,由于你都开源了还怎样收费,别指望能挣钱了,不如干脆免费得了)。
他的计划是这样的,先把当时常用的一些Unix软件,例如C/C++编译器、引导程序、Shell软件、磁盘管理软件、网络软件等等等等给重画一遍,放出功能相像的“自由”版本,同时,开发一个“自由”的操作系统内核,并最终组装成一个完整的操作系统生态。
(此处须要注意的是,操作系统内核并不是操作系统,而是操作系统的一个核心功能模块,主要负责进程管理、内存管理、磁盘/文件/网路/显示器/键鼠等输入输出设备管理及内核初始化引导,本质上只是一个完整操作系统中的一个代码模块而已,不是拷到硬碟上能够直接跑上去让你打星际的操作系统linux获取当前时间,原理虽然简单的很,计算机科学专业的大专生认真个五年都能写一个...无法产品化的,但真正能用的与其说难,不如说是十分繁杂,由于通常要支持好多不同类型的设备和应用,并且要经过时间的考验,保证各类设备的兼容性,常年维护的可迭代性、长期运行的稳定性和安全性)
Stallman的计划挺好,基金会的创立也很顺利,群众响应也极为热烈,类似Emacs(文本编辑器),gcc(编译器),glibc(C语言的标准库)等一大堆软件很快就完成了,同时也推动了类似(开源的XWindow)等一些其他的抱着相同目的开源基金会。眼瞅着万事俱备,只欠了一个东风,没错,GNU自己的操作系统内核Hurd相撞了...
可能因为初期GNU基金会的贡献者大部份来自一些学院,属于典型的大学派,对于软件项目有着某种难以明言的精神洁癖,作为GNU操作系统的核心,Hurd内核自然获得了最多的“关照”,一群有着极端洁癖的大鳄们在Hurd内核的开发问题上力求“各抒己见”,最终造成Hurd项目从1990年复工,一路折腾到了2019年才算有了点成果,而此时,GNU操作系统的内核桂冠已经被另一个“不这么完美”的操作系统内核所摘去,也就是我们常说的Linux内核。
二、Linux
圣彼得堡学院的大二中学生LinusTorvalds在读完了谭宁邦的Minix操作系统课程后,因为不满意Minix的微内核设计,且实验室刚好缺少一个基于x86构架IBMPC的Unix操作系统,于是在1991年独立完成了一个自己的操作系统内核,也就是Linux0.0.1,并将源码完全公布到了网上,并公开宣布Linux内核将是一个完全开源的内核,并舍弃从中获得任何商业利益。这件事立即引发了自由软件界的极大热情,好多自由开发者立即希望参与到这个项目中,于是到1994年,Linux1.0.0在Linus及其他贡献者的努力下linux web服务器,即将发布了。
并且因为Linus一开始就早已公开申明了其“自由软件”的属性,所以即使在自由软件圈内反映很热烈,但商业公司们却并不乐意参与到这个项目中,也不乐意将旗下的商业软件针对Linux放出兼容版本,于是慑于无奈之下,Linus找上了GNU基金会,而此时的GNU正为Hurd的事情闹得焦头烂额,一看有个内核自己送上门来了,尽管这宏内核设计“丑了点”,但总比“空内核”强,于是双方一拍即合,GNU/Linux诞生了。
时间转眼来到21世纪的头六年,Linux系统已经历经了近六年的发展,尽管在这六年中,谷歌借助Windows系统的强势崛起,在x86桌面领域秒杀了包括GNU/Linux在内一众开源或不开源的其他操作系统,但令谷歌意想不到的是,Linux借助其开源的特性,在一个对谷歌来说虫子腿肉太少,所以不如何关注的领域悄悄的获得了一个立足之地,这就是嵌入式行业。
三、蚊子腿再小也是肉
我们都晓得Windows系统是一个闭源的系统,任何企图反编译或篡改Windows内核代码的行为都足以为你博得一张吃公家饭的套票,所以,假若你想为你的硬件平台配备一个Windows系统,惟一选择就是找上谷歌,给他足够的钱,之后求他为你订制一个Windows系统,而因为Wintel联盟的存在,Windows最初并没有任何发布x86之外处理器平台的Windows系统的计划,所以假如你的硬件平台不是x86的,那想要弄个Windows系统基本是不可能的事情。
而x86平台处理器因为初期CISC指令集的残留,并不能满足须要极低帧率及低性能需求的嵌入式设备,好多嵌入式设备的设计场景事实上完全可能只是一张IC卡而已。而Intel对这种场景完全不感兴趣,为一些低出货量、高订制需求的顾客订制专用处理器也完全不符合intel和顾客的商业利益。
即将因为这样的缘由,一些小的芯片设计厂商,包括坐落加拿大的ARM公司在内,就借助那些订制低帧率处理器的需求成功崭露头角,并在此后的六年中,随着intel没有预想到得手持联通设备崛起,并最终将其完全驱逐出了该领域,尽管intel一度企图通过atom处理器挽回手持联通市场,但最终为时已晚矣,而作为intel的好伙伴,谷歌自然也不甘于后,与其一齐石沉大海,共赴黄泉,收费订制的WinCE嵌入式系统最终还是败给了不要钱代码随意看随意改的Linux系统,在大概2008年左右,嵌入式领域早已基本完全被ARM+Linux方案所抢占,WinCE及其下属的WindowsMobile系统与SmartPhone系统死板的商业授权败局已定。
四、Android
我们把时间调到2005年,假如在2005年,你希望开发一个可以跨平台应用于ARM平台或MIPS平台等一大堆乱七八糟的嵌入式方案的开源智能手机操作系统时,不仅使用Linux内核,你几乎没有别的选择,安迪鲁宾也没有。
WinCE、黑莓的QNX之类的其实不会让你套壳发布自己的系统,Symbian系统是针对超低帧率平台设计的,在摩托罗拉竞购Qt后重画应用层框架前几乎没有扩充的可能(事实上摩托罗拉自己前面也舍弃了),但是因为Symbian是由一个商业公司组成的集团主导的(塞班联盟),相互扯后腿开小灶的事情多了去了,不可能。自己写个新的,全兼容所有平台?也基本不可能。
所以没选择unix操作系统属于,Linux是惟一的选择,由于所有的嵌入式方案厂商就会自行开发针对Linux系统的设备驱动,并使用Linux系统完成功能调试,为此,当安迪鲁宾计划开发自己的Android系统时,几乎不用思索就选择了使用Linux内核作为其系统核心。
没错,Android是一个使用了Linux内核的操作系统,但Android并不是GNU/Linux的某个发行版unix操作系统属于,由于Android并没有使用GNU/Linux发行版中常用的这些软件,例如Xorg的X-Window,而是在Linux内核的外围另行开发了一整套从内核层到应用层的新框架,与我们平常在桌面上使用的Ubuntu、Debian、CentOS等GNU/Linux发行版不仅Linux内核的这些功能外几乎无任何共通之处,所以Android是使用了Linux内核的一个新类型Linux系统,但Android不是GNU/Linux系统。
五、HarmonyOS
说实话,因为鸿蒙的手机版目前没有公布完整系统源码,我也不好断定鸿蒙与Android究竟有啥关系(笑),之前妄称了几次被各类打脸,所以此次作罢,我不说了。
但目前就华为的PPT和我自己手上换了鸿蒙的手机看,我可以确定的是,鸿蒙OS的手机版使用了Linux内核,与安卓一样是使用了Linux内核的操作系统,其实鸿蒙堪称是多内核设计,针对不同类型的设备可以使用不同的内核,例如跑在IoT设备上时,可以选择使用LiteOS,这点我无法考证,只能麻烦读者自证了,不过从站在旁边的技术人员的角度看,这点实现应当是可行的。
六、结语
作为一名从小学玩上文曲星并写了第一个联通平台游戏开始就立志从事手持计算机设备开发,关注嵌入式领域和Linux近20年的联通行业技术人员,我认为诸位虽然大可毋须把过多的压力加到“国产操作系统”这样的事情里面,操作系统与其说技术有多难,不如说是很难找到一个合适的抓手去构建一个新的生态,Linus的Linux一作成名并不是他的技术很牛逼,而是由于他站到了GNU的浪尖上,安迪鲁宾的Android横扫联通领域并不是由于Android的技术浓度有多高(真不高,事实上最早的Android本质上就是把J2SE平台移植到了一个linux内核的手机系统上,并做了些内核层的优化,之后开发了几个小程序罢了,好多设计很不错,代码质量做过安卓的都懂),也不是由于被竞购后微软父亲的腰包有多鼓,而是由于他站到了智能手机的风口上。
技术可以创造机会,但只有时势能够缔造英雄。