夏濤

摘要 研究THALES富達IBIS服務器的自動化安裝部署,有利于擺脫THALES雷達服務器的軟件系統與硬件系統的綁定限制,有利于在原廠服務器硬件停產的條件下,擴大可選硬件的范圍。另外,基于光盤的傳統安裝方式,由于光驅設備老化易損壞以及保存介質期限等原因,已不再適應于當前的服務器運維工作,而U盤安裝方式,已經成為服務器安裝的主流方式。此外,通過軟件與硬件的解耦,也為今后服務器集群的搭建以及虛擬化服務器的安裝部署提供可能。
【關鍵詞】自動化安裝部署 THALES IBIS 服務器運維 解耦
現代雷達大多采用服務器為硬件基礎,配以廠方專用軟件,完成雷達信號處理和顯示。由于雷達各服務器處于24小時不間斷運行狀態,易硬件老化現象;另外,服務器硬件更新換代的加快,導致雷達投產5年后,原配硬件停產而無法在市場上購得;再者,部分雷達廠商服務器軟件的安裝限定了各硬件板卡的型號。這些因素都為雷達設備保障和故障處理增加了難度。如何解決上述不利因素,特別是解決定軟硬件綁定的問題,將有可能擺脫廠方軟件對硬件的綁定限制,擴大硬件的可選范圍,對雷達設備的維護保障有著極其重要的現實意義。
本文以上海虹橋THALES雷達系統的IBIS服務器為例,介紹該服務器軟件安裝流程及遇到問題的解決辦法,并采用一臺與廠方IBIS硬件配置不同的工作站作為實驗機,討論在實驗機環境下,如何解除軟硬件的綁定以及采用U盤自動安裝替代傳統光盤安裝的實現方法。
IBIS服務器的軟件安裝共分為兩個階段,第一個階段為LINUX操作系統的安裝,第二階段為IBIS應用程序的安裝。
1 操作系統的安裝
IBIS服 務 器 采 用 是 以RedHatEnterpriseLinux 5操作系統為基礎,經THALES公司定制的2.6.23內核版本(Linux2.6.23.1-Thales20080825PAE)。因此,要使用U盤完成操作系統的自動化引導及安裝需要了解以下幾點:
(1) Linux操作系統開機引導的一般流程:
(2)如何使用Kickstart腳本執行定制化安裝。
1.1 Linux操作系統開機引導流程及實際操作
整個系統在啟動的時候,首先讀取BIOS(BasicInputOutputSystem) 內容,BIOS里記錄了主板的芯片集與相關設置;獲取BIOS設置值之后,系統會根據BIOS的數據進行加電自檢(PowerOnSelflest.POST), 初始化硬件檢測,根據BIOS中設置的“可用來啟動的設備搜索程序”嘗試加載操作系統。系統首先尋找第一個啟動設備的MBR(MasterBootRecorder),MBR位于一塊硬盤的第O軌上,是計算機啟動之后要去使用硬盤時必須讀取的第一個區域,這個區域中記錄了硬盤里的所有分區信息以及啟動時可寫入引導程序的位置。
在實驗過程中,使用Ultralso作為制作U盤安裝Linux操作系統的工具,在制作硬盤映像的過程中,寫入新的引導扇區類型必須選擇sysLinux,這樣U盤中就有了Linux系統的引導程序。
完成引導之后,系統讀取U盤中/isolinux目錄下的內容,并進入圖1所示界面,直接輸入回車鍵,系統會根據如下給出的/isolinuxcfg中配置的內容,加載內核(vmlinuz)并且解壓initrd.img文件,由于使用U盤安裝操作系統,stage2文件以及ks文件所在路徑必須為hd:sdb4,否則在安裝過程中會找不到上述文件導致安裝失敗。
/isolinux.cfg中配置的內容:
(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腳本執行定制化安裝
Kickstart文件是Linux自動化安裝部署的核心文件,記錄了在安裝過程中的系統參數選擇(例如語言的設置,時區的選擇等)、RPM安裝包的選擇以及硬盤的分區情況等。另外還可以在ks文件的%pre%以及%post%部分插入要執行的指令,實現操作系統個性化的定制安裝。
在虹橋Thales雷達系統中,服務器的系統安裝統一使用/Thales/ks/目錄下的ciriusauto.ks文件,該文件主要包括三個組成部分:
(1)%pre%部分,即系統正式安裝前需要執行的指令,由于此時系統尚未安裝,所以此時執行的多為探測硬件的狀態、對磁盤進行分區等指令;
(2)正式系統安裝部分,主要選擇Packages并且進行安裝;
(3) %post%部分,即系統安裝完成后需要執行的指令,內容包括:
l.系統運行環境的配置,如系統啟動時各項服務的開啟與否、系統用戶的創建(包括surw、suro、reboot等)、系統開啟過程中所需要執行的腳本、系統自動掛載的設置等);
2.將安裝盤中的腳本文件拷貝至相應目錄下:
3顯卡驅動的安裝等。
現將cirius auto.ks根據實際需要修改如下內容:
(1)將安裝的方式的cdrom注釋掉而改由harddrive的方式安裝,安裝文件位于/dev/s db4,也就是U盤的路徑,修改如下:
l.install
2.#install method can be cdrom or nfs
3.#cdrom
4.harddrive --partition=/dev/sdb4 --dir=/
(2)修改系統的硬件級別(ECLVL)信息。在原先的ks文件中,系統通過探測硬件主板的型號決定了系統的硬件級別,進而在后續的安裝過程中(即%post%部分),執行不同的Linux指令,因此需要強制指定一個ECLVL數值繞開系統對于硬件資源的依賴。查看本IBIS服務器設備的硬件版本為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%部分還包括了顯卡驅動的安裝。由于實驗機使用的顯卡與原先安裝盤中的顯卡驅動對應的顯卡型號不一致,需在相應的部分添加shell指令或shell腳本(shell編程過程可以參見[2]),幫助系統完成配置。由于IBIS服務器使用圖形界面進行顯示,因此正確的安裝顯卡驅動至關重要,如果沒有正確的安裝顯卡驅動,進入圖形界面時,系統將會黑屏。
2 IBIS應用程序的安裝
2.1 IBIS Application安裝流程及具體操作
THALES公司為各功能服務器配備了各自的應用程序安裝光盤,現將IBIS應用程序安裝光盤中的所有內容拷貝至U盤中并執行其中的Insrall_appli.sh腳本。Install_applish執行內容包括應用程序用戶的創建(例如sauto、configpe、hmi用戶等)、系統開機過程中需要執行腳本的復制(大致位于/home/user/shell及/home/user/private/shell下)、 運行IBIS應用程序所需要的Java運行環境安裝及配置、應用程序所需類庫的支持等。Installappli.sh執行完成后,仍需要對服務器進行必要的配置:
su - configpc:該命令的作用是切換到configpe用戶的Bashshell中,并根據這個用戶家目錄中的bashre以及bash_profile腳本,檢查服務器的網絡連接情況并對網口進行IP地址的配置。在本實驗機測試環境中,可以選擇修改其中的內容,繞開網絡連接情況的檢查,直接對網口進行IP地址的配置。
su - sauto:通過執行sauto用戶家目錄下的內容,系統可以進入autologin模式,在這種模式下,系統只要開機就會自動進入IBIS的應用程序主界面。如果沒有執行這一步,系統依然會處于Linux文字模式下,并提示noautologin, nowatchdog, applinotstart,這表明系統的應用程序沒有正常啟動。
2.2 安裝過程中所發生的問題及解決方法
安裝完成并進入autologin模式后,服務器進入IBIS的主界面,但是不久之后,系統自動重啟。使用U盤進入Lmuxrescue模式下查看位于/home/d/LOG目錄下的日志文件。日志文件中顯示,應用程序在執行過程中拋出了java.net.BindException的異常(如圖2所示),該異常的出現主要是由于未能正確的執行suconfigpe,從而未能給網口配置正確的IP地址所致。在實驗的環境中,可以選擇修改/home/user/shell中的configpc.sh中的內容,繞開網絡連接情況的檢查,直接對網口進行IP地址的配置。修改過后使用ifconfig查看對應的以太網口,IP地址配置正常,重啟IBIS該異常消失。
網口配置完成之后,重啟IBIS,進入IBIS界面后大約1分鐘左右,系統仍然自動重啟。查看/var/log/messages下的系統日志文件,顯示系統收到了一個SIGTERM的指令導致系統的自動重啟(SIGTERM指令可以參見[3]),初步懷疑系統中Watchdog的存在所致。由于THALES公司的IBIS服務器自帶了一張Berkshire公司的Watchdog卡,因此系統能定時的“喂狗”,然而實驗機缺少這一張板卡,所以會導致系統的不斷自動重啟,而且重啟只出現在進入IBIS應用程序后。由此判斷是IBIS應用程序中有相應的設置。
IBIS軟件位于/home/user/hmi/V.Ol_ 02/HMI/visu-tsfjar,這是一個Java的入口程序。其依賴的運行時類庫及依賴的jar包位于同目錄下的Iib文件夾下。使用jd-gui工具分別查看visu-tsfjar中visu-foudationjar的class文件, 發現在visu-foudationjar中包含了三個Watchdog的相關類,它們分別是WatchDogManager$SwingWatcher.class. WatchDogManager$Watchedlnfoclass和WatchDogManager.class, 可以看到在WatchDogManager.class中, 具有判斷Watchdog重置系統的條件,一旦滿足就將重啟系統,
重置條件為:
1 for(;;){
2………∥省略的代碼
3. if (bool){
4.Thread.sleep(c);
5 b();
6.System.exit(2);
7.)
8.}
由于此次實驗的目的主要在于將軟件與硬件解除綁定,因此需要對上述代碼進行修改。進入IBIS服務器的圖形界面,使用Eclipse構建自己的工程,在工程下引入新建lib目錄導入運行時類庫以及所依賴的jar包,同時在工程下新建package取名為com.thalesgroupsrhmi,在這個包下面重寫這三個WatchDog相關類,對判斷條件進行修改,修改完成后在VMarguments中輸入如下內容然后點擊運行(下述命令涉及JVM內存管理,具體內容可參見[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/
編譯、運行成功,確認無error信息,IBIS程序進入圖形界面,同時無重啟現象發生。將所寫的程序進行打包,得到visu-tsfjar文件,在打包的過程中,由于外部jar包的依賴,需要在工程文件的根目錄下新建一個MANIFEST.MF文件,表明依賴的關系,具體內容如下所示 。
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,覆蓋原文件,然后重啟實驗機進行測試。重啟后,系統啟動正常,順利進入IBIS圖形界面,等待若干時間,未再次出現自動重啟現象。導入在線系統中所使用的preference文件,查看系統中geographymap, usermap、Radarparameters(包括SIC、SAC,經緯度等信息)顯示情況正常。使用錄像文件進行回放,雷達信號及原始視頻均正常顯示,實驗順利完成。
3 結束語
本次IBIS服務器的自動化安裝研究的重大意義在于初步解決了服務器軟件對于硬件的依賴,方便了日后備件的采購以及服務器的更新換代。在實驗的過程中,由于受到各種條件的限制,仍有許多不足之處。首先,此次實驗是以上海虹橋機場THALES雷達為樣本,對于其他THALES雷達是否適用、目前尚未驗證其次,上線運行驗證時間及允許統計數據仍不充足等。這些不足之處將會在日后創造條件,完成全面的測試驗證工作。
參考文獻
[1]鳥哥,鳥哥的Linux私房菜基礎學習篇(第三版)[M].人民郵電出版社.2010: 596-600,
[2] BruceMolay.Linux編程實踐教程[M],清華大學出版社,2004,260:296.
[3] Richard Blum.Linux命令行和shell腳本編程寶典[M].人民郵電出版社,2009,217: 218.
[4]周志明.深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)[M].機械工業出版社,2013,41:56.