THALES雷达IBIS服务器的软件自动化安装

2018-02-25 14:27夏涛
电子技术与软件工程 2018年12期

夏涛

摘要 研究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.