趙正旭,徐博賢,梅成芳,鐘謙
(石家莊鐵道大學(xué)復(fù)雜網(wǎng)絡(luò)可視化研究所,石家莊 050043)
隨著我國(guó)深空探測(cè)領(lǐng)域不斷向前發(fā)展,我國(guó)的航天工程已經(jīng)進(jìn)入到地外天體探測(cè)的遙操作時(shí)代。月球探測(cè)器遙操作系統(tǒng)對(duì)探測(cè)器的整個(gè)生命周期進(jìn)行監(jiān)測(cè)、控制、管理與支持,是保障探測(cè)任務(wù)能圓滿完成的重要組成部分[1]。然而,近年來,信息安全事件頻繁發(fā)生,依賴國(guó)外品牌技術(shù)研發(fā)、執(zhí)行任務(wù)的遙操作系統(tǒng),數(shù)據(jù)安全得不到保障,嚴(yán)重威脅我國(guó)航天任務(wù)信息安全。
本文首先分析了國(guó)內(nèi)信息安全現(xiàn)狀,介紹了月球探測(cè)器遙操作系統(tǒng)的功能和特點(diǎn),以此說明遙操作系統(tǒng)國(guó)產(chǎn)化的必要性。然后,利用中標(biāo)麒麟系統(tǒng)、搭建Code:Blocks集成開發(fā)環(huán)境,完成月球探測(cè)器遙操作系統(tǒng)的國(guó)產(chǎn)化,這為國(guó)產(chǎn)操作系統(tǒng)推廣以及航天領(lǐng)域知識(shí)產(chǎn)權(quán)保護(hù)提供了現(xiàn)實(shí)依據(jù)。
隨著信息化建設(shè)和IT技術(shù)的快速發(fā)展,各種網(wǎng)絡(luò)技術(shù)的應(yīng)用更加廣泛深入,然而,近年來國(guó)內(nèi)外網(wǎng)絡(luò)安全問題層出不窮,致使網(wǎng)絡(luò)信息安全的重要性與日俱增[2]。2017年 5月,名為“WannaCry”勒索病毒肆虐全球,不法分子通過改造之前泄露的NSA黑客武器庫(kù)中“永恒之藍(lán)”攻擊程序發(fā)起網(wǎng)絡(luò)攻擊,給超過150個(gè)國(guó)家的金融、能源、醫(yī)療等眾多行業(yè)造成影響,讓全世界Windows操作系統(tǒng)使用者遭受巨大損失[3]。緊接11月,Intel承認(rèn)近兩年出售的英特爾處理器存在很多安全漏洞,易被黑客加載、運(yùn)行程序,破壞或冒充系統(tǒng)進(jìn)行安全檢查[4]。經(jīng)歷過這些之后,各方不得不思考,病毒肆虐,依賴的國(guó)外品牌漏洞頻出,嚴(yán)重威脅著國(guó)家信息安全,究竟該如何應(yīng)對(duì)。
計(jì)算機(jī)操作系統(tǒng)作為中國(guó)信息安全“三大黑洞”和我國(guó)進(jìn)行現(xiàn)代化建設(shè)的核心戰(zhàn)略科技之一,時(shí)刻影響著國(guó)家安全[5]。2013年12月,習(xí)近平總書記曾在中國(guó)工程院一份建議上批示:“計(jì)算機(jī)操作系統(tǒng)等信息化核心技術(shù)和信息基礎(chǔ)設(shè)施的重要性顯而易見,我們?cè)谝恍╆P(guān)鍵技術(shù)和設(shè)備上受制于人的問題必須及早解決”[6]。2015年,中共中央政治局明確信息安全是國(guó)家安全的重要組成部分[7]。特別是進(jìn)入2018年,政策扶持力度空前:三月份公布的《深化黨和國(guó)家機(jī)構(gòu)改革方案》把中央網(wǎng)絡(luò)安全和信息化領(lǐng)導(dǎo)小組改為中央網(wǎng)絡(luò)安全和信息化委員會(huì),強(qiáng)化了重視信息安全的國(guó)家意志[8]。國(guó)產(chǎn)化(自主可控)及網(wǎng)絡(luò)安全領(lǐng)域政策頻出,助力網(wǎng)絡(luò)安全和自主可控領(lǐng)域集中度提升,國(guó)產(chǎn)操作系統(tǒng)迎來最好時(shí)代。
遙操作系統(tǒng)是指在人的控制和參與下,在遠(yuǎn)離操作對(duì)象的環(huán)境中控制遠(yuǎn)程設(shè)備完成復(fù)雜操作的系統(tǒng)[9]。遙操作系統(tǒng)主要有兩大功能,其一是仿真功能,把只有專業(yè)人士才能看懂的數(shù)據(jù)轉(zhuǎn)化成普通人都能看明白的直觀圖像,一則便于監(jiān)控人員隨時(shí)操控指揮探測(cè)器運(yùn)行狀態(tài),二則讓所有人一起分享探測(cè)器在月球的移動(dòng)軌跡。除了仿真功能外,最重要的功能就是實(shí)時(shí)監(jiān)控。數(shù)據(jù)的傳輸和數(shù)據(jù)判斷都需要時(shí)間,通過直觀的畫面快速顯示,監(jiān)測(cè)人員可以隨時(shí)了解探測(cè)器以及周圍環(huán)境狀況,通過這一平臺(tái)調(diào)整探測(cè)器狀態(tài)。不僅如此,通過遙操作系統(tǒng)還可以進(jìn)行前期仿真模擬實(shí)驗(yàn),以此檢驗(yàn)理論設(shè)計(jì),優(yōu)化操作,達(dá)到最佳狀態(tài)[9]。
由于月面環(huán)境下的遙操作任務(wù)具有非重復(fù)性和不可提前預(yù)知性,持續(xù)時(shí)間長(zhǎng),要在任務(wù)執(zhí)行過程中根據(jù)實(shí)際需要步步規(guī)劃,這要求遙操作系統(tǒng)具有較高的可靠性[10]。遙操作系統(tǒng)是月球探測(cè)器任務(wù)完成不可或缺的組成部分,解決了人對(duì)復(fù)雜、危險(xiǎn)環(huán)境下的監(jiān)督、控制問題,為各方的工作人員提供一個(gè)集成的工作環(huán)境,一方面極大地提高了操作者的工作效率,減少資源損耗,另一方面在出現(xiàn)故障時(shí),通過地面驗(yàn)證,控制策略可以提高對(duì)執(zhí)行效果估計(jì)的可信度[11]。
根據(jù)以上對(duì)信息安全現(xiàn)狀的分析,以及月球探測(cè)器遙操作系統(tǒng)的概念、特點(diǎn)和功能的介紹,可以發(fā)現(xiàn)國(guó)產(chǎn)操作系統(tǒng)在國(guó)家政策推動(dòng)以及需求快速提升的作用下,其最好時(shí)代漸行漸近,在此背景下,加快航天領(lǐng)域軟件國(guó)產(chǎn)化勢(shì)在必行。本文以某探月工程遙操作系統(tǒng)為例,分析并完成其移植。
某遙操作系統(tǒng)基于Windows+Visual Studio 2008+Qt 4.7.4所開發(fā)。結(jié)合此軟件開發(fā)環(huán)境,對(duì)IDE、代碼、開源庫(kù)、編譯問題進(jìn)行分析和定位,并對(duì)移植軟件進(jìn)行測(cè)試,給出運(yùn)行界面效果圖。移植的實(shí)現(xiàn)主要分為四步,首先用能夠跨平臺(tái)的Code:Blocks替代Windows開發(fā)環(huán)境的IDE;將項(xiàng)目代碼導(dǎo)入開發(fā)環(huán)境;完成OSG庫(kù)的編譯移植;構(gòu)建、運(yùn)行代碼,進(jìn)行糾錯(cuò)。
本次實(shí)驗(yàn)使用的軟件有 Qt 4.7.4、Code:Blocks。Qt是跨平臺(tái)C++圖形用戶界面應(yīng)用程序開發(fā)框架,其支持Linux系統(tǒng),不需要再用其他的開發(fā)框架進(jìn)行替代。由于VS不可以跨平臺(tái),這里選擇被廣泛使用的Code::Blocks進(jìn)行替代。Code:Blocks是一種跨平臺(tái)的集成開發(fā)環(huán)境編輯器,可以編寫C程序、C++程序,其支持Windows、Linux和Mac等多種操作系統(tǒng),內(nèi)部嵌有Mi?crosoft C、GUN C和Intel C等諸多編譯器。這里簡(jiǎn)單介紹一下Qt、Code:Blocks在中標(biāo)麒麟操作系統(tǒng)下的安裝過程。Qt的安裝采用源碼編譯方式,具體步驟為:安裝依賴庫(kù)(yum install lib*)、終端源碼編譯(./configure、gmake、gmake install)、設(shè)置環(huán)境變量。本文采用中標(biāo)麒麟系統(tǒng),在官網(wǎng)上下載 code:blocks-13.12-1.el20.x86_64.tar安裝文件,解壓縮后執(zhí)行“rpm–ivh文件名”命令依次安裝其中的四個(gè).rpm文件。安裝完成之后,需要打開圖形化界面,在“設(shè)置”->“編譯器和調(diào)試器”下,檢查選擇的編譯器是否為GUN C以及編譯器安裝的位置是否正確。Code:Blocks中運(yùn)行程序控制臺(tái)界面默認(rèn)使用XTREM,在麒麟系統(tǒng)中默認(rèn)沒有安裝,選擇“菜單”->“環(huán)境”進(jìn)入環(huán)境設(shè)置,將Terminal to launch console program的選項(xiàng)改為gnome-terminal–t$TI?TLE –x。
在 Code:Blocks 中新建 QT4 project的項(xiàng)目,其中需要選擇Qt的安裝路徑,保證編譯器為GUN C。將項(xiàng)目源碼中.cpp文件都拷貝到新建的項(xiàng)目目錄中,然后把它們都添加進(jìn)項(xiàng)目。編譯.ui文件,在終端切換到ui文件所在的目錄,執(zhí)行 qmake–project、qmake、make命令,將所生成的ui_*.h文件添加進(jìn)項(xiàng)目。
Qt程序在交由標(biāo)準(zhǔn)編譯器編譯之前,先要使用moc分析C++源文件。如果一個(gè)頭文件中包含了Q_OBJECT宏,則會(huì)生成另外一個(gè)包含Q_OBJECT宏實(shí)現(xiàn)代碼的C++源文件(moc_*.cpp文件)。新生成的會(huì)與原文件一起編譯。由于程序源碼中包含Q_OB?JECT宏,因此要通過moc命令將所有的頭文件生成對(duì)應(yīng)的moc_*.cpp文件,本文通過腳本文件實(shí)現(xiàn)此步驟。腳本的關(guān)鍵代碼如下:
for file in./*.h;do//循環(huán)當(dāng)前目錄所有的頭文件
if[-e"$file"];then//如果文件存在
fileWithoutPath=$(basename$file)//取文件名
nameWithoutExtension=${fileWithoutPath%.*}
mocName=moc_$nameWithoutExtension.cpp//組成moc_*.cpp格式的文件名
moc"$file"-o"$mocName"http://利用moc命令將原文件解析為moc_*.cpp文件
fi//if語(yǔ)句結(jié)束
done//do語(yǔ)句結(jié)束
OSG(OpenSceneGraph),采用 OpenGL 技術(shù)開發(fā),為應(yīng)用軟件提供了各種高級(jí)渲染特性。OSG在中標(biāo)麒麟系統(tǒng)上的移植和運(yùn)行主要包括幾個(gè)步驟:①安裝所需軟件、庫(kù);②OSG源碼編譯并安裝;③將編譯好的庫(kù)文件導(dǎo)入 Code:Blocks中,其中的主要技術(shù)流程見圖1。
圖1 OSG中標(biāo)麒麟系統(tǒng)移植過程圖
安裝Cmake,為編譯OSG源碼做準(zhǔn)備。OSG使用到的第三方庫(kù)有:png、jpeg、tiff、freetype、curl等,這些第三方庫(kù)都是采用yum源的安裝方式進(jìn)行安裝。
接下來打開命令行,進(jìn)入到OSG源碼目錄,依次執(zhí)行./configure、make、make install命令,為了驗(yàn)證 OSG是否安裝成功,這里首先設(shè)置環(huán)境變量,利用osgver?sion或者osgviewer cow.osg驗(yàn)證。
最后一步將編譯好的OSG庫(kù)添加到Code:Blocks中。打開 Code:Blocks 平臺(tái),打開“項(xiàng)目”->“構(gòu)建選項(xiàng)”,在“鏈接器設(shè)置”中加入.so文件,在“搜索路徑”->“編譯器”中加入include路徑,“鏈接器”處加入lib文件。
在完成以上軟件安裝、環(huán)境配置后,接下來就要構(gòu)建項(xiàng)目。構(gòu)建完成后,會(huì)發(fā)現(xiàn)出現(xiàn)了很多錯(cuò)誤,大部分是由于兩個(gè)系統(tǒng)C++編程存在差異造成的。例如文件路徑問題:Windows支持兩種方式,./sys/MOON.jpeg和.sysMOON.jpeg,而中標(biāo)麒麟只支持前者。頭文件的大小寫問題:Windows不區(qū)分大小寫,而中標(biāo)麒麟對(duì)大小寫敏感,即include關(guān)鍵字所包括的文件名要與文件的命名一致;Linux系統(tǒng)中沒有windows.h文件,要將用到的文件中的方法全部進(jìn)行替代或重新定義。將這些問題進(jìn)行更改之后,執(zhí)行運(yùn)行命令,項(xiàng)目成功運(yùn)行。
移植后的遙操作系統(tǒng)“機(jī)械臂控制參數(shù)設(shè)置”界面如圖2所示,主要功能是對(duì)探測(cè)器的活動(dòng)機(jī)構(gòu)進(jìn)行規(guī)劃,主要包括太陽(yáng)翼、桅桿、機(jī)械臂等,并支持三維顯示和手動(dòng)規(guī)劃功能,界面清晰直觀,見圖2:
圖2 機(jī)械臂控制參數(shù)設(shè)置
通過對(duì)比遙操作系統(tǒng)在兩種操作系統(tǒng)上的運(yùn)行效果及數(shù)據(jù)測(cè)試,二者無區(qū)別。中標(biāo)麒麟系統(tǒng)與Win?dows操作系統(tǒng)在性能方面還有以下幾點(diǎn)優(yōu)勢(shì):
(1)中標(biāo)麒麟是開源免費(fèi)系統(tǒng),這是與Windows的本質(zhì)區(qū)別;
(2)中標(biāo)麒麟系統(tǒng)采用了類Windows操作系統(tǒng)的桌面,以用戶實(shí)際使用為目標(biāo)進(jìn)行桌面設(shè)計(jì);
(3)本次實(shí)驗(yàn)使用 Code:Blocks 作為集成開發(fā)環(huán)境,雖然其安裝方式仍然是源碼編譯安裝,這是因?yàn)閲?guó)產(chǎn)操作系統(tǒng)還沒的到普及,國(guó)內(nèi)的軟件生態(tài)鏈還沒完善,但相對(duì)于國(guó)產(chǎn)操作系統(tǒng)所帶來的安全性,這是可以接受的。
從以上的移植過程來看,就中標(biāo)麒麟系統(tǒng)來說,完善的開發(fā)工具,良好的開發(fā)環(huán)境,已經(jīng)全面滿足項(xiàng)目開發(fā)需要,極大地方便了用戶在中標(biāo)麒麟開發(fā)平臺(tái)下進(jìn)行應(yīng)用移植和開發(fā),很好地支撐著客戶的項(xiàng)目開發(fā)工作。除此之外,更重要的是,在項(xiàng)目開發(fā)的起始就應(yīng)該考慮到項(xiàng)目的移植問題,這可以減少后續(xù)的很多工作。
本文將某遙操作系統(tǒng)借助 Qt、Code:Blocks,移植到中標(biāo)麒麟系統(tǒng)中,總結(jié)和概括了移植過程及步驟的關(guān)鍵點(diǎn)。該移植過程證實(shí)了我國(guó)建立自主可控操作系統(tǒng)在航天領(lǐng)域的可行性,并且為航天領(lǐng)域自主可控組件及其知識(shí)產(chǎn)權(quán)的國(guó)際化保護(hù)提供現(xiàn)實(shí)依據(jù)。