一种软启动网络设备的制作方法

文档序号:18101245发布日期:2019-07-06 11:22阅读:199来源:国知局
一种软启动网络设备的制作方法

本发明涉及计算机网络通讯领域,尤其涉及一种网络设备软件启动方法、装置及网络设备。



背景技术:

无线网络在物理上,通常是由各种类型的网络连接设备和传输介质组成,网络设备是连接到网络环境中的物理实体,比如交换机、路由器、网关、无线接入点、无线接入控制器等。

网络设备的运行离不开网络设备软件,网络设备软件从系统的角度可以分为三个层次,主要包括:

第一层次:启动加载程序(bootloader)子系统,系统启动初始化,启动过程中对硬件做基本的检查、引导与加载kernel子系统,也可以对整个设备的软件进行升级,并且bootloader子系统通常对于网络设备软件系统而言,是稳定固化的,后续不需要更新;

第二层次:内核(kernel)子系统,系统操作系统核心,负责屏蔽系统的硬件构成,给rootfs子系统中的应用程序提供抽象的运行环境,启动过程中用于引导和加载rootfs子系统;第三层次:根文件(rootfs)子系统,系统根文件系统,启动过程中会引导和加载各种类型的应用程序,通常与具体业务相关,比如ospf(openshortestpathfirst,开放式最短路径优先协议)、bgp(bordergatewayprotocol,边界网关协议)、dhcp(dynamichostconfigurationprotocol,动态主机配置协议)等协议应用或者用于给整个设备进行软件升级的管理应用等。其中,kernel运行环境是一个中间环节,对用户来说不能直接进行操作,必须加载启动rootfs后才可操作,而bootloader和rootfs则属于独立的可操作的运行环境。

网络设备中通常使用flash闪存作为非易失性存储来放置设备软件,flash闪存主要分为两类:1、并行flash,容量较小,通常不会超过8m字节,划分为用于存放bootloader子系统的分区以及用于存放bootloader相关环境变量的分区。2、串行flash,容量较大,通常多于128m字节,更多的可达到g字节级别,采用分区的方式来存放如下子系统或者数据信息等:kernel分区:用于存放kernel子系统,包括kernel运行文件、kernel配置文件等;rootfs分区:用于存放rootfs子系统,包括了各应用程序的可执行文件、应用配置文件等;data分区:用于存放软件启动或者运行过程中产生的一些数据,软件升级后不允许丢失,比如网络业务相关的配置文件、统计文件、用户文件等。

映像是指文件内容是一个无结构或结构未知的二进制数据集合,这类文件内部即使还具有结构,例如包含了目录与文件,但对于目标设备软件的处理工具而言,它是一个内容不可见的单独文件,这种文件在升级时,需要使用特定工具直接写入存储设备,对其内容不进行解析。例如,用于描述cd(compactdisk)映像iso(isolation)文件,这样的映像文件通过烧写软件写入cd-rom(compactdiscread-onlymemory)中,而iso文件内部就是一个独立的文件系统,但对于主机(host)的文件系统而言,它则是一个普通的常规文件。网络设备上的软件升级就可采用往串行flash刷写映像的方式进行,kernel和rootfs子系统均对应了各自独立的映像文件,每个映像文件可以独立的刷写到各子系统所对应的flash分区之上,所有映像文件最终合并为一个独立的安装包来对外呈现和发布。

目前利用上述安装包对网络设备软件进行升级的过程通常是:在bootloader运行环境或rootfs运行环境中对安装包进行解析;解析出的kernel映像文件刷写到串行flash中指定的kernel分区;将解析出的rootfs映像文件刷写到串行flash中指定的rootfs分区;设备软件重启完成升级。网络设备软件进行启动的过程通常是:网络设备上电,从并行flash中的bootloader开始启动;bootloader对硬件进行基本检查和初始化后,引导并加载串行flash上的kernel分区中的kernel映像;kernel完成必要的初始化后,开始引导和加载rootfs分区中的首个主程序文件;首个主程序文件启动后逐个引导其他所有需要运行的应用程序。

然而在上述网络设备软件升级或启动的过程中,若软件在升级过程中刷写kernel分区或rootfs分区中被异常终止或软件完整性被破坏,该种情况下,软件重新启动后还是会出现bootloader无法正确引导和加载kernel,或kernel无法正确引导和加载rootfs的情况;若软件在运行过程中kernel分区或rootfs分区中由于软件或硬件的缺陷而导致软件完整性被破坏,如分区内文件被篡改等等,软件重启后也会出现bootloader无法正确引导和加载kernel,或者kernel无法正确引导和加载rootfs的情况;当出现上述软件无法正常启动的情况时,网络设备软件启动失败,通常需要人工进行干预,重新升级安装包,升级安装包完成后再重新利用该安装包进行软件启动引导,操作较为复杂,人力成本也较高。



技术实现要素:

本发明的实施例提供了一种软启动网络设备,能够在网络设备软件出现异常的情况下自动恢复并成功启动。

本发明提供了如下方案:

一种网络设备软件启动方法,包括:

网络设备启动,网络设备软件的启动加载程序(bootloader)子系统开始启动引导和加载内核(kernel)子系统和根文件(rootfs)子系统;

若启动失败,对复位标记环境变量进行累加,根据所述复位标记环境变量重新获取网络设备软件的安装包进行启动。

一种网络设备软件启动装置,所述装置包括:

累加模块,用于在网络设备的bootloader子系统启动引导和加载kernel子系统和rootfs子系统失败时,对复位标记环境变量进行累加;

获取模块,用于根据所述累加模块累加后的复位标记环境变量重新获取网络设备软件的安装包进行启动。

一种网络设备,包括如上所述的网络设备软件启动装置。

由上述本发明的实施例提供的技术方案可以看出,本发明实施例提供的网络设备软件启动方法、装置及网络设备,当网络设备软件在启动过程中出现启动失败时,能够根据复位标记环境变量,识别异常,重新获取网络设备软件的安装包,进行启动,能够实现网络设备软件出现异常的情况下自动恢复并成功启动;并且在软件升级过程中,若出现异常断电或人为操作失败导致的升级失败等情况时,也可再次读取从路径环境变量指向的安装包,重新升级,升级成功且启动成功后,再将主路径环境变量更新为从路径环境变量,进而保证了网络设备运行过程中若出现异常,能够通过主路径环境变量指向的安装包自动实现重启,可靠性更高。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的网络设备软件启动方法的实现流程示意图;

图2为本发明实施例提供的网络设备软件启动方法实施例一的实现流程示意图;

图3为本发明实施例提供的网络设备软件启动方法实施例二的实现流程示意图;

图4为本发明实施例提供的网络设备软件启动方法实施例三的实现流程示意图;

图5为本发明实施例提供的网络设备软件启动方法实施例三中分区示意图;

图6为本发明实施例提供的网络设备软件启动方法实施例四的实现流程示意图;

图7为本发明实施例提供的网络设备软件启动方法实施例四中分区示意图;

图8为本发明实施例提供的网络设备软件启动装置的结构示意图;

图9为本发明实施例提供的网络设备软件启动装置实施例一的结构示意图;

图10为本发明实施例提供的网络设备软件启动装置实施例二的结构示意图。

具体实施方式

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。

图1为本发明实施例提供的网络设备软件启动方法的实现流程示意图,如图1所示,所述方法包括下述步骤:

步骤101,网络设备启动,网络设备软件的bootloader子系统开始启动引导和加载内核kernel子系统和根文件rootfs子系统;

网络设备上电,从并行flash中的bootloader分区开始启动;bootloader子系统对硬件进行基本检查和初始化后,引导并加载串行flash上的kernel分区中的kernel映像;kernel子系统完成必要的初始化后,开始引导和加载rootfs分区中的首个主程序文件;首个主程序文件启动后逐个引导其他所有需要运行的应用程序。

可选的,上述kernel分区和rootfs分区还可以分别设置为双分区的形式来存放映像,即kernel分区包括主备kernel分区,rootfs分区包括主备rootfs分区,主备kernel分区存放同一kernel映像,主备rootfs分区存放同一rootfs映像,此时kernel子系统和rootfs子系统分别包括主备子系统,可进一步提供网络设备软件启动的可靠性。

步骤102,若启动失败,对复位标记环境变量进行累加,根据所述复位标记环境变量重新获取网络设备软件的安装包进行启动。

这里,复位标记环境变量为预先设置,用于对启动失败的次数进行计数,且在网络设备软件启动成功后立即清零。

具体地,当引导kernel子系统前返回失败,累加后的复位标记环境变量小于等于第一阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当引导kernel子系统前返回失败,累加后的复位标记环境变量大于第一阈值时,通过网络方式重新下载新的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量小于等于第二阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第二阈值时,通过网络方式重新下载新的安装包进行启动。

另外,当所述kernel子系统和/或rootfs子系统分别包括主备子系统时,当引导kernel子系统前返回失败,累加后的复位标记环境变量小于等于第三阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当引导kernel子系统前返回失败,累加后的复位标记环境变量大于第三阈值时,通过网络方式重新下载新的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量小于等于第四阈值时,进行主备子系统切换,重新引导和加载kernel子系统或rootfs子系统;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第四阈值且小于等于第五阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第五阈值时,通过网络方式重新下载新的安装包进行启动。

应当理解,所述第一阈值、第二阈值、第三阈值及第四阈值根据实际需求进行设置,可以相同也可以不同。

本发明实施例提供的网络设备软件启动方法,当网络设备软件在启动过程中出现启动失败时,能够根据复位标记环境变量,识别异常,重新获取网络设备软件的安装包,进行启动,能够实现网络设备软件出现异常的情况下自动恢复并成功启动。

图2为本发明实施例提供的网络设备软件启动方法实施例一的实现流程示意图,如图2所示,所述实施例一包括:

步骤201,网络设备启动,判断预设的升级状态环境变量的状态,当所述升级状态环境变量处于升级成功状态时,执行步骤202,当所述升级状态环境变量处于升级失败状态时,执行步骤205;

可选的,当所述升级状态环境变量为升级结束状态时,确定所述升级状态环境变量的状态为升级成功状态;当所述升级状态环境变量为启动升级状态时,确定所述升级状态环境变量的状态为升级失败状态,此时的升级失败状态是由于升级过程中被异常打断,如异常断电或认为失误等状况造成的安装包并未真正更新到新版本。

步骤202,bootloader子系统开始启动引导和加载kernel子系统和rootfs子系统,启动失败,执行步骤203,若启动成功,执行步骤204;

网络设备上电,从并行flash中的bootloader分区开始启动;bootloader子系统对硬件进行基本检查和初始化后,引导并加载串行flash上的kernel分区中的kernel映像;kernel子系统完成必要的初始化后,开始引导和加载rootfs分区中的首个主程序文件;首个主程序文件启动后逐个引导其他所有需要运行的应用程序。

可选的,上述kernel分区和rootfs分区还可以分别设置为双分区的形式来存放映像,即kernel分区包括主备kernel分区,rootfs分区包括主备rootfs分区,主备kernel分区存放同一kernel映像,主备rootfs分区存放同一rootfs映像,此时kernel子系统和rootfs子系统分别包括主备子系统,可进一步提供网络设备软件启动的可靠性。

步骤203,对复位标记环境变量进行累加,根据所述复位标记环境变量重新获取网络设备软件的安装包进行启动;

这里,复位标记环境变量为预先设置,用于对启动失败的次数进行计数,且在网络设备软件启动成功后立即清零。

具体地,当引导kernel子系统前返回失败,累加后的复位标记环境变量小于等于第一阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当引导kernel子系统前返回失败,累加后的复位标记环境变量大于第一阈值时,通过网络方式重新下载新的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量小于等于第二阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第二阈值时,通过网络方式重新下载新的安装包进行启动。

另外,当所述kernel子系统和/或rootfs子系统分别包括主备子系统时,当引导kernel子系统前返回失败,累加后的复位标记环境变量小于等于第三阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当引导kernel子系统前返回失败,累加后的复位标记环境变量大于第三阈值时,通过网络方式重新下载新的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量小于等于第四阈值时,进行主备子系统切换,重新引导和加载kernel子系统或rootfs子系统;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第四阈值且小于等于第五阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第五阈值时,通过网络方式重新下载新的安装包进行启动。

应当理解,所述第一阈值、第二阈值、第三阈值及第四阈值根据实际需求进行设置,可以相同也可以不同。

步骤204,当所述网络设备软件启动成功,将所述复位标记环境变量清零,当前流程结束;

步骤205,当所述升级状态环境变量处于升级失败状态时,读取安装包的从路径环境变量指向的安装包,重新进行升级,直至升级成功,执行步骤201。

这里,所述升级环境状态变量处于升级失败是由于升级过程中被异常打断,如异常断电或人为失误等状况造成的安装包并未真正更新到新版本,因此需要重新读取从路径环境变量指向的安装包,重新进行升级。

另外,安装包包括主路径环境变量指向的安装包(简称为主安装包)和从路径环境变量指向的安装包(简称为从安装包);

从路径环境变量用于保存当前正在升级的安装包路径,主路径环境变量用于保存上一次升级成功且启动成功的安装包路径。当从安装包升级成功且启动网络设备软件成功后,主路径环境变量会更新为从路径环境变量。

从安装包是存在升级后引导失败可能性的,所以不能直接将主路径环境变量更新为从路径环境变量,需要确保从安装包成功升级并启动成功后才可更新,若从安装包引导失败后还可以用之前的主安装包进行恢复。

本发明实施例提供的网络设备软件启动方法,当网络设备软件在启动过程中出现启动失败时,能够根据复位标记环境变量,识别异常,重新获取网络设备软件的安装包,进行启动,能够实现网络设备软件出现异常的情况下自动恢复并成功启动;并且在软件升级过程中,若出现异常断电或人为操作失败导致的升级失败等情况时,也可再次读取从路径环境变量指向的安装包,重新升级,升级成功且启动成功后,再将主路径环境变量更新为从路径环境变量,进而保证了网络设备运行过程中若出现异常,能够通过主路径环境变量指向的安装包自动实现重启,可靠性更高。

图3为本发明实施例提供的网络设备软件启动方法实施例二的实现流程示意图,如图3所示,所述实施例二包括下述步骤:

步骤301,网络设备启动,开始升级,将网络设备软件的安装包存储到data分区,并将所述安装包的存储路径设置到从路径环境变量中,并将所述升级状态环境变量标记为启动升级状态;

步骤302,按顺序进行kernel分区和rootfs分区的映像刷写操作;

这里,网络设备上的软件升级常常采用往串行flash刷写映像的方式进行,kernel子系统和rootfs子系统均对应了各自独立的映像文件,每个映像文件可以独立的刷写到各子系统所对应的flash分区之上,所有映像文件最终合并为一个独立的安装包来对外呈现和发布。

本步骤中,对data分区存储的安装包进行解析,得到kernel子系统和rootfs子系统各自对应的映像文件,并相应刷写kernel分区和rootfs分区。

步骤303,当刷写顺利完成时,将所述升级状态环境变量标记为升级结束状态。

步骤304,判断预设的升级状态环境变量的状态,当所述升级状态环境变量处于升级成功状态时,执行步骤305,否则,执行步骤308;

判断预设的升级状态环境变量的状态,当所述升级状态环境变量处于升级成功状态时,执行步骤305,当所述升级状态环境变量处于升级失败状态时,执行步骤308;

可选的,当所述升级状态环境变量为升级结束状态时,确定所述升级状态环境变量的状态为升级成功状态;当所述升级状态环境变量为启动升级状态时,确定所述升级状态环境变量的状态为升级失败状态。

步骤305,bootloader子系统开始启动引导和加载kernel子系统和rootfs子系统,启动失败,执行步骤306,若启动成功,执行步骤307;

网络设备上电,从并行flash中的bootloader分区开始启动;bootloader子系统对硬件进行基本检查和初始化后,引导并加载串行flash上的kernel分区中的kernel映像;kernel子系统完成必要的初始化后,开始引导和加载rootfs分区中的首个主程序文件;首个主程序文件启动后逐个引导其他所有需要运行的应用程序。

可选的,上述kernel分区和rootfs分区还可以分别设置为双分区的形式来存放映像,即kernel分区包括主备kernel分区,rootfs分区包括主备rootfs分区,主备kernel分区存放同一kernel映像,主备rootfs分区存放同一rootfs映像,此时kernel子系统和rootfs子系统分别包括主备子系统,可进一步提供网络设备软件启动的可靠性。

步骤306,对复位标记环境变量进行累加,根据所述复位标记环境变量重新获取网络设备软件的安装包进行启动;

这里,复位标记环境变量为预先设置,用于对启动失败的次数进行计数,且在网络设备软件启动成功后立即清零。

具体地,当引导kernel子系统前返回失败,累加后的复位标记环境变量小于等于第一阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当引导kernel子系统前返回失败,累加后的复位标记环境变量大于第一阈值时,通过网络方式重新下载新的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量小于等于第二阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第二阈值时,通过网络方式重新下载新的安装包进行启动。

另外,当所述kernel子系统和/或rootfs子系统分别包括主备子系统时,当引导kernel子系统前返回失败,累加后的复位标记环境变量小于等于第三阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当引导kernel子系统前返回失败,累加后的复位标记环境变量大于第三阈值时,通过网络方式重新下载新的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量小于等于第四阈值时,进行主备子系统切换,重新引导和加载kernel子系统或rootfs子系统;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第四阈值且小于等于第五阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第五阈值时,通过网络方式重新下载新的安装包进行启动。

应当理解,所述第一阈值、第二阈值、第三阈值及第四阈值根据实际需求进行设置,可以相同也可以不同。

步骤307,当所述网络设备软件启动成功,将所述复位标记环境变量清零;进一步地,当安装包升级成功后第一次启动成功网络设备软件时,执行步骤309;

步骤308,当所述升级状态环境变量处于升级失败状态时,读取安装包的从路径环境变量指向的安装包,重新进行升级,直至升级成功,执行步骤304。

这里,所述升级环境状态变量处于升级失败是由于升级过程中被异常打断,如异常断电或认为失误等状况造成的安装包并未真正更新到新版本,因此需要重新读取从路径环境变量指向的安装包,重新进行升级。

另外,安装包包括主路径环境变量指向的安装包(简称为主安装包)和从路径环境变量指向的安装包(简称为从安装包);

从路径环境变量用于保存当前正在升级的安装包路径,主路径环境变量用于保存上一次升级成功且启动成功的安装包路径。当从安装包升级成功且启动网络设备软件成功后,主路径环境变量会更新为从路径环境变量。

从安装包是存在升级后引导失败可能性的,所以不能直接将主路径环境变量更新为从路径环境变量,需要确保从安装包成功升级并启动成功后才可更新,若从安装包引导失败后还可以用之前的主安装包进行恢复。

步骤309,当安装包升级成功后第一次启动成功网络设备软件时,则删除所述主路径环境变量指向的安装包,并将所述主路径环境变量更新为从路径环境变量。

另外,当所述kernel子系统和/或rootfs子系统分别包括主备子系统时,本发明实施例还可以包括:

当所述安装包升级成功完成,同步更新kernel子系统和/或rootfs子系统的备份子系统的安装包。

本发明实施例提供的网络设备软件启动方法,当网络设备软件在启动过程中出现启动失败时,能够根据复位标记环境变量,识别异常,重新获取网络设备软件的安装包,进行启动,能够实现网络设备软件出现异常的情况下自动恢复并成功启动;并且在软件升级过程中,根据升级情况,更新升级状态环境变量的状态,若出现异常断电或人为操作失败导致的升级失败等情况时,根据也可再次读取从路径环境变量指向的安装包,重新升级,升级成功且启动成功后,再将主路径环境变量更新为从路径环境变量,进而保证了网络设备运行过程中若出现异常,能够通过主路径环境变量指向的安装包自动实现重启,可靠性更高。

图4为本发明实施例提供的网络设备软件启动方法实施例三的实现流程示意图,如图5所示,本发明实施例三是以kernel分区和rootfs分区均为单分区为例进行的说明,所述实施例三包括下述步骤:

步骤401,bootloader运行环境或rootfs运行环境下对安装包升级;

步骤402,拷贝(外置存储)或者下载(外置网络)安装包并存储安装包到data分区,并更新安装包的完整文件路径到从路径环境变量pkg_path_slave中;

可选的,本步骤中当如果data分区没有足够的容量,可以将主路径环境变量pkg_path_master指向的安装包删除并置空该变量,释放空间后重新执行步骤402;

步骤403,标记启动升级并设置到升级状态环境变量pkg_upgrade_status中,kernel与rootfs分区分别按顺序进行映像刷写操作;如果刷写顺利完成,标记结束升级并设置到pkg_upgrade_status中,否则pkg_upgrade_status始终处于标记启动状态;

步骤404,设备重启后,bootloader对pkg_upgrade_status进行检查,如果标记升级是成功结束的,那么直接进入启动过程,执行步骤406;如果标记升级是失败的,执行步骤405;

步骤405,选择pkg_path_slave指向的安装包重新进行升级过程,具体过程参考步骤403,并且直到升级确保完成为止,返回步骤404;

步骤406,进入bootloader引导过程,若是安装包升级后引导成功,执行步骤407-408,若是网络设备运行过程中引导成功,执行步骤409,若是引导kernel或者rootfs失败,执行步骤410,若是引导kernel前检验失败,执行步骤411;

步骤407,kernel与rootfs启动过程均正常,进入到rootfs后,rootfs应用程序分别将升级状态环境变量复位以及复位标记环境变量recover_flag清0,且如果是软件升级后的首次成功启动,执行步骤408;

步骤408,rootfs应用程序调换pkg_path_master以及pkg_path_slave指向的安装包路径,原pkg_path_master路径指向的旧的安装包直接删除。

步骤409,网络设备运行过程中引导成功,rootfs应用程序分别将升级状态环境变量复位以及复位标记环境变量recover_flag清0。

步骤410,若是引导kernel或者rootfs失败,返回引导异常同时网络设备复位,对复位标记环境变量进行累加并执行步骤406,当复位标记环境变量连续累加至3次时,执行步骤412,当复位标记环境变量连续累加至6次时,执行步骤413;

步骤411,若是引导kernel前检验失效,返回引导异常,对复位标记环境变量进行累加,当复位标记环境变量累加至1次时,执行步骤412,当复位标记环境变量连续累加至2次时,执行步骤413;

步骤412,选择pkg_path_master指向的安装包重新进行升级;

步骤413,通过网络方式重新下载安装包升级。

图6为本发明实施例提供的网络设备软件启动方法实施例四的实现流程示意图,如图7所示,本发明实施例四是以kernel分区和rootfs分区均为主备分区为例进行的说明,所述实施例四包括下述步骤:

步骤601,bootloader运行环境或rootfs运行环境下对安装包升级;

步骤602,拷贝(外置存储)或者下载(外置网络)安装包并存储安装包到data分区,并更新安装包的完整文件路径到从路径环境变量pkg_path_slave中;

可选的,本步骤中当如果data分区没有足够的容量,可以将主路径环境变量pkg_path_master指向的安装包删除并置空该变量,释放空间后重新执行步骤602;

步骤603,标记启动升级并设置到升级状态环境变量pkg_upgrade_status中,kernel与rootfs分区分别按顺序进行映像刷写操作;如果刷写顺利完成,标记结束升级并设置到pkg_upgrade_status中,否则pkg_upgrade_status始终处于标记启动状态;

步骤604,设备重启后,bootloader对pkg_upgrade_status进行检查,如果标记升级是成功结束的且是刚发生的升级,那么执行步骤606;如果标记升级是失败的,执行步骤605;

步骤605,选择pkg_path_slave指向的安装包重新进行升级过程,具体过程参考步骤603,并且直到升级确保完成为止;

步骤606,当设备发生刚完成升级,kernel和rootfs各自的主备分区进行同步;

具体为选择pkg_path_slave中的安装包,刷写到备份分区直至完整结束;

步骤607,设备启动,进入bootloader引导过程,若是安装包升级后引导成功,执行步骤608-609,若是网络设备运行过程中引导成功,执行步骤610,若是引导kernel或者rootfs失败,执行步骤611,若是引导kernel前检验失败,执行步骤612;

步骤608,kernel与rootfs启动过程均正常,进入到rootfs后,rootfs应用程序分别将升级状态环境变量复位以及复位标记环境变量recover_flag清0,且如果是软件升级后的首次成功启动,执行步骤609;

步骤609,rootfs应用程序调换pkg_path_master以及pkg_path_slave指向的安装包路径,原pkg_path_master路径指向的旧的安装包直接删除。

步骤610,网络设备运行过程中引导成功,rootfs应用程序分别将升级状态环境变量复位以及复位标记环境变量recover_flag清0。

步骤611,若是引导kernel或者rootfs失败,返回引导异常同时网络设备复位,对复位标记环境变量进行累加并执行步骤607,当复位标记环境变量连续累加至3次时,执行步骤613,当复位标记环境变量连续累加至4次时,执行步骤614;

步骤612,若是引导kernel前检验失效,返回引导异常,对复位标记环境变量进行累加,当复位标记环境变量累加至1次时,执行步骤613,当复位标记环境变量连续累加至2次时,执行步骤614;

步骤613,主备分区切换,重新引导备安装包;

步骤614,选择pkg_path_master指向的安装包重新进行升级通过网络方式重新下载安装包升级。

图8为本发明实施例提供的网络设备软件启动装置的结构示意图,如图8所示,所述装置包括:

累加模块,用于在网络设备的bootloader子系统启动引导和加载kernel子系统和rootfs子系统失败时,对复位标记环境变量进行累加;

这里,网络设备上电,从并行flash中的bootloader分区开始启动;bootloader子系统对硬件进行基本检查和初始化后,引导并加载串行flash上的kernel分区中的kernel映像;kernel子系统完成必要的初始化后,开始引导和加载rootfs分区中的首个主程序文件;首个主程序文件启动后逐个引导其他所有需要运行的应用程序。可选的,上述kernel分区和rootfs分区还可以分别设置为双分区的形式来存放映像,即kernel分区包括主备kernel分区,rootfs分区包括主备rootfs分区,主备kernel分区存放同一kernel映像,主备rootfs分区存放同一rootfs映像,此时kernel子系统和rootfs子系统分别包括主备子系统,可进一步提供网络设备软件启动的可靠性。

获取模块,用于根据所述累加模块累加后的复位标记环境变量重新获取网络设备软件的安装包进行启动;这里,复位标记环境变量为预先设置,用于对启动失败的次数进行计数,且在网络设备软件启动成功后立即清零。

可选的,所述获取模块,具体用于当引导kernel子系统前返回失败,累加后的复位标记环境变量小于等于第一阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当引导kernel子系统前返回失败,累加后的复位标记环境变量大于第一阈值时,通过网络方式重新下载新的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量小于等于第二阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第二阈值时,通过网络方式重新下载新的安装包进行启动。

可选的,当所述kernel子系统和/或rootfs子系统分别包括主备子系统时,所述获取模块,具体用于当引导kernel子系统前返回失败,累加后的复位标记环境变量小于等于第三阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当引导kernel子系统前返回失败,累加后的复位标记环境变量大于第一阈值时,通过网络方式重新下载新的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量小于等于第四阈值时,进行主备子系统切换,重新引导和加载kernel子系统或rootfs子系统;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第四阈值且小于等于第五阈值时,获取网络设备软件安装包的主路径环境变量路径中指向的安装包进行启动;当kernel子系统或rootfs子系统启动失败,累加后的复位标记环境变量大于第五阈值时,通过网络方式重新下载新的安装包进行启动。

应当理解,上述第一阈值、第二阈值、第三阈值及第四阈值根据实际需求进行设置,可以相同也可以不同。

可选的,图9为本发明实施例提供的网络设备软件启动装置实施例一的结构示意图,如图9所示,所述装置还包括:

判断模块,用于判断预设的升级状态环境变量的状态;

处理模块,用于当所述判断模块确定所述升级状态环境变量处于升级成功状态时,进入网络设备软件的启动流程,当所述判断模块确定所述升级状态环境变量处于升级失败状态时,读取安装包的从路径环境变量指向的安装包,以便重新进行升级。

可选的,所述装置还包括:清零模块,用于当所述网络设备软件启动成功,将所述复位标记环境变量清零。

可选的,图10为本发明实施例提供的网络设备软件启动装置实施例二的结构示意图,如图10所示,所述装置还包括:存储模块、标记模块;其中,

所述存储模块,用于启动升级后,将安装包存储到data分区,并将所述安装包的存储路径设置到所述从路径环境变量中;

标记模块,用于启动升级后,将所述升级状态环境变量标记为启动升级状态,并当顺利完成kernel分区和rootfs分区的映像刷写操作后,将所述升级状态环境变量标记为升级结束状态。

可选的,所述装置还包括:删除模块,用于当所述data分区中存储容量不足时,删除安装包的主路径环境变量指向的安装包,并置空所述主路径环境变量。

可选的,所述删除模块,还用于当安装包升级成功后第一次启动成功网络设备软件时,则删除所述主路径环境变量指向的安装包,并将所述主路径环境变量更新为从路径环境变量。

其中,所述判断模块,具体用于当所述升级状态环境变量为升级结束状态时,确定所述升级状态环境变量的状态为升级成功状态;当所述升级状态环境变量为启动升级状态时,确定所述升级状态环境变量的状态为升级失败状态。

可选的,当所述kernel子系统和/或rootfs子系统分别包括主备子系统时,所述装置还包括:更新模块,用于当所述安装包升级成功完成,同步更新kernel子系统和/或rootfs子系统的备份子系统的安装包。

本发明实施例还提供一种网络设备,该网络设备包括如上所述的网络设备软件启动装置。

应当理解,本发明实施例提供的网络设备软件启动装置实现原理及过程与上述网络设备软件启动方法类似,在此不再赘述。

本发明实施例提供的网络设备软件启动方法、装置及网络设备,当网络设备软件在启动过程中出现启动失败时,能够根据复位标记环境变量,识别异常,重新获取网络设备软件的安装包,进行启动,能够实现网络设备软件出现异常的情况下自动恢复并成功启动;并且在软件升级过程中,若出现异常断电或人为操作失败导致的升级失败等情况时,也可再次读取从路径环境变量指向的安装包,重新升级,升级成功且启动成功后,再将主路径环境变量更新为从路径环境变量,进而保证了网络设备运行过程中若出现异常,能够通过主路径环境变量指向的安装包自动实现重启,可靠性更高。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1