CN111090443A - 一种保障linux系统安全升级的方法、设备和存储介质 - Google Patents
一种保障linux系统安全升级的方法、设备和存储介质 Download PDFInfo
- Publication number
- CN111090443A CN111090443A CN201911139567.6A CN201911139567A CN111090443A CN 111090443 A CN111090443 A CN 111090443A CN 201911139567 A CN201911139567 A CN 201911139567A CN 111090443 A CN111090443 A CN 111090443A
- Authority
- CN
- China
- Prior art keywords
- rootfs
- upgrade
- kernel
- recovery
- hash value
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种保障linux系统安全升级的方法,包括,启动系统,Bootloader依次计算kernel、rootfs和appfs的hash值,然后和系统中的hash值进行比较;加载kernel_recovery,在传递给kernel的启动参数中将rootfs_recovery分区设置为正常启动的rootfs分区,运行加载的kernel_recovery固件,recovery系统启动完成,然后再重新写入升级程序,系统再次启动,直至系统正常启动完成,升级成功。本发明在系统原有分区的基础上增加kernel和rootfs的备用分区kernel_recovery和rootfs_recovery,用于恢复和还原,可以防止升级文件写入过程中断电或写入被破坏的升级文件而导致系统无法正常启动,需要返厂重新刷机的问题。将rootfs中可能需要频繁升级的内容放到一个独立分区appfs中,用于减少对rootfs的升级次数。本发明还同时提供应用上述方法的设备和存储介质。
Description
技术领域
本发明属于嵌入式linux系统的技术领域,具体涉及一种保障linux系统安全升级的方法、设备和存储介质。
背景技术
嵌入式linux系统在电子设备中有着较为广泛的应用,电子设备出厂后可能因为修复Bug或增加功能而需要对固件文件进行升级,而在写入升级文件的过程中如果出现设备断电或者写入的固件文件自身已经被破坏了,会导致写入到系统中的固件文件有错误而引起系统无法正常启动,需要返维修点重新刷机,增加售后成本。
发明内容
针对上述现有技术存在的不足,本发明的目的是提供一种保障linux系统安全升级的方法、设备和存储介质,可以解决现有技术中linux系统固件文件升级完成后不能正常启动的问题。
为了实现上述目的,本发明提首先供一种保障linux系统安全升级的方法,包括:
S1,启动系统;
S2,Bootloader依次计算kernel、rootfs和appfs的hash值,然后和系统中的hash值进行比较是否一致,若全部一致则正常运行加载kernel固件,系统正常启动,升级成功;若其中有一个不一致,则进入步骤S3;
S3,加载kernel_recovery,在传递给kernel的启动参数中将rootfs_recovery分区设置为正常启动的rootfs分区,运行加载的kernel_recovery固件,recovery系统启动完成,重新写入升级文件,写入完成后进入步骤S1。
进一步地,步骤S2中,若rootfs的hash值和保存在系统中的hash值一致,则在传递给kernel的启动参数中将rootfs分区设置为正常启动的rootfs分区。
进一步地,kernel_recovery和rootfs_recovery为在系统原有分区的基础上增加的kernel和rootfs的备用恢复分区。
进一步地,appfs为将rootfs中多次修改和升级的部分独立出来的分区,可以减少rootfs的升级次数。
进一步地,步骤S3中,升级文件通过webserver上传,或通过U盘或SD卡拷贝输入到系统中。
进一步地,步骤S3中还包括对升级文件是否可以用于升级进行判断校验:升级程序计算升级文件的hash值,并和升级文件中保存的hash值进行比对,若一致则再对升级文件的hash值进行签名验证,若验证通过则进入步骤S2,若hash值比对不一致或者签名验证不通过,则不进行升级。
进一步地,升级文件写入完成后将升级文件的hash保存在系统中,用于Bootloader启动时进行比对。
本发明同时提供一种设备,包括处理器和存储器;存储器用于存储升级程序,处理器调用升级程序,以执行上述的保障linux系统安全升级的方法。
本发明还提供一种机器可读的存储介质,其上存储有指令,当由处理器执行指令时,以执行上述的保障linux系统安全升级的方法。
与现有技术相比,本发明提供的保障linux系统安全升级的方法、设备和存储介质,在原有系统分区的基础上增加了kernel和rootfs的备用恢复分区kernel_recovery和rootfs_recovery,这样当系统升级写入升级文件的过程中发生断电或者原升级文件被破坏,而导致系统无法正常启动时,可以启用备用的kernel_recovery和rootfs_recovery,使系统恢复,然后再对系统进行升级,最后系统正常启动,升级成功,这样保障了linux系统可以安全升级。另外,以及将rootfs中需要频繁升级的内容一个独立设置分区appfs,这样可以减少对rootfs升级的次数,从而减少rootfs被升级失败的概率。
附图说明
图1是本发明实施例一保障linux系统安全升级的方法流程图;
图2是本发明实施例二设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
首先对本发明实施例中系统总共的分区做如下说明:
Bootloader:系统Bootloader固件;
kernel:系统正常启动的kernel固件;
kernel_recovery:紧急kernel固件,在正常固件校验不过时加载,出厂时保证基本功能稳定,出厂后不做升级,仅用于系统恢复用;
rootfs:系统正常启动的rootfs固件;
rootfs_recovery:紧急rootfs固件,在正常固件校验不过时加载,出厂时保证基本功能稳定,出厂后不做升级,仅用于系统恢复用;
appfs:从rootfs中将需要频繁修改和升级的部分独立出来的分区,从而减少对rootfs的升级频次。
实施例一:
本发明实施例一提供一种保障linux系统安全升级的方法,包括如下步骤,如图1所示:
S1,启动系统;
S2,Bootloader依次计算kernel、rootfs和appfs的hash值,然后和系统中的hash值进行比较是否一致,若全部一致则正常运行加载kernel固件,系统正常启动,升级成功;若其中有一个不一致,则进入步骤S3;
S3,加载kernel_recovery,在传递给kernel的启动参数中将rootfs_recovery分区设置为正常启动的rootfs分区,运行加载的kernel_recovery固件,recovery系统启动完成,重新写入升级文件,写入完成后进入步骤S1;
本实施例中linux系统的固件文件分为bootloader、kernel、rootfs三部分,bootloader主要负责上电后将kernel加载到内存,并将rootfs所在的分区路径等启动参数传递给kernel然后启动kernel;kernel即为linux系统底层的主体,负责整个系统的运行调度和外设的驱动等;rootfs为linux系统上层的主体,负责系统上层文件系统加载及命令的解析和UI的呈现及所有应用程序。
当系统写入升级文件完成后,系统启动,进入步骤S2;若升级文件若没有被破坏,则系统正常完成启动,升级成功;升级文件在写入过程中发生断电或者升级文件已被破坏,则导致系统无法正常启动,则进入步骤S3,启用备用的kernel_recovery和rootfs_recovery使系统恢复,在系统重新写入升级文件后,再进入步骤S2,直至系统正常启动完成升级。这样在系统固件文件升级不成功时,系统依旧可以正常启动,而不需要去返厂维修,重新刷机。
本实施例中,kernel_recovery和rootfs_recovery为在系统原有分区的基础上增加的kernel和rootfs的备用恢复分区,以便kernel和rootfs出现问题时,可以从kernel_recovery和rootfs_recovery进行恢复还原。Appfs是从rootfs中将需要频繁修改和升级的部分独立出来的分区,这样可以减少对rootfs的升级频次,使其更稳定,减少被破坏的概率。
如图1所示,步骤S2具体包含以下方法:
首先,Bootloader计算kernel的hash值并和保存在系统中的hash值进行比较,如果一致则认为kernel分区完整,正常加载kernel固件,接着计算rootfs的hash值;若hash值不一致则认为kernel分区不完整,然后进入步骤S3;
其次,Bootloader计算rootfs的hash值并和保存在系统中的hash值进行比较,如果一致则认为rootfs分区完整,在传递给kernel的启动参数中将该分区设置为正常启动的rootfs分区,接着计算appfs的hash值;若不一致则认为rootfs不完整,然后进入步骤S3;
然后,Bootloader计算appfs的hash值并和保存在系统中的hash值进行比较,如果一致则认为appfs分区完整,运行加载的kernel固件,系统正常启动,完成升级;若不一致则认为appfs不完整,然后进入步骤S3。
在步骤S3中,将升级文件通过webserver上传,或通过U盘或SD卡拷贝到系统中,然后触发升级程序。
升级程序还包括对待升级的固件文件是否可以用于升级进行判断校验,升级程序计算待升级的升级文件的hash值,并和升级文件中保存的hash值进行比对是否一致:
如果一致则认为升级文件没有被破坏,然后对该升级文件的hash值进行签名验证,若验证通过则表示该升级确定为经过厂商签名后的固件文件,并非篡改或者其他人生成的固件文件,可以用于升级,进入步骤S2,升级完成后将该hash保存在系统中,用于Bootloader启动时进行比对;
如果不一致或者签名验证不通过,则认为升级文件被破坏或者篡改了,不可以用于升级,提示升级固件文件验证错误,停止升级程序。
实施例二:
本发明实施例二提供一种设备,如图2所示,包括处理器1和存储器2;存储器2用于存储程序和数据,处理器1调用存储器2存储的程序,以执行实施例一提供的linux系统安全升级的方法。在本实施例设备的实现中,存储器2和处理器1之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可以通过一条或者多条通信总线或信号线电性连接,如可以通过总线3连接。存储器2中存储有实现数据访问控制方法的计算机执行指令,包括至少一个可以软件或固件的形式存储于存储器2中的软件功能模块,处理器1通过运行存储在存储器2内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器2可以是,但不限于,随机存取存储器(RandomAccessMemory,简称:RAM),只读存储器(ReadOnlyMemory,简称:ROM),可编程只读存储器(ProgrammableRead-OnlyMemory,简称:PROM),可擦除只读存储器(ErasableProgrammableRead-OnlyMemory,简称:EPROM),电可擦除只读存储器(ElectricErasableProgrammableRead-OnlyMemory,简称:EEPROM)等。其中,存储器2用于存储程序,处理器1在接收到执行指令后,执行程序。进一步地,上述存储器2内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。处理器1可以是一种集成电路芯片,具有信号的处理能力。述的处理器1可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称:CPU)、网络处理器(NetworkProcessor,简称:NP)等。可以实现或者执行本实施例中公开的各方法、步骤及逻辑流程框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
实施例三:
本发明实施例三提供一种机器可读的存储介质,其上存储有指令,当由处理器执行指令时,以执行实施例一提供的linux系统安全升级的方法。
本领域普通技术人员应理解:实现上述各实施例的全部或部分方法步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于计算机可读取的存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括但不局限于:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质,具体的介质类型本申请不做限制。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (9)
1.一种保障linux系统安全升级的方法,其特征在于,包括:
S1,启动系统;
S2,Bootloader依次计算kernel、rootfs和appfs的hash值,然后和系统中的hash值进行比较是否一致,若全部一致则正常运行加载kernel固件,系统正常启动,升级成功;若其中有一个不一致,则进入步骤S3;
S3,加载kernel_recovery,在传递给kernel的启动参数中将rootfs_recovery分区设置为正常启动的rootfs分区,运行加载的kernel_recovery固件,recovery系统启动完成,重新写入升级文件,写入完成完成后进入步骤S1。
2.根据权利要求1所述的保障linux系统安全升级的方法,其特征在于,所述步骤S2中,若所述rootfs的hash值和保存在系统中的hash值一致,则在传递给kernel的启动参数中将所述rootfs分区设置为正常启动的rootfs分区。
3.根据权利要求1所述的保障linux系统安全升级的方法,其特征在于,所述kernel_recovery和所述rootfs_recovery为在系统原有分区的基础上增加的kernel和rootfs的备用恢复分区。
4.根据权利要求3所述的保障linux系统安全升级的方法,其特征在于,所述appfs为所述将所述rootfs中多次修改和升级的部分独立出来的一个分区,以减少对所述rootfs升级的次数。
5.根据权利要求1所述的保障linux系统安全升级的方法,其特征在于,所述步骤S3中,所述升级文件通过webserver上传,或通过U盘或SD卡拷贝输入到所述系统中。
6.根据权利要求1-5任一项所述的保障linux系统安全升级的方法,其特征在于,所述步骤S3中,还包括对所述升级文件是否可以用于升级进行判断校验:所述升级程序计算所述升级文件的hash值,并和所述升级文件中保存的hash值进行比对,若一致则再对所述升级文件的hash值进行签名验证,若验证通过则可以升级,若hash值比对不一致或者签名验证不通过,则不进行升级。
7.根据权利要求6所述的保障linux系统安全升级的方法,其特征在于,所述步骤S3中,所述升级文件写入完成后将所述升级文件的hash保存在系统中,用于所述Bootloader启动时进行比对。
8.一种设备,其特征在于,包括处理器和存储器;所述存储器用于存储升级程序,所述处理器调用所述升级程序,以执行如权利要求1-7任一项所述的保障linux系统安全升级的方法。
9.一种机器可读的存储介质,其特征在于,其上存储有指令,当由处理器执行所述指令时,以执行如权利要求1-7任一项所述的保障linux系统安全升级的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911139567.6A CN111090443A (zh) | 2019-11-20 | 2019-11-20 | 一种保障linux系统安全升级的方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911139567.6A CN111090443A (zh) | 2019-11-20 | 2019-11-20 | 一种保障linux系统安全升级的方法、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111090443A true CN111090443A (zh) | 2020-05-01 |
Family
ID=70393494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911139567.6A Pending CN111090443A (zh) | 2019-11-20 | 2019-11-20 | 一种保障linux系统安全升级的方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111090443A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799698A (zh) * | 2021-01-14 | 2021-05-14 | 陕西建工安装集团(河南)有限公司 | 一种U-boot下基于SD卡自动升级方法 |
CN114564723A (zh) * | 2020-11-27 | 2022-05-31 | 广东小天才科技有限公司 | 一种终端设备引导验证的方法、系统和移动终端 |
CN117234544A (zh) * | 2023-11-14 | 2023-12-15 | 海马云(天津)信息技术有限公司 | 服务器设备进行系统恢复的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425018A (zh) * | 2008-12-05 | 2009-05-06 | 深圳创维数字技术股份有限公司 | 基于分段式的嵌入式固件升级方法及装置 |
CN103699421A (zh) * | 2014-01-08 | 2014-04-02 | 金三立视频科技(深圳)有限公司 | 嵌入式设备系统升级方法及其装置 |
CN104778060A (zh) * | 2015-04-07 | 2015-07-15 | 珠海全志科技股份有限公司 | 一种嵌入式Linux系统快速安全启动方法 |
CN107273160A (zh) * | 2017-06-09 | 2017-10-20 | 青岛海信电器股份有限公司 | 一种版本升级的方法及装置 |
CN107656765A (zh) * | 2017-08-31 | 2018-02-02 | 深圳英飞拓科技股份有限公司 | 一种设备初始化的方法、系统及终端设备 |
CN109766140A (zh) * | 2018-12-19 | 2019-05-17 | 青岛海信宽带多媒体技术有限公司 | 一种机顶盒启动异常的定位方法及装置 |
-
2019
- 2019-11-20 CN CN201911139567.6A patent/CN111090443A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425018A (zh) * | 2008-12-05 | 2009-05-06 | 深圳创维数字技术股份有限公司 | 基于分段式的嵌入式固件升级方法及装置 |
CN103699421A (zh) * | 2014-01-08 | 2014-04-02 | 金三立视频科技(深圳)有限公司 | 嵌入式设备系统升级方法及其装置 |
CN104778060A (zh) * | 2015-04-07 | 2015-07-15 | 珠海全志科技股份有限公司 | 一种嵌入式Linux系统快速安全启动方法 |
CN107273160A (zh) * | 2017-06-09 | 2017-10-20 | 青岛海信电器股份有限公司 | 一种版本升级的方法及装置 |
CN107656765A (zh) * | 2017-08-31 | 2018-02-02 | 深圳英飞拓科技股份有限公司 | 一种设备初始化的方法、系统及终端设备 |
CN109766140A (zh) * | 2018-12-19 | 2019-05-17 | 青岛海信宽带多媒体技术有限公司 | 一种机顶盒启动异常的定位方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114564723A (zh) * | 2020-11-27 | 2022-05-31 | 广东小天才科技有限公司 | 一种终端设备引导验证的方法、系统和移动终端 |
CN112799698A (zh) * | 2021-01-14 | 2021-05-14 | 陕西建工安装集团(河南)有限公司 | 一种U-boot下基于SD卡自动升级方法 |
CN117234544A (zh) * | 2023-11-14 | 2023-12-15 | 海马云(天津)信息技术有限公司 | 服务器设备进行系统恢复的方法和装置 |
CN117234544B (zh) * | 2023-11-14 | 2024-01-26 | 海马云(天津)信息技术有限公司 | 服务器设备进行系统恢复的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9205809B2 (en) | Vehicle unit and method for operating the vehicle unit | |
US10437580B2 (en) | Software updating methods and systems | |
CN109670319B (zh) | 一种服务器flash安全管理方法及其系统 | |
CN111090443A (zh) | 一种保障linux系统安全升级的方法、设备和存储介质 | |
WO2016206514A1 (zh) | 启动处理方法及装置 | |
CN106775674B (zh) | 一种基于通用引导加载程序的设备及其启动方法 | |
CN109634781B (zh) | 一种基于嵌入式程序双区备份映像系统及启动方法 | |
CN106648768B (zh) | 一种升级设备的方法及系统 | |
CN107567629A (zh) | 在可信执行环境容器中的动态固件模块加载器 | |
CN108345464A (zh) | 一种安卓系统的启动方法及安卓车机 | |
CN111488589A (zh) | 基于硬件写保护的安全可信启动及固件升级系统和方法 | |
EP3895939B1 (en) | Electronic control device and security verification method for electronic control device | |
CN115113905A (zh) | 固件升级方法和固件升级装置 | |
US20220391192A1 (en) | Ota master, center, system, method, non-transitory storage medium, and vehicle | |
CN117130672A (zh) | 服务器启动流程控制方法、系统、终端及存储介质 | |
WO2015184732A1 (zh) | 引导程序的存储方法、故障恢复方法及设备、计算机存储介质 | |
CN114579971A (zh) | 一种安全控制模组的启动方法及相关装置 | |
CN111273928B (zh) | 一种自升级的bootloader设计方法 | |
CN110134456B (zh) | 用于管理操作系统的方法、装置、设备和存储介质 | |
CN114793196B (zh) | 固件升级方法、装置、设备和存储介质 | |
CN113176891B (zh) | 一种基于Bootloader带有备份功能的ECU的程序烧写方法 | |
CN115658152A (zh) | 固件升级方法、固件、电子设备和计算机可读存储介质 | |
CN114356658A (zh) | 固件升级异常的处理方法、计算机设备以及可读存储介质 | |
CN114265603A (zh) | 基于不对称分区的系统升级方法、装置和电子设备 | |
CN109428936A (zh) | App的升级方法、装置、系统、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |