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

圖1 OSG中標麒麟系統(tǒng)移植過程圖
安裝Cmake,為編譯OSG源碼做準備。OSG使用到的第三方庫有:png、jpeg、tiff、freetype、curl等,這些第三方庫都是采用yum源的安裝方式進行安裝。
接下來打開命令行,進入到OSG源碼目錄,依次執(zhí)行./configure、make、make install命令,為了驗證 OSG是否安裝成功,這里首先設置環(huán)境變量,利用osgver?sion或者osgviewer cow.osg驗證。
最后一步將編譯好的OSG庫添加到Code:Blocks中。打開 Code:Blocks 平臺,打開“項目”->“構(gòu)建選項”,在“鏈接器設置”中加入.so文件,在“搜索路徑”->“編譯器”中加入include路徑,“鏈接器”處加入lib文件。
在完成以上軟件安裝、環(huán)境配置后,接下來就要構(gòu)建項目。構(gòu)建完成后,會發(fā)現(xiàn)出現(xiàn)了很多錯誤,大部分是由于兩個系統(tǒng)C++編程存在差異造成的。例如文件路徑問題:Windows支持兩種方式,./sys/MOON.jpeg和.sysMOON.jpeg,而中標麒麟只支持前者。頭文件的大小寫問題:Windows不區(qū)分大小寫,而中標麒麟對大小寫敏感,即include關鍵字所包括的文件名要與文件的命名一致;Linux系統(tǒng)中沒有windows.h文件,要將用到的文件中的方法全部進行替代或重新定義。將這些問題進行更改之后,執(zhí)行運行命令,項目成功運行。
移植后的遙操作系統(tǒng)“機械臂控制參數(shù)設置”界面如圖2所示,主要功能是對探測器的活動機構(gòu)進行規(guī)劃,主要包括太陽翼、桅桿、機械臂等,并支持三維顯示和手動規(guī)劃功能,界面清晰直觀,見圖2:

圖2 機械臂控制參數(shù)設置
通過對比遙操作系統(tǒng)在兩種操作系統(tǒng)上的運行效果及數(shù)據(jù)測試,二者無區(qū)別。中標麒麟系統(tǒng)與Win?dows操作系統(tǒng)在性能方面還有以下幾點優(yōu)勢:
(1)中標麒麟是開源免費系統(tǒng),這是與Windows的本質(zhì)區(qū)別;
(2)中標麒麟系統(tǒng)采用了類Windows操作系統(tǒng)的桌面,以用戶實際使用為目標進行桌面設計;
(3)本次實驗使用 Code:Blocks 作為集成開發(fā)環(huán)境,雖然其安裝方式仍然是源碼編譯安裝,這是因為國產(chǎn)操作系統(tǒng)還沒的到普及,國內(nèi)的軟件生態(tài)鏈還沒完善,但相對于國產(chǎn)操作系統(tǒng)所帶來的安全性,這是可以接受的。
從以上的移植過程來看,就中標麒麟系統(tǒng)來說,完善的開發(fā)工具,良好的開發(fā)環(huán)境,已經(jīng)全面滿足項目開發(fā)需要,極大地方便了用戶在中標麒麟開發(fā)平臺下進行應用移植和開發(fā),很好地支撐著客戶的項目開發(fā)工作。除此之外,更重要的是,在項目開發(fā)的起始就應該考慮到項目的移植問題,這可以減少后續(xù)的很多工作。
本文將某遙操作系統(tǒng)借助 Qt、Code:Blocks,移植到中標麒麟系統(tǒng)中,總結(jié)和概括了移植過程及步驟的關鍵點。該移植過程證實了我國建立自主可控操作系統(tǒng)在航天領域的可行性,并且為航天領域自主可控組件及其知識產(chǎn)權(quán)的國際化保護提供現(xiàn)實依據(jù)。