夏濤
摘要 研究THALES富達(dá)IBIS服務(wù)器的自動(dòng)化安裝部署,有利于擺脫THALES雷達(dá)服務(wù)器的軟件系統(tǒng)與硬件系統(tǒng)的綁定限制,有利于在原廠服務(wù)器硬件停產(chǎn)的條件下,擴(kuò)大可選硬件的范圍。另外,基于光盤(pán)的傳統(tǒng)安裝方式,由于光驅(qū)設(shè)備老化易損壞以及保存介質(zhì)期限等原因,已不再適應(yīng)于當(dāng)前的服務(wù)器運(yùn)維工作,而U盤(pán)安裝方式,已經(jīng)成為服務(wù)器安裝的主流方式。此外,通過(guò)軟件與硬件的解耦,也為今后服務(wù)器集群的搭建以及虛擬化服務(wù)器的安裝部署提供可能。
【關(guān)鍵詞】自動(dòng)化安裝部署 THALES IBIS 服務(wù)器運(yùn)維 解耦
現(xiàn)代雷達(dá)大多采用服務(wù)器為硬件基礎(chǔ),配以廠方專(zhuān)用軟件,完成雷達(dá)信號(hào)處理和顯示。由于雷達(dá)各服務(wù)器處于24小時(shí)不間斷運(yùn)行狀態(tài),易硬件老化現(xiàn)象;另外,服務(wù)器硬件更新?lián)Q代的加快,導(dǎo)致雷達(dá)投產(chǎn)5年后,原配硬件停產(chǎn)而無(wú)法在市場(chǎng)上購(gòu)得;再者,部分雷達(dá)廠商服務(wù)器軟件的安裝限定了各硬件板卡的型號(hào)。這些因素都為雷達(dá)設(shè)備保障和故障處理增加了難度。如何解決上述不利因素,特別是解決定軟硬件綁定的問(wèn)題,將有可能擺脫廠方軟件對(duì)硬件的綁定限制,擴(kuò)大硬件的可選范圍,對(duì)雷達(dá)設(shè)備的維護(hù)保障有著極其重要的現(xiàn)實(shí)意義。
本文以上海虹橋THALES雷達(dá)系統(tǒng)的IBIS服務(wù)器為例,介紹該服務(wù)器軟件安裝流程及遇到問(wèn)題的解決辦法,并采用一臺(tái)與廠方IBIS硬件配置不同的工作站作為實(shí)驗(yàn)機(jī),討論在實(shí)驗(yàn)機(jī)環(huán)境下,如何解除軟硬件的綁定以及采用U盤(pán)自動(dòng)安裝替代傳統(tǒng)光盤(pán)安裝的實(shí)現(xiàn)方法。
IBIS服務(wù)器的軟件安裝共分為兩個(gè)階段,第一個(gè)階段為L(zhǎng)INUX操作系統(tǒng)的安裝,第二階段為IBIS應(yīng)用程序的安裝。
1 操作系統(tǒng)的安裝
IBIS服 務(wù) 器 采 用 是 以RedHatEnterpriseLinux 5操作系統(tǒng)為基礎(chǔ),經(jīng)THALES公司定制的2.6.23內(nèi)核版本(Linux2.6.23.1-Thales20080825PAE)。因此,要使用U盤(pán)完成操作系統(tǒng)的自動(dòng)化引導(dǎo)及安裝需要了解以下幾點(diǎn):
(1) Linux操作系統(tǒng)開(kāi)機(jī)引導(dǎo)的一般流程:
(2)如何使用Kickstart腳本執(zhí)行定制化安裝。
1.1 Linux操作系統(tǒng)開(kāi)機(jī)引導(dǎo)流程及實(shí)際操作
整個(gè)系統(tǒng)在啟動(dòng)的時(shí)候,首先讀取BIOS(BasicInputOutputSystem) 內(nèi)容,BIOS里記錄了主板的芯片集與相關(guān)設(shè)置;獲取BIOS設(shè)置值之后,系統(tǒng)會(huì)根據(jù)BIOS的數(shù)據(jù)進(jìn)行加電自檢(PowerOnSelflest.POST), 初始化硬件檢測(cè),根據(jù)BIOS中設(shè)置的“可用來(lái)啟動(dòng)的設(shè)備搜索程序”嘗試加載操作系統(tǒng)。系統(tǒng)首先尋找第一個(gè)啟動(dòng)設(shè)備的MBR(MasterBootRecorder),MBR位于一塊硬盤(pán)的第O軌上,是計(jì)算機(jī)啟動(dòng)之后要去使用硬盤(pán)時(shí)必須讀取的第一個(gè)區(qū)域,這個(gè)區(qū)域中記錄了硬盤(pán)里的所有分區(qū)信息以及啟動(dòng)時(shí)可寫(xiě)入引導(dǎo)程序的位置。
在實(shí)驗(yàn)過(guò)程中,使用Ultralso作為制作U盤(pán)安裝Linux操作系統(tǒng)的工具,在制作硬盤(pán)映像的過(guò)程中,寫(xiě)入新的引導(dǎo)扇區(qū)類(lèi)型必須選擇sysLinux,這樣U盤(pán)中就有了Linux系統(tǒng)的引導(dǎo)程序。
完成引導(dǎo)之后,系統(tǒng)讀取U盤(pán)中/isolinux目錄下的內(nèi)容,并進(jìn)入圖1所示界面,直接輸入回車(chē)鍵,系統(tǒng)會(huì)根據(jù)如下給出的/isolinuxcfg中配置的內(nèi)容,加載內(nèi)核(vmlinuz)并且解壓initrd.img文件,由于使用U盤(pán)安裝操作系統(tǒng),stage2文件以及ks文件所在路徑必須為hd:sdb4,否則在安裝過(guò)程中會(huì)找不到上述文件導(dǎo)致安裝失敗。
/isolinux.cfg中配置的內(nèi)容:
(1) default auto
(2) prompt1
(3) timeout 0
(4) display boot.msg
(5) Fl boot.msg
(6) label auto
(7) kernel vmlinuz
(8) append initrd=initrd.imgstage2=hd:sdb4 ks=hd:sdb4:/Thales/ks/ciriusauto.ks
(9)//以下省略…
1.2 使用Kickstart腳本執(zhí)行定制化安裝
Kickstart文件是Linux自動(dòng)化安裝部署的核心文件,記錄了在安裝過(guò)程中的系統(tǒng)參數(shù)選擇(例如語(yǔ)言的設(shè)置,時(shí)區(qū)的選擇等)、RPM安裝包的選擇以及硬盤(pán)的分區(qū)情況等。另外還可以在ks文件的%pre%以及%post%部分插入要執(zhí)行的指令,實(shí)現(xiàn)操作系統(tǒng)個(gè)性化的定制安裝。
在虹橋Thales雷達(dá)系統(tǒng)中,服務(wù)器的系統(tǒng)安裝統(tǒng)一使用/Thales/ks/目錄下的ciriusauto.ks文件,該文件主要包括三個(gè)組成部分:
(1)%pre%部分,即系統(tǒng)正式安裝前需要執(zhí)行的指令,由于此時(shí)系統(tǒng)尚未安裝,所以此時(shí)執(zhí)行的多為探測(cè)硬件的狀態(tài)、對(duì)磁盤(pán)進(jìn)行分區(qū)等指令;
(2)正式系統(tǒng)安裝部分,主要選擇Packages并且進(jìn)行安裝;
(3) %post%部分,即系統(tǒng)安裝完成后需要執(zhí)行的指令,內(nèi)容包括:
l.系統(tǒng)運(yùn)行環(huán)境的配置,如系統(tǒng)啟動(dòng)時(shí)各項(xiàng)服務(wù)的開(kāi)啟與否、系統(tǒng)用戶的創(chuàng)建(包括surw、suro、reboot等)、系統(tǒng)開(kāi)啟過(guò)程中所需要執(zhí)行的腳本、系統(tǒng)自動(dòng)掛載的設(shè)置等);
2.將安裝盤(pán)中的腳本文件拷貝至相應(yīng)目錄下:
3顯卡驅(qū)動(dòng)的安裝等。
現(xiàn)將cirius auto.ks根據(jù)實(shí)際需要修改如下內(nèi)容:
(1)將安裝的方式的cdrom注釋掉而改由harddrive的方式安裝,安裝文件位于/dev/s db4,也就是U盤(pán)的路徑,修改如下:
l.install
2.#install method can be cdrom or nfs
3.#cdrom
4.harddrive --partition=/dev/sdb4 --dir=/
(2)修改系統(tǒng)的硬件級(jí)別(ECLVL)信息。在原先的ks文件中,系統(tǒng)通過(guò)探測(cè)硬件主板的型號(hào)決定了系統(tǒng)的硬件級(jí)別,進(jìn)而在后續(xù)的安裝過(guò)程中(即%post%部分),執(zhí)行不同的Linux指令,因此需要強(qiáng)制指定一個(gè)ECLVL數(shù)值繞開(kāi)系統(tǒng)對(duì)于硬件資源的依賴(lài)。查看本IBIS服務(wù)器設(shè)備的硬件版本為02,因此賦值ECLVL=02。
l.if[ $ECLVL==”DETECT”];then
2.# detect the hardware by the manufacturerid of the motherboard
3.if grep 'Product Name: P8SAA7/tmp/THdmidecode.log; then ECLVL=OO; fi
4.if grep 'Product Name: P8SCT/tmp/TH_dmidecode.log; then ECLVL=01; fi
5.if grep 'Product Name: D975XBX2/tmp/TH_dmidecode.log; then ECLVL=02; fi
6.fi
7.ECLVL=02
(3)在%post%部分還包括了顯卡驅(qū)動(dòng)的安裝。由于實(shí)驗(yàn)機(jī)使用的顯卡與原先安裝盤(pán)中的顯卡驅(qū)動(dòng)對(duì)應(yīng)的顯卡型號(hào)不一致,需在相應(yīng)的部分添加shell指令或shell腳本(shell編程過(guò)程可以參見(jiàn)[2]),幫助系統(tǒng)完成配置。由于IBIS服務(wù)器使用圖形界面進(jìn)行顯示,因此正確的安裝顯卡驅(qū)動(dòng)至關(guān)重要,如果沒(méi)有正確的安裝顯卡驅(qū)動(dòng),進(jìn)入圖形界面時(shí),系統(tǒng)將會(huì)黑屏。
2 IBIS應(yīng)用程序的安裝
2.1 IBIS Application安裝流程及具體操作
THALES公司為各功能服務(wù)器配備了各自的應(yīng)用程序安裝光盤(pán),現(xiàn)將IBIS應(yīng)用程序安裝光盤(pán)中的所有內(nèi)容拷貝至U盤(pán)中并執(zhí)行其中的Insrall_appli.sh腳本。Install_applish執(zhí)行內(nèi)容包括應(yīng)用程序用戶的創(chuàng)建(例如sauto、configpe、hmi用戶等)、系統(tǒng)開(kāi)機(jī)過(guò)程中需要執(zhí)行腳本的復(fù)制(大致位于/home/user/shell及/home/user/private/shell下)、 運(yùn)行IBIS應(yīng)用程序所需要的Java運(yùn)行環(huán)境安裝及配置、應(yīng)用程序所需類(lèi)庫(kù)的支持等。Installappli.sh執(zhí)行完成后,仍需要對(duì)服務(wù)器進(jìn)行必要的配置:
su - configpc:該命令的作用是切換到configpe用戶的Bashshell中,并根據(jù)這個(gè)用戶家目錄中的bashre以及bash_profile腳本,檢查服務(wù)器的網(wǎng)絡(luò)連接情況并對(duì)網(wǎng)口進(jìn)行IP地址的配置。在本實(shí)驗(yàn)機(jī)測(cè)試環(huán)境中,可以選擇修改其中的內(nèi)容,繞開(kāi)網(wǎng)絡(luò)連接情況的檢查,直接對(duì)網(wǎng)口進(jìn)行IP地址的配置。
su - sauto:通過(guò)執(zhí)行sauto用戶家目錄下的內(nèi)容,系統(tǒng)可以進(jìn)入autologin模式,在這種模式下,系統(tǒng)只要開(kāi)機(jī)就會(huì)自動(dòng)進(jìn)入IBIS的應(yīng)用程序主界面。如果沒(méi)有執(zhí)行這一步,系統(tǒng)依然會(huì)處于Linux文字模式下,并提示noautologin, nowatchdog, applinotstart,這表明系統(tǒng)的應(yīng)用程序沒(méi)有正常啟動(dòng)。
2.2 安裝過(guò)程中所發(fā)生的問(wèn)題及解決方法
安裝完成并進(jìn)入autologin模式后,服務(wù)器進(jìn)入IBIS的主界面,但是不久之后,系統(tǒng)自動(dòng)重啟。使用U盤(pán)進(jìn)入Lmuxrescue模式下查看位于/home/d/LOG目錄下的日志文件。日志文件中顯示,應(yīng)用程序在執(zhí)行過(guò)程中拋出了java.net.BindException的異常(如圖2所示),該異常的出現(xiàn)主要是由于未能正確的執(zhí)行suconfigpe,從而未能給網(wǎng)口配置正確的IP地址所致。在實(shí)驗(yàn)的環(huán)境中,可以選擇修改/home/user/shell中的configpc.sh中的內(nèi)容,繞開(kāi)網(wǎng)絡(luò)連接情況的檢查,直接對(duì)網(wǎng)口進(jìn)行IP地址的配置。修改過(guò)后使用ifconfig查看對(duì)應(yīng)的以太網(wǎng)口,IP地址配置正常,重啟IBIS該異常消失。
網(wǎng)口配置完成之后,重啟IBIS,進(jìn)入IBIS界面后大約1分鐘左右,系統(tǒng)仍然自動(dòng)重啟。查看/var/log/messages下的系統(tǒng)日志文件,顯示系統(tǒng)收到了一個(gè)SIGTERM的指令導(dǎo)致系統(tǒng)的自動(dòng)重啟(SIGTERM指令可以參見(jiàn)[3]),初步懷疑系統(tǒng)中Watchdog的存在所致。由于THALES公司的IBIS服務(wù)器自帶了一張Berkshire公司的Watchdog卡,因此系統(tǒng)能定時(shí)的“喂狗”,然而實(shí)驗(yàn)機(jī)缺少這一張板卡,所以會(huì)導(dǎo)致系統(tǒng)的不斷自動(dòng)重啟,而且重啟只出現(xiàn)在進(jìn)入IBIS應(yīng)用程序后。由此判斷是IBIS應(yīng)用程序中有相應(yīng)的設(shè)置。
IBIS軟件位于/home/user/hmi/V.Ol_ 02/HMI/visu-tsfjar,這是一個(gè)Java的入口程序。其依賴(lài)的運(yùn)行時(shí)類(lèi)庫(kù)及依賴(lài)的jar包位于同目錄下的Iib文件夾下。使用jd-gui工具分別查看visu-tsfjar中visu-foudationjar的class文件, 發(fā)現(xiàn)在visu-foudationjar中包含了三個(gè)Watchdog的相關(guān)類(lèi),它們分別是WatchDogManager$SwingWatcher.class. WatchDogManager$Watchedlnfoclass和WatchDogManager.class, 可以看到在WatchDogManager.class中, 具有判斷Watchdog重置系統(tǒng)的條件,一旦滿足就將重啟系統(tǒng),
重置條件為:
1 for(;;){
2………∥省略的代碼
3. if (bool){
4.Thread.sleep(c);
5 b();
6.System.exit(2);
7.)
8.}
由于此次實(shí)驗(yàn)的目的主要在于將軟件與硬件解除綁定,因此需要對(duì)上述代碼進(jìn)行修改。進(jìn)入IBIS服務(wù)器的圖形界面,使用Eclipse構(gòu)建自己的工程,在工程下引入新建lib目錄導(dǎo)入運(yùn)行時(shí)類(lèi)庫(kù)以及所依賴(lài)的jar包,同時(shí)在工程下新建package取名為com.thalesgroupsrhmi,在這個(gè)包下面重寫(xiě)這三個(gè)WatchDog相關(guān)類(lèi),對(duì)判斷條件進(jìn)行修改,修改完成后在VMarguments中輸入如下內(nèi)容然后點(diǎn)擊運(yùn)行(下述命令涉及JVM內(nèi)存管理,具體內(nèi)容可參見(jiàn)[4]):
-XX:+PrintCommandLineFlags· X m X 1 6 2 0 M-XX:+HeapDumpOnOuto fM emoryError-XX:HeapDumpPath=/home/d/LOG/ -XX:+UseThreadPriorities-XX:+UseConcMarkSweepGC-XX:+CM SIncrementalMode -Dj ava.librarypath=./lib/Linux/
編譯、運(yùn)行成功,確認(rèn)無(wú)error信息,IBIS程序進(jìn)入圖形界面,同時(shí)無(wú)重啟現(xiàn)象發(fā)生。將所寫(xiě)的程序進(jìn)行打包,得到visu-tsfjar文件,在打包的過(guò)程中,由于外部jar包的依賴(lài),需要在工程文件的根目錄下新建一個(gè)MANIFEST.MF文件,表明依賴(lài)的關(guān)系,具體內(nèi)容如下所示 。
Manifest-Version: 1.0
Ant-Version: Apache Ant l.7.1
Created-By: ll.O-b16 (Sun MicrosystemsInc.)
Main-Class: Launcher
Class-Path: lib/visu-foundation.jar lib/jfreechart-1.0.12.jar lib/jcom
mon-1.0.15.jar lib/gluegen-rt.j ar lib/j ogl.j arlib/genesis-cat253.jar
lib/RAC.jar lib/bds.jar lib/jscience.jar lib/log4j.jar lib/looks.jar
lib/swingx.jar lib/gdf-asterix.j ar lib/genesis-asterix.jar lib/genes
is-runtime.jar lib/plugin-asterix.jar lib/genesis-coverage_mapjar li
b/Robin.jar lib/gdf-rac.jar lib/hasp-srm-api.jar
X-COMMENT: Main-Class will be addedautomatically by build
將重新生成得到的visu-tsf.jar文件拷貝至/home/user/hmi/V.Ol_ 02/HMI,覆蓋原文件,然后重啟實(shí)驗(yàn)機(jī)進(jìn)行測(cè)試。重啟后,系統(tǒng)啟動(dòng)正常,順利進(jìn)入IBIS圖形界面,等待若干時(shí)間,未再次出現(xiàn)自動(dòng)重啟現(xiàn)象。導(dǎo)入在線系統(tǒng)中所使用的preference文件,查看系統(tǒng)中g(shù)eographymap, usermap、Radarparameters(包括SIC、SAC,經(jīng)緯度等信息)顯示情況正常。使用錄像文件進(jìn)行回放,雷達(dá)信號(hào)及原始視頻均正常顯示,實(shí)驗(yàn)順利完成。
3 結(jié)束語(yǔ)
本次IBIS服務(wù)器的自動(dòng)化安裝研究的重大意義在于初步解決了服務(wù)器軟件對(duì)于硬件的依賴(lài),方便了日后備件的采購(gòu)以及服務(wù)器的更新?lián)Q代。在實(shí)驗(yàn)的過(guò)程中,由于受到各種條件的限制,仍有許多不足之處。首先,此次實(shí)驗(yàn)是以上海虹橋機(jī)場(chǎng)THALES雷達(dá)為樣本,對(duì)于其他THALES雷達(dá)是否適用、目前尚未驗(yàn)證其次,上線運(yùn)行驗(yàn)證時(shí)間及允許統(tǒng)計(jì)數(shù)據(jù)仍不充足等。這些不足之處將會(huì)在日后創(chuàng)造條件,完成全面的測(cè)試驗(yàn)證工作。
參考文獻(xiàn)
[1]鳥(niǎo)哥,鳥(niǎo)哥的Linux私房菜基礎(chǔ)學(xué)習(xí)篇(第三版)[M].人民郵電出版社.2010: 596-600,
[2] BruceMolay.Linux編程實(shí)踐教程[M],清華大學(xué)出版社,2004,260:296.
[3] Richard Blum.Linux命令行和shell腳本編程寶典[M].人民郵電出版社,2009,217: 218.
[4]周志明.深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐(第2版)[M].機(jī)械工業(yè)出版社,2013,41:56.