月球探测器遥操作系统国产化研究

2019-01-22 06:54赵正旭徐博贤梅成芳钟谦
现代计算机 2018年35期
关键词:编译器麒麟中标

赵正旭,徐博贤,梅成芳,钟谦

(石家庄铁道大学复杂网络可视化研究所,石家庄 050043)

0 引言

随着我国深空探测领域不断向前发展,我国的航天工程已经进入到地外天体探测的遥操作时代。月球探测器遥操作系统对探测器的整个生命周期进行监测、控制、管理与支持,是保障探测任务能圆满完成的重要组成部分[1]。然而,近年来,信息安全事件频繁发生,依赖国外品牌技术研发、执行任务的遥操作系统,数据安全得不到保障,严重威胁我国航天任务信息安全。

本文首先分析了国内信息安全现状,介绍了月球探测器遥操作系统的功能和特点,以此说明遥操作系统国产化的必要性。然后,利用中标麒麟系统、搭建Code:Blocks集成开发环境,完成月球探测器遥操作系统的国产化,这为国产操作系统推广以及航天领域知识产权保护提供了现实依据。

1 国内信息安全现状

随着信息化建设和IT技术的快速发展,各种网络技术的应用更加广泛深入,然而,近年来国内外网络安全问题层出不穷,致使网络信息安全的重要性与日俱增[2]。2017年 5月,名为“WannaCry”勒索病毒肆虐全球,不法分子通过改造之前泄露的NSA黑客武器库中“永恒之蓝”攻击程序发起网络攻击,给超过150个国家的金融、能源、医疗等众多行业造成影响,让全世界Windows操作系统使用者遭受巨大损失[3]。紧接11月,Intel承认近两年出售的英特尔处理器存在很多安全漏洞,易被黑客加载、运行程序,破坏或冒充系统进行安全检查[4]。经历过这些之后,各方不得不思考,病毒肆虐,依赖的国外品牌漏洞频出,严重威胁着国家信息安全,究竟该如何应对。

计算机操作系统作为中国信息安全“三大黑洞”和我国进行现代化建设的核心战略科技之一,时刻影响着国家安全[5]。2013年12月,习近平总书记曾在中国工程院一份建议上批示:“计算机操作系统等信息化核心技术和信息基础设施的重要性显而易见,我们在一些关键技术和设备上受制于人的问题必须及早解决”[6]。2015年,中共中央政治局明确信息安全是国家安全的重要组成部分[7]。特别是进入2018年,政策扶持力度空前:三月份公布的《深化党和国家机构改革方案》把中央网络安全和信息化领导小组改为中央网络安全和信息化委员会,强化了重视信息安全的国家意志[8]。国产化(自主可控)及网络安全领域政策频出,助力网络安全和自主可控领域集中度提升,国产操作系统迎来最好时代。

2 月球探测器遥操作系统概述

遥操作系统是指在人的控制和参与下,在远离操作对象的环境中控制远程设备完成复杂操作的系统[9]。遥操作系统主要有两大功能,其一是仿真功能,把只有专业人士才能看懂的数据转化成普通人都能看明白的直观图像,一则便于监控人员随时操控指挥探测器运行状态,二则让所有人一起分享探测器在月球的移动轨迹。除了仿真功能外,最重要的功能就是实时监控。数据的传输和数据判断都需要时间,通过直观的画面快速显示,监测人员可以随时了解探测器以及周围环境状况,通过这一平台调整探测器状态。不仅如此,通过遥操作系统还可以进行前期仿真模拟实验,以此检验理论设计,优化操作,达到最佳状态[9]。

由于月面环境下的遥操作任务具有非重复性和不可提前预知性,持续时间长,要在任务执行过程中根据实际需要步步规划,这要求遥操作系统具有较高的可靠性[10]。遥操作系统是月球探测器任务完成不可或缺的组成部分,解决了人对复杂、危险环境下的监督、控制问题,为各方的工作人员提供一个集成的工作环境,一方面极大地提高了操作者的工作效率,减少资源损耗,另一方面在出现故障时,通过地面验证,控制策略可以提高对执行效果估计的可信度[11]。

3 案例分析

根据以上对信息安全现状的分析,以及月球探测器遥操作系统的概念、特点和功能的介绍,可以发现国产操作系统在国家政策推动以及需求快速提升的作用下,其最好时代渐行渐近,在此背景下,加快航天领域软件国产化势在必行。本文以某探月工程遥操作系统为例,分析并完成其移植。

某遥操作系统基于Windows+Visual Studio 2008+Qt 4.7.4所开发。结合此软件开发环境,对IDE、代码、开源库、编译问题进行分析和定位,并对移植软件进行测试,给出运行界面效果图。移植的实现主要分为四步,首先用能够跨平台的Code:Blocks替代Windows开发环境的IDE;将项目代码导入开发环境;完成OSG库的编译移植;构建、运行代码,进行纠错。

3.1 软件选择及初步配置

本次实验使用的软件有 Qt 4.7.4、Code:Blocks。Qt是跨平台C++图形用户界面应用程序开发框架,其支持Linux系统,不需要再用其他的开发框架进行替代。由于VS不可以跨平台,这里选择被广泛使用的Code::Blocks进行替代。Code:Blocks是一种跨平台的集成开发环境编辑器,可以编写C程序、C++程序,其支持Windows、Linux和Mac等多种操作系统,内部嵌有Mi⁃crosoft C、GUN C和Intel C等诸多编译器。这里简单介绍一下Qt、Code:Blocks在中标麒麟操作系统下的安装过程。Qt的安装采用源码编译方式,具体步骤为:安装依赖库(yum install lib*)、终端源码编译(./configure、gmake、gmake install)、设置环境变量。本文采用中标麒麟系统,在官网上下载 code:blocks-13.12-1.el20.x86_64.tar安装文件,解压缩后执行“rpm–ivh文件名”命令依次安装其中的四个.rpm文件。安装完成之后,需要打开图形化界面,在“设置”->“编译器和调试器”下,检查选择的编译器是否为GUN C以及编译器安装的位置是否正确。Code:Blocks中运行程序控制台界面默认使用XTREM,在麒麟系统中默认没有安装,选择“菜单”->“环境”进入环境设置,将Terminal to launch console program的选项改为gnome-terminal–t$TI⁃TLE –x。

3.2 项目环境配置

在 Code:Blocks 中新建 QT4 project的项目,其中需要选择Qt的安装路径,保证编译器为GUN C。将项目源码中.cpp文件都拷贝到新建的项目目录中,然后把它们都添加进项目。编译.ui文件,在终端切换到ui文件所在的目录,执行 qmake–project、qmake、make命令,将所生成的ui_*.h文件添加进项目。

Qt程序在交由标准编译器编译之前,先要使用moc分析C++源文件。如果一个头文件中包含了Q_OBJECT宏,则会生成另外一个包含Q_OBJECT宏实现代码的C++源文件(moc_*.cpp文件)。新生成的会与原文件一起编译。由于程序源码中包含Q_OB⁃JECT宏,因此要通过moc命令将所有的头文件生成对应的moc_*.cpp文件,本文通过脚本文件实现此步骤。脚本的关键代码如下:

for file in./*.h;do//循环当前目录所有的头文件

if[-e"$file"];then//如果文件存在

fileWithoutPath=$(basename$file)//取文件名

nameWithoutExtension=${fileWithoutPath%.*}

mocName=moc_$nameWithoutExtension.cpp//组成moc_*.cpp格式的文件名

moc"$file"-o"$mocName"//利用moc命令将原文件解析为moc_*.cpp文件

fi//if语句结束

done//do语句结束

3.3 OOSSGG中标麒麟系统的移植

OSG(OpenSceneGraph),采用 OpenGL 技术开发,为应用软件提供了各种高级渲染特性。OSG在中标麒麟系统上的移植和运行主要包括几个步骤:①安装所需软件、库;②OSG源码编译并安装;③将编译好的库文件导入 Code:Blocks中,其中的主要技术流程见图1。

图1 OSG中标麒麟系统移植过程图

安装Cmake,为编译OSG源码做准备。OSG使用到的第三方库有:png、jpeg、tiff、freetype、curl等,这些第三方库都是采用yum源的安装方式进行安装。

接下来打开命令行,进入到OSG源码目录,依次执行./configure、make、make install命令,为了验证 OSG是否安装成功,这里首先设置环境变量,利用osgver⁃sion或者osgviewer cow.osg验证。

最后一步将编译好的OSG库添加到Code:Blocks中。打开 Code:Blocks 平台,打开“项目”->“构建选项”,在“链接器设置”中加入.so文件,在“搜索路径”->“编译器”中加入include路径,“链接器”处加入lib文件。

3.4 项目构建

在完成以上软件安装、环境配置后,接下来就要构建项目。构建完成后,会发现出现了很多错误,大部分是由于两个系统C++编程存在差异造成的。例如文件路径问题:Windows支持两种方式,./sys/MOON.jpeg和.sysMOON.jpeg,而中标麒麟只支持前者。头文件的大小写问题:Windows不区分大小写,而中标麒麟对大小写敏感,即include关键字所包括的文件名要与文件的命名一致;Linux系统中没有windows.h文件,要将用到的文件中的方法全部进行替代或重新定义。将这些问题进行更改之后,执行运行命令,项目成功运行。

4 系统运行与结果分析

移植后的遥操作系统“机械臂控制参数设置”界面如图2所示,主要功能是对探测器的活动机构进行规划,主要包括太阳翼、桅杆、机械臂等,并支持三维显示和手动规划功能,界面清晰直观,见图2:

图2 机械臂控制参数设置

通过对比遥操作系统在两种操作系统上的运行效果及数据测试,二者无区别。中标麒麟系统与Win⁃dows操作系统在性能方面还有以下几点优势:

(1)中标麒麟是开源免费系统,这是与Windows的本质区别;

(2)中标麒麟系统采用了类Windows操作系统的桌面,以用户实际使用为目标进行桌面设计;

(3)本次实验使用 Code:Blocks 作为集成开发环境,虽然其安装方式仍然是源码编译安装,这是因为国产操作系统还没的到普及,国内的软件生态链还没完善,但相对于国产操作系统所带来的安全性,这是可以接受的。

从以上的移植过程来看,就中标麒麟系统来说,完善的开发工具,良好的开发环境,已经全面满足项目开发需要,极大地方便了用户在中标麒麟开发平台下进行应用移植和开发,很好地支撑着客户的项目开发工作。除此之外,更重要的是,在项目开发的起始就应该考虑到项目的移植问题,这可以减少后续的很多工作。

5 结语

本文将某遥操作系统借助 Qt、Code:Blocks,移植到中标麒麟系统中,总结和概括了移植过程及步骤的关键点。该移植过程证实了我国建立自主可控操作系统在航天领域的可行性,并且为航天领域自主可控组件及其知识产权的国际化保护提供现实依据。

猜你喜欢
编译器麒麟中标
麒麟“破冰”
麒麟献瑞
广日电梯成功中标第十一批中城联盟联合采购
面向理想性能空间的跨架构编译分析方法
对麒麟
乘风破浪,广日电梯第八次中标中城联盟联采
运行速度大突破华为《方舟编译器》详解
Research on the Low—Carbon Life of Student
优化编译器的设计
基于ARM嵌入式平台的x86译码SOC架构设计