本发明专利技术涉及软件获取与安装技术领域,特别是一种在虚拟机中自动获取和安装软件的方法。本发明专利技术首先制作一个虚拟机镜像,里面默认开通一个虚拟串口,并且设置开机运行一个代理客户端模块;虚拟机管理程序向虚拟串口发送软件安装的命令;虚拟机上的代理客户端模块监听虚拟串口,接收并解析串口命令,命令中包含了要安装软件的获取地址;如果地址有效的话,那么代理客户端模块就获取软件并执行静默安装,否则不安装。本发明专利技术解决了为满足不同的业务需求而需要制作大量虚拟机镜像、获取软件而把病毒和恶意代码引入虚拟机及软件安装复杂等问题;可应用于虚拟机的软件获取与安装上。
【技术实现步骤摘要】
本专利技术涉及软件获取与安装
,特别是。
技术介绍
云计算对于虚拟机的应用是通过预先安装软件,制作好虚拟机镜像模板以达到快速、批量生成虚拟机的目的。在面临操作系统与软件众多,且两者之间可通过自由搭配来提供服务的应用场景时,需要预先制作的虚拟机模板数量就比较多,且会带来以下问题 一是镜像扩展不方便,增加一个软件时,那么可能就需要重新制作与操作系统数量相 匹配的虚拟机镜像; 二是耗时较长,制作镜像时需要在物理机上相应的操作系统里先做好对应软件的安装,然后通过P2V的方式导出虚拟机镜像,在P2V成功率无法达到100%的情况下,这样做耗费的时间无疑是比较长的; 三是用户获取软件的途径各种各样,获取的软件无法保证其安全性,软件中可能含有恶意代码或病毒,一旦爆发,对云计算中心的网络将造成极大的影响; 四是让用户自行安装软件时可能会发生误操作而导致软件无法正确安装,或者配置有误导致软件无法正常工作。为了提升虚拟机应用的效率,增强虚拟机镜像制作的可扩展性,需要一种通过预先定制虚拟机镜像和相应软件,在虚拟机运行起来后,进行软件自动安装的方式。
技术实现思路
本专利技术解决的技术问题在于提供,解决了为满足不同的业务需求而需要制作大量虚拟机镜像、获取软件而把病毒和恶意代码引入虚拟机及软件安装复杂等问题。本专利技术解决上述技术问题的技术方案是包括如下步骤步骤I :制作一个虚拟机镜像,上面包含一个虚拟串口,并默认运行一个代理客户端模块; 步骤2 :向虚拟机的串口发送预定的串口命令; 步骤3 :虚拟机的代理客户端模块监听指定的虚拟串口,解析包含所要安装软件地址的串口命令;如果解析出来的软件地址有效,执行步骤4 ;如果解析出来的命令不正确或软件地址无效,执行步骤6; 步骤4 :虚拟机的代理客户端模块从地址获取软件; 步骤5 :虚拟机的代理客户端模块对获取到的软件执行静默安装; 步骤6 :安装结束。所述代理客户端模块包括串口命令处理模块、软件获取模块和软件静默安装模块,当虚拟机进入操作系统以后自动运行; 所述串口命令处理模块是一个跨平台的模块,接收特定串口的命令,并且负责解析串口命令,判断命令是否符合约定的格式以及软件地址是否能被访问; 所述软件获取模块是一个从软件库中下载程序到虚拟机上的模块,软件库可由FTP或HTTP服务器提供; 所述软件静默安装模块是一个按照预先设置的值自动执行,不需要人工干预去安装软件的1吴块; 所述软件静默安装模块是一个同时满足Windows虚拟机与Linux虚拟机的静默安装模块。 所述的串口命令格式为类型+分隔符()+URI,如10: :ftp://192. 168. 1.2/office, rar,其中类型部分预留给程序扩展使用,目前默认为10,代表软件地址。向虚拟机串口发送的软件获取和安装的命令直接写入理机的设备文件。软件静默安装模块自动适配操作系统的类型,根据类型的不同,Windows操作系统调用Windows Installer的msiexec. exe命令,Linux操作系统调用rpm命令(红帽发行版)或deb命令(debian发行版)命令完成软件的静默安装。本专利技术通过串口命令按需控制虚拟机自动获取与自动安装软件,可以从一个基本的虚拟机镜像自动按需生成满足不同业务需求的虚拟机,而不需要去手动制定大量的镜像,同时在大量虚拟机需要统一安装补丁的时候,本专利技术也提供了很大的便利性。本专利技术的虚拟机从指定软件库获取所需软件,各种软件可以在一个地方统一管理,降低了虚拟机中安装软件而引入恶意代码和病毒的风险。本专利技术向虚拟机串口发送的软件获取和安装的命令直接通过写物理机的设备文件来实现,不受网络环境的影响,区别于一般的软件安装和升级程序受限于网络的缺点。本专利技术能自动适配操作系统的类型,区别于一般的软件安装和升级程序只能单一用于Windows或Linux的限制。附图说明下面结合附图对本专利技术进一步说明 图I为本专利技术方法流程 图2为本专利技术代理客户端模块结构框图。具体实施例方式如图I所示,先制作一个虚拟机镜像,上面包含一个虚拟串口,并默认运行一个代理客户端模块,本过程可以由libvirt. xml中定义的一个虚拟串口来实现,定义如下〈console type=' pty' tty=' /dev/pts' > 〈source path=' /dev/pts' /> 〈target type=' serial' port='0' /> </console) 这里定义了一个串口,端口号是0,表示C0MM1,并且映射到了物理机的/dev/pts设备文件上;代理客户端模块中的串口命令处理模块接收串口命令并解析其内容,本程序可由JavaCommunications API 实现,代码如下 /林*初始化串口监听 氺* throws ExceptionV public SerialMonitor init () throws Exception { try { portld = CommPortIdentifier. getPortldentifier( “C0MM1”); serialPort = (SerialPort) portld. open ( “SerialMonitor,,,2000);System, out. println(Start to monitor data from serial port + portName);log. info (^Start to monitor data from serial port 〃 +portName);inStream = serialPort. getlnputStreamO ;isPortOpen = true;} catch (NoSuchPortException ex) { throw new Exception (ex. toString ());} catch (PortInUseException ex) { throw new Exception (ex. toString ());} return this; } /# *处理接收到的数据,分为3部分,一是类别,标识符分别为10(软件)、11 (数据)*二是软件或数据源地址,三是软件的默认安装命令,若没有则以N替代*/ public void readData() { try { byte [] readBuffer = new byte [512];int i = 0;while (inStream. available () > 0) {i = inStream. read(readBuffer); } String command = new String (readBuffer,0,i - I); log. info(^Receive Command:\n〃 + command);String口 comms = command, split(〃〃); DataType type = DataType. getType (Integer.parselnt (comms )); St本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种在虚拟机中自动获取和安装软件的方法,其特征在于包括如下步骤 步骤I:制作ー个虚拟机镜像,上面包含一个虚拟串ロ,并默认运行ー个代理客户端模块; 步骤2 :向虚拟机的串ロ发送预定的串ロ命令; 步骤3 :虚拟机的代理客户端模块监听指定的虚拟串ロ,解析包含所要安装软件地址的串ロ命令;如果解析出来的软件地址有效,执行步骤4 ;如果解析出来的命令不正确或软件地址无效,执行步骤6; 步骤4 :虚拟机的代理客户端模块从地址获取软件; 步骤5 :虚拟机的代理客户端模块对获取到的软件执行静默安装; 步骤6 :安装结束。2.根据权利要求I所述的在虚拟机中自动获取和安装软件的方法,其特征在于所述代理客户端模块包括串ロ命令处理模块、软件获取模块和软件静默安装模块,当虚拟机进入操作系统以后自动运行; 所述串ロ命令处理模块是ー个跨平台的模块,接收特定串ロ的命令,并且负责解析串ロ命令,判断命令是否符合约定的格式以及软件地址是否能被访问; 所述软件获取模块是ー个从软件库中下载程序到虚拟机上的模块,软件库可由FTP或HTTP服务器提供; 所述软件静默安装模块是一个按照预先设置的值自动执行,不需要人工干预去安装软件的ホ吴块; 所述软件静默安装模块是ー个同时满足Windo...
【专利技术属性】
技术研发人员:莫展鹏,季统凯,岳强,
申请(专利权)人:广东电子工业研究院有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。