本发明涉及通信领域,具体而言,涉及一种系统启动方法及装置。
背景技术:
在相关技术中,嵌入式设备一般以flash为介质存储设备的系统软件,软件可以主要分为boot、内核、文件系统几个主要的功能模块。其中,boot负责完成启动硬件配置,选择要启动的内核,内核是操作系统的核心功能,文件系统包括完成设备功能需要的用户态程序。
嵌入式设备中boot存放在flash中比较可靠的区域,这部分功能一般只在启动时去读取,使用的频率较低,所以损坏的概率较低。而内核、文件系统是在操作系统加载后一直使用,相对损坏的概率要大。内核和文件系统损坏时,设备就无法正常启动,修复一般要返回生产线,对flash芯片进行替换,维护起来成本较高,周期长。
针对相关技术中嵌入式系统损坏后无法启动的问题,目前还没有有效的解决方案。
技术实现要素:
本发明实施例提供了一种系统启动方法及装置,以至少解决相关技术中相关技术中嵌入式系统损坏后无法启动的问题。
根据本发明的一个实施例,提供了一种系统启动方法,包括:在嵌入式设备无法从内置flash中启动操作系统时,所述嵌入式设备依据预设条件检测扩展存储设备中的操作系统的合法性;在确定所述扩展存储设备合法的情况下,所述嵌入式设备启动所述扩展存储设备中存储的操作系统。
可选地,在所述嵌入式设备从内置flash启动操作系统的情况下,所述嵌入式设备检测到所述扩展存储设备接入;所述嵌入式设备检测到所述扩展存储设备中未存储所述内置flash的操作系统的内核镜像和文件系统镜像;所述嵌入式设备依次将所述内置flash的内核镜像和文件系统镜像,备份至所述扩展存储设备。
可选地,所述嵌入式设备依次将所述内置flash的内核镜像和文件系统镜像,备份至所述扩展存储设备,包括:所述嵌入式设备依据所述内置flash的内核和文件系统获取第一镜像文件,将所述第一镜像文件备份至所述扩展存储设备,其中,所述第一镜像文件包括所述内核镜像和文件系统镜像。
可选地,在嵌入式设备无法从内置flash中启动操作系统时,所述嵌入式设备依据预设条件检测扩展存储设备中的操作系统的合法性,包括:所述嵌入式设备通过检验所述第一镜像文件的文件头中的校验信息确定所述扩展存储设备中的操作系统的合法性。
可选地,所述嵌入式设备启动所述扩展存储设备中存储的操作系统之后,所述方法还包括:将所述扩展存储设备中的内核镜像和文件系统镜像依次写入所述内置flash中。
根据本发明实施例的一种系统启动装置,包括:第二检测模块,用于在无法从内置flash中启动操作系统时,依据预设条件检测扩展存储设备中的操作系统的合法性;启动模块,用于在确定所述扩展存储设备合法的情况下,启动所述扩展存储设备中存储的操作系统。
可选地,所述装置还包括:第一检测模块,用于在从内置flash启动操作系统的情况下,检测到所述扩展存储设备接入,并检测到所述扩展存储设备中未存储所述内置flash的操作系统的内核镜像和文件系统镜像;备份模块,用于依次将所述内置flash的内核镜像和文件系统镜像,写入所述扩展存储设备。
可选地,所述启动模块还用于将所述扩展存储设备中的内核镜像和文件系统镜像依次写入所述内置flash中。
根据本发明实施例的另一个实施例,还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述可选实施例任一项中所述的方法。
根据本发明的另一个实施例,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述可选实施例任一项中所述的方法。
通过本发明,在嵌入式设备无法从内置flash中启动操作系统时,该嵌入式设备依据预设条件检测扩展存储设备中的操作系统的合法性;在确定该扩展存储设备合法的情况下,该嵌入式设备启动该扩展存储设备中存储的操作系统,采用上述技术方案,解决了相关技术中嵌入式系统损坏后无法启动的问题,实现了嵌入式设备从扩展存储设备中启动操作系统,便于用户进行操作。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的系统启动方法流程图;
图2是根据相关技术中的flash中系统软件存放示意图;
图3是根据本发明具体实施方式的内核镜像封装示意图;
图4是根据本发明具体实施方式的文件系统镜像封装示意图;
图5是根据本发明实施例的系统启动装置的结构框图。
具体实施方式
本申请实施例的技术方案可以应用于嵌入式系统。
实施例一
在本实施例中提供了一种运行于嵌入式设备的系统启动方法,图1是根据本发明实施例的系统启动方法流程图,如图1所示,该流程包括如下步骤:
步骤s102,在嵌入式设备无法从内置flash中启动操作系统时,该嵌入式设备依据预设条件检测扩展存储设备中的操作系统的合法性;
步骤s104,在确定该扩展存储设备合法的情况下,该嵌入式设备启动该扩展存储设备中存储的操作系。
可选地,上述扩展存储设备可以是u盘,移动硬盘等。
通过上述步骤,在嵌入式设备无法从内置flash中启动操作系统时,该嵌入式设备依据预设条件检测扩展存储设备中的操作系统的合法性;在确定该扩展存储设备合法的情况下,该嵌入式设备启动该扩展存储设备中存储的操作系统,采用上述技术方案,解决了相关技术中嵌入式系统损坏后无法启动的问题,实现了嵌入式设备从扩展存储设备中启动操作系统,便于用户进行操作。
可选地,在该嵌入式设备从内置flash启动操作系统的情况下,该嵌入式设备检测到该扩展存储设备接入;该嵌入式设备检测到该扩展存储设备中未存储该内置flash的操作系统的内核镜像和文件系统镜像;该嵌入式设备依次将该内置flash的内核镜像和文件系统镜像,备份至该扩展存储设备。
可选地,该嵌入式设备依次将该内置flash的内核镜像和文件系统镜像,备份至该扩展存储设备,包括:该嵌入式设备依据该内置flash的内核和文件系统获取第一镜像文件,将该第一镜像文件备份至该扩展存储设备,其中,该第一镜像文件包括该内核镜像和文件系统镜像。
可选地,在嵌入式设备无法从内置flash中启动操作系统时,该嵌入式设备依据预设条件检测扩展存储设备中的操作系统的合法性,包括:该嵌入式设备通过检验该第一镜像文件的文件头中的校验信息确定该扩展存储设备中的操作系统的合法性。
可选地,该嵌入式设备启动该扩展存储设备中存储的操作系统之后,该方法还包括:将该扩展存储设备中的内核镜像和文件系统镜像依次写入该内置flash中。
下面结合本发明优选实施例进行详细说明。
本优选实施例提供一种便捷的方法,在嵌入式设备的系统软件损坏,设备无法正常启动到操作系统状态或文件系统中部分程序异常时,对flash上的软件系统进行修复,采用本优选实施例的方案,可以提高维护效率,降低修复成本和周期。
本优选实施例具体解决的技术问题如下:
1)内核损坏,设备无法启动;
2)文件系统损坏,设备无法启动;
3)内核和文件系统损坏,设备无法启动;
4)文件系统部分损坏,设备可以启动,部分功能异常。
本发明优选实施例采用以下技术方案:
使用嵌入设备上的扩展存储设备,如u盘、sd卡(以下称为扩展存储设备)等,对内核、文件系统这两部分系统软件进行备份。在系统软件异常的情况下,boot从扩展存储设备引导,启动到操作系统状态下,系统中的备份和修复管理模块负责检测内置flash上的软件系统,完成恢复工作。
上述技术方案主要包括如下三个部分:
1)boot引导程序引导管理和启动盘制作。
2)内置flash中系统备份到扩展存储设备。
3)从扩展存储设备启动,对内置flash中的软件系统进行恢复。
下面是本优选实施例的具体实施方式
图2是根据相关技术中的flash中系统软件存放示意图,如图2所示,嵌入式设备软件在flash的存放位置。嵌入式设备中boot编译后生成一个镜像文件,写入flash中,一般放在开头的位置。内核和文件系统编译后,打包成特定格式的镜像,存放到flash中规划好的位置。为了校验镜像文件的正确性,在编译生成的内核和文件系统镜像前面加上文件头,把镜像文件的校验信息保存在文件头中。图3是根据本发明具体实施方式的内核镜像封装示意图,图4是根据本发明具体实施方式的文件系统镜像封装示意图。
在具体实施方式中,包括boot启动管理和启动盘制作、系统软件备份、系统软件恢复三个功能模块。
boot启动管理和启动盘制作模块的主要功能包括,实现扩展存储设备的驱动,支持扩展存储设备的分区格式,比如fat。系统软件的合法性判断,启动设备选择,单板系统软件制作时,制作可以从u盘启动的镜像。具体实现步骤如下:
步骤1:在boot中实现扩展存储设备的驱动和分区支持。
步骤2:采用内存文件系统,在后续文件制作过程中也使用该内存文件系统的格式,在版本制作过程中,生成内核和文件系统合一的镜像文件version.bin,拷贝到存储设备根目录,version.bin的文件头采用和kernel.bin同样的校验机制,用于从外置存储设备启动系统。
步骤3:设备插入扩展存储设备,用于恢复的合法内核镜像kernel.bin和文件系统镜像fs.bin存放在存储设备根目录。
步骤4:开启设备电源,boot启动过程中检测到扩展存储设备,进入步骤6,否则进入步骤5。
步骤5:boot选择从内置flash启动,结束。
步骤6:boot检查存储设备的根目录,存在version.bin,进入步骤7,否则进入步骤5。
步骤7:boot根据version.bin文件头中的校验信息,对version.bin镜像进行合法性校验,校验通过进入步骤8,否则进入步骤5。
步骤8:boot从外置存储设备version.bin截取内核镜像到内存指定位置,从该位置启动内核,内核加载内存文件系统镜像,挂载文件系统,进入操作系统,完成设备从扩展存储设备的启动。
系统备份模块,指的是嵌入式设备从内置flash正常启动到操作系统后,通过软件实现的模块,该系统备份模块用于完成把内置flash中的内核和文件系统镜像以文件形式保存到扩展存储设备根目录的功能。具体实现步骤如下:
步骤1:嵌入式设备从内置flash启动后,系统备份模块处于监控扩展存储设备状态。
步骤2:系统备份模块检测到扩展存储设备插入,检测到扩展存储设备的根目录没有和flash中内容一致的kernel.bin和fs.bin,进入步骤3,否则进入步骤1。
步骤3:系统备份模块从flash读取内核镜像,写到扩展存储设备根目录下的kernel.bin,如果写入失败,进入步骤1,成功进入步骤4。
步骤4:根据kernel.bin文件头中的校验信息,对内核镜像进行合法性校验,校验正确进入步骤5,失败,删除kernel.bin,进入步骤1。
步骤5:系统备份模块从flash读取文件系统镜像,写到扩展存储设备根目录下的fs.bin,如果写入失败,删除kernel.bin,进入步骤1,成功进入步骤6。
步骤6:根据fs.bin文件头中的校验信息,对文件系统镜像进行合法性校验,校验正确进入步骤7,失败,删除fs.bin和kernel.bin,进入步骤1。
步骤7:备份完成,闪灯指示,对存储设备进行卸载unmout。
系统恢复模块,指的是嵌入式设备从外置存储设备启动到操作系统状态后,通过文件系统中实现的软件模块,该系统恢复模块用于完成把外置存储设备中的内核和文件系统镜像,写入flash中相应位置的功能。具体实现步骤如下:
步骤1:boot正常无法启动的设备,插入用于修复的扩展存储设备。
步骤2:开启电源,设备通过boot选择,启动到扩展存储设备的操作系统下。
步骤3:系统恢复模块检查内置flash中的内核镜像,读取内核镜像,生成校验信息,如果校验信息和文件头中的一致,进入步骤5,不一致,进入步骤4。
步骤4:擦除flash中内核分区,从扩展存储设备读取内核镜像,写到flash的内核分区。写入成功,从flash读取校验一致,进入步骤5,写入失败或校验不一致,恢复失败,结束。
步骤5:系统恢复模块检查内置flash中的文件系统镜像,读取文件系统镜像,生成校验信息,如果校验信息和文件头中的一致,进入步骤7,不一致,进入步骤6。
步骤6:擦除flash中文件系统分区,从扩展存储设备读取文件系统镜像,写到flash的文件系统分区。写入成功,从flash读取校验一致,进入步骤7,写入失败或校验不一致,恢复失败,结束。
步骤7:完成恢复,闪灯给出指示,unmout存储设备,等待拔出设备。
步骤8:存储设备拔出后,重启设备,完成恢复。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例二
在本实施例中还提供了一种系统启动装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的系统启动装置的结构框图,如图5所示,该装置包括:
第二检测模块52,用于在无法从内置flash中启动操作系统时,依据预设条件检测扩展存储设备中的操作系统的合法性;
启动模块54,连接至第二检测模块52,用于在确定该扩展存储设备合法的情况下,启动该扩展存储设备中存储的操作系统。
可选地,该装置还包括:第一检测模块,用于在从内置flash启动操作系统的情况下,检测到该扩展存储设备接入,并检测到该扩展存储设备中未存储该内置flash的操作系统的内核镜像和文件系统镜像;备份模块,用于依次将该内置flash的内核镜像和文件系统镜像,写入该扩展存储设备。
可选地,该启动模块54还用于将该扩展存储设备中的内核镜像和文件系统镜像依次写入该内置flash中。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例三
根据本发明的另一个实施例,提供了一种处理器,该处理器用于运行程序,其中,该程序运行时执行上述可选实施例任一项中所述的方法。
实施例四
根据本发明实施例的另一个实施例,还提供了一种存储介质,该存储介质包括存储的程序,其中,该程序运行时执行上述可选实施例任一项中所述的方法。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。