开源资讯
谈自主协同开发国产操作系统
2018-04-27

谈自主协同开发国产操作系统

陆首群  2018.4.23

国产操作系统本身自主开发的难度不是很大,主要难度在于开发与该操作系统适配的应用程序集群。在保护知识产权前提下,开发操作系统:“内核(Kernel)+功能框架(Framework)+用户界面(UI)+安全模块(Security Module)”是相对容易的。如果选择开源技术来开发更易实现“弯道超车”。但要建立操作系统的生态系统就有难度,没有以生态系统作背景支持的操作系统是难以自立和发展的;这就是说对操作系统而言,即使突破了一、二项关键技术,或突破了操作系统自身的关键技术,如果它得不到生态系统的全面支持,它也是难以为广大用户所认可、所采纳的。


生态系统是分类的,如商业、经济、经营、开发、协作、开源运动、创客潮等。我们这里谈的是操作系统(产品)开发的生态系统,该生态系统涉及技术协同(软硬件架构协同、系统与应用适配、开源与闭源选择、工程化处理)、市场机制(用户体验)、环境背景(协作伙伴、竞争对手、政府政策)等。在本文谈到的技术协同中,包含软硬件技术架构的选择,如CPU架构:X86、ARM、MIPS等,适配的应用程序的开发,开源的选择,工程化处理等。

自主开发国产操作系统,要面对微软Windows操作系统(当代环境中几乎唯一强大的竞争对手),该系统占据国内PC桌面系统市场99%份额,其技术垄断地位及广大用户的使用习惯,几乎是横亘在自主开发国产操作系统前面一道如此厚重的藩篱,要冲破它实属不易!


国产PC桌面操作系统,以往一些企业是选择开源的,它们主要是移植Red Hat的版本,一般来说工程化处理,维护升级工作不经常、没有制度化,应用适配除移植Red Hat的外,自己只做了少量的更新适配工作,如(Open Office、WPS等),有人贬其移植为抄袭,将之排斥在国产操作系统之外,这是不对的。应在此基础上进行整顿提高,以期进入自主开发的国产操作系统行列。


国产智能手机操作系统,国内企业大多选择Google Android开源版本。举例来说,华为在国内外发布自主研发的Mate9智能手机,采用Android 6.01+EMUI 5.0操作系统,EMUI 5.0是华为自主开发的,该系统具有深度学习功能,可根据用户使用习惯,优化系统功能,强化用户体验,并能准确预测用户行为,但EMUI 5.0还是基于Android6.01原生系统进行深度开发的(毕竟还是一款“安卓手机”)。 Android的核心源代码是执行Apache-2公共许可证的开源软件,是不允许被禁用的;如果你截取Android某一版本并自行开发、维护、升级,也并不违规(像亚马逊所做的那样)。如此移植Android版本的开源操作系统总体上不存在侵权问题,可能采用了Google的Android商标,不能说商标侵权,或者接受了ARM的授权,一旦撤销可能带来问题。


下面谈一下加大操作系统适配的应用程序集群,将自行开发或移植的应用程序移到操作系统平台上来,有一个与桌面PC、服务器或智能手机软硬件适配的问题。

硬件CPU一般的架构有:X86、ARM、MIPS(而飞腾芯片的架构也是ARM)


解决软件适配的方式有:

1. 采用社区版Fedora适配的应用软件才可完全免除专利侵权;

2. 自行开发设配应用软件;

3. 采用Wine过渡,将Windows平台上适配的应用软件移植过来,但Wine效率较差

4. 将Google的APP应用软件(由全球志愿开发者开发)移植到ARM架构的开源操作系统平台上来;

5. 龙芯电脑采用MIPS架构、Linux操作系统,在Linux平台上支持适配的应用软件;

6. 基于Meego的桌面PC操作系统所支持的适配的应用程序,可由自行开发解决,也可面向ARM架构移植。


组织适配的应用软件开发团队有如下方式:

1. 本企业组织开发、移植、维护、升级的团队;

2. 组织社会上或社区的志愿开发者进行开发;

3. 选择社会上或有关社区开发可移植的应用适配成果。


关于操作系统的工程化处理。将操作系统社区版(如选Red Hat的版本,最好选其社区Fedora的社区版)进行工程化处理(自行开发的也要经工程化处理程序),这是完成操作系统开发必需的环节,国内开发者往往忽略了这个环节。

1. 将源代码适度移位(约3%),以保障安全性;

2. 将源代码翻译成机器码;

3. 实行软件与软件、软件与硬件之间适配;

4. 产品测试和质量认证

5. 回归移植和维护升级(Bug fix, Patch)。


工程化化处理效果:

1. 发现Bug、纠错、打补丁、保证正常运作;

2. 提高性能质量、使性能趋于稳定、优化和成熟、质量提高和保证;

3. 加强安全保障;

4. 做好维护升级工作;

5. 培养国际化的Maintainer .


关于安全可控问题,涉及到产品安全、网络安全、国家安全问题。从产品安全说起,传统产品的安全保障措施的开发或配制原则是:使“黑客”攻破该安全保障措施所花的代价(或成本)要大大高于其攻破后的获利(这是相对安全的原则)。对操作系统而言,它是网络或系统工程中的核心产品,需要开发或配置较高的安全保障措施。


下面举一例云计算的分层安全模块(Security Module):

1. 数据安全系统(Data Security System);

2. 身份认证体系(Identify Authentication System)

3. 防火墙(Firewall);

4. 安全审计系统(Security Audit System)


关于桌面PC操作系统安全保障措施:

1.  在操作系统工程化处理中,将源代码进行安全微小移位处置;

2.  设置安全模块(分别与操作系统内核、功能架构、用户界面相连);

3.  配置可信计算(含软硬件)。


关于自主开发和安全可控原则:

我赞同如下一些观点:

1. 以价值解决生态,以生态孵化自主,以自主协同开发巩固和加强在生态中的安全可控及话语权;

2. 在现代讲自主开发不如讲自主协同开发为好;

3. 生态是要接受和面对的,在自身无法建立新生态前,必须融入主流生态,但必须缩短生态中核心技术的差距;

4. 在国之重器的生态建设中,要以自主协同开发保障安全可控,要时刻把控安全可控这条主线。