CN109976940A - 一种软启动网络设备 - Google Patents

一种软启动网络设备 Download PDF

Info

Publication number
CN109976940A
CN109976940A CN201711452115.4A CN201711452115A CN109976940A CN 109976940 A CN109976940 A CN 109976940A CN 201711452115 A CN201711452115 A CN 201711452115A CN 109976940 A CN109976940 A CN 109976940A
Authority
CN
China
Prior art keywords
environmental variance
installation kit
subsystem
kernel
network device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201711452115.4A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Chuangqi Industry Network Technology Co Ltd
Original Assignee
Tianjin Chuangqi Industry Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianjin Chuangqi Industry Network Technology Co Ltd filed Critical Tianjin Chuangqi Industry Network Technology Co Ltd
Priority to CN201711452115.4A priority Critical patent/CN109976940A/zh
Publication of CN109976940A publication Critical patent/CN109976940A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures

Abstract

本发明实施例提供了一种软启动网络设备,所述方法包括:网络设备启动,网络设备软件的启动加载程序bootloader子系统开始启动引导和加载内核kernel子系统和根文件rootfs子系统;若启动失败,对复位标记环境变量进行累加,根据所述复位标记环境变量重新获取网络设备软件的安装包进行启动。本发明实施例还提供网络设备软件启动装置,及网络设备,当网络设备软件在启动过程中出现启动失败时,能够根据复位标记环境变量,识别异常,重新获取网络设备软件的安装包,进行启动,能够实现网络设备软件出现异常的情况下自动恢复并成功启动。

Description

一种软启动网络设备
技术领域
本发明涉及计算机网络通讯领域,尤其涉及一种网络设备软件启动方法、 装置及网络设备。
背景技术
无线网络在物理上,通常是由各种类型的网络连接设备和传输介质组成, 网络设备是连接到网络环境中的物理实体,比如交换机、路由器、网关、无线 接入点、无线接入控制器等。
网络设备的运行离不开网络设备软件,网络设备软件从系统的角度可以分 为三个层次,主要包括:
第一层次:启动加载程序(bootloader)子系统,系统启动初始化,启动过 程中对硬件做基本的检查、引导与加载kernel子系统,也可以对整个设备的软 件进行升级,并且bootloader子系统通常对于网络设备软件系统而言,是稳定固 化的,后续不需要更新;
第二层次:内核(kernel)子系统,系统操作系统核心,负责屏蔽系统的 硬件构成,给rootfs子系统中的应用程序提供抽象的运行环境,启动过程中用 于引导和加载rootfs子系统;第三层次:根文件(rootfs)子系统,系统根文件 系统,启动过程中会引导和加载各种类型的应用程序,通常与具体业务相关, 比如OSPF(Open Shortest Path First,开放式最短路径优先协议)、BGP(Border Gateway Protocol,边界网关协议)、DHCP(Dynamic HostConfiguration Protocol, 动态主机配置协议)等协议应用或者用于给整个设备进行软件升级的管理应用 等。其中,kernel运行环境是一个中间环节,对用户来说不能直接进行操作, 必须加载启动rootfs后才可操作,而bootloader和rootfs则属于独立的可操作的运行环境。
网络设备中通常使用FLASH闪存作为非易失性存储来放置设备软件, FLASH闪存主要分为两类:1、并行FLASH,容量较小,通常不会超过8M字 节,划分为用于存放bootloader子系统的分区以及用于存放bootloader相关环 境变量的分区。2、串行FLASH,容量较大,通常多于128M字节,更多的可 达到G字节级别,采用分区的方式来存放如下子系统或者数据信息等:kernel 分区:用于存放kernel子系统,包括kernel运行文件、kernel配置文件等;rootfs 分区:用于存放rootfs子系统,包括了各应用程序的可执行文件、应用配置文 件等;data分区:用于存放软件启动或者运行过程中产生的一些数据,软件 升级后不允许丢失,比如网络业务相关的配置文件、统计文件、用户文件等。
映像是指文件内容是一个无结构或结构未知的二进制数据集合,这类文件 内部即使还具有结构,例如包含了目录与文件,但对于目标设备软件的处理工 具而言,它是一个内容不可见的单独文件,这种文件在升级时,需要使用特定 工具直接写入存储设备,对其内容不进行解析。例如,用于描述CD(COMPACT DISK)映像ISO(Isolation)文件,这样的映像文件通过烧写软件写入CD-ROM (Compact Disc Read-Only Memory)中,而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、磁碟、 光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器, 或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相 似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之 处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以 描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装 置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或 者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理 单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实 际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普 通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易 想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护 范围应该以权利要求的保护范围为准。

Claims (4)

1.一种网络设备软件启动方法,其特征在于,包括:
网络设备启动,网络设备软件的启动加载程序bootloader子系统开始启动引 导和加载内核kernel子系统和根文件rootfs子系统;
若启动失败,对复位标记环境变量进行累加,根据所述复位标记环境变量 重新获取网络设备软件的安装包进行启动。
2.根据权利要求1所述的方法,其特征在于,网络设备启动之后,所述方 法还包括:
判断预设的升级状态环境变量的状态;
当所述升级状态环境变量处于升级成功状态时,进入网络设备软件的启动 流程;
当所述升级状态环境变量处于升级失败状态时,读取安装包的从路径环境 变量指向的安装包,重新进行升级。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
启动升级后,将安装包存储到数据data分区,并将所述安装包的存储路径 设置到所述从路径环境变量中,并将所述升级状态环境变量标记为启动升级状 态;
按顺序进行kernel分区和rootfs分区的映像刷写操作;
当刷写顺利完成时,将所述升级状态环境变量标记为升级结束状态。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述data分区中存储容量不足时,删除安装包的主路径环境变量指向的 安装包,并置空所述主路径环境变量。
CN201711452115.4A 2017-12-28 2017-12-28 一种软启动网络设备 Pending CN109976940A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711452115.4A CN109976940A (zh) 2017-12-28 2017-12-28 一种软启动网络设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711452115.4A CN109976940A (zh) 2017-12-28 2017-12-28 一种软启动网络设备

Publications (1)

Publication Number Publication Date
CN109976940A true CN109976940A (zh) 2019-07-05

Family

ID=67071265

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711452115.4A Pending CN109976940A (zh) 2017-12-28 2017-12-28 一种软启动网络设备

Country Status (1)

Country Link
CN (1) CN109976940A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338701A (zh) * 2020-02-25 2020-06-26 邦彦技术股份有限公司 一种网络设备启动方法和网络设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338701A (zh) * 2020-02-25 2020-06-26 邦彦技术股份有限公司 一种网络设备启动方法和网络设备

Similar Documents

Publication Publication Date Title
CN104915226B (zh) 一种网络设备软件启动方法、装置及网络设备
CN104572229B (zh) 嵌入式系统的固件升级方法以及固件升级装置
JP5113700B2 (ja) ファームウェア更新装置及び方法
US7174547B2 (en) Method for updating and restoring operating software in an active region of a network element
US7073053B1 (en) Method and apparatus for a boot progression scheme for reliably initializing a system
CN102637144B (zh) 一种系统故障的处理方法和装置
CN102334100A (zh) 程序更新设备、程序更新方法以及信息处理设备
CN103299276A (zh) 嵌入式装置的软件更新过程
CN109062598A (zh) 一种安全的ota升级方法及系统
CN112631625B (zh) 嵌入式设备的系统升级方法、装置及嵌入式设备
CN109189485A (zh) 一种嵌入式设备的系统启动管理、操作系统配置方法
WO2021103745A1 (zh) 一种引导程序的保护设计方法
CN110209420A (zh) 一种更新引导加载程序的方法及装置
CN111045712A (zh) 一种具有备份功能的单系统升级方法及系统
CN104699615A (zh) 一种系统故障的处理方法和装置
US20030018865A1 (en) Disablement of a write filter stored on a write-protected partition
CN113190256B (zh) 一种升级方法、装置及设备
CN106156626A (zh) 一种系统安全升级的方法和装置
CN109976940A (zh) 一种软启动网络设备
CN113032183A (zh) 系统管理方法、装置、计算机设备和存储介质
EP4130985A1 (en) Communication device and information processing method
CN110502238A (zh) 一种前后端联调的方法及装置
CN106528114A (zh) 安卓固件应用、安卓固件和固件升级方法
CN108958769A (zh) 一种嵌入式设备软件系统修复方法及系统
CN114510375A (zh) 一种Flash芯片数据区域动态共享系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190705

WD01 Invention patent application deemed withdrawn after publication