一种嵌入式Linux系统快速安全启动方法
【技术领域】
[0001]本发明涉及Linux系统技术领域,具体涉及一种嵌入式Linux系统快速安全启动方法。
【背景技术】
[0002]在嵌入式应用系统的开发中,通常需要进行大量的数据处理,譬如像行车记录仪、运动相机、网络摄像机等电子产品中,就有大量的图像、声音等数据需进行处理。嵌入式产品上为了存储这些数据,需要扩展较大的存储空间,从而增加了产品的成本和系统启动时间。若能够将这些数据进行压缩处理,优化系统启动时间,那么就可以减少数据的存储空间,降低产品的成本,提高产品的竞争力和改善用户体验。
[0003]传统的嵌入式Linux系统固件由bootloader (例如uboot)、Linux内核映像、Linuxrootfs、Linux应用组成。如图1所示,传统启动程序如果在加载Linux内核文件或rootfs文件系统时候出现错误,例如存储介质(emmc card、flash等)发生物理扇区位反转,数据虽然可读取,但不正确,启动装载程序不能探测到该类错误,致使后续的执行发生异常,导致系统死机。
【发明内容】
[0004]本发明要解决的技术问题在于,针对现有技术的不足,提供一种嵌入式Linux系统快速安全启动方法,克服现有技术Linux系统启动时间过长的缺陷,以及启动时无法检测数据错误,导致系统死机的缺陷。
[0005]本发明为解决上述技术问题所采用的技术方案为:
[0006]一种嵌入式Linux系统快速安全启动方法,包括步骤:
[0007]Al、使用XZ压缩算法对Linux系统引导加载程序以及备份引导加载程序进行压缩,形成引导加载程序压缩码以及备份引导加载程序压缩码;
[0008]A2、Linux系统启动时,读取所述引导加载程序压缩码,使用XZ解压缩算法对所述引导加载程序压缩码进行解压缩;
[0009]A3、计算引导加载程序校验码,并与所述引导加载程序头部校验码进行比较;
[0010]A4、如果比较结果正确则执行所述引导加载程序,否则执行步骤A5;
[0011]A5、从数据备份区读取所述备份引导加载程序压缩码,使用XZ解压缩算法对所述备份引导加载程序压缩码进行解压缩;
[0012]A6、计算备份引导加载程序校验码,并与所述备份引导加载程序头部校验码进行比较;
[0013]A7、如果比较结果正确则执行所述备份引导加载程序,否则终止启动过程。
[0014]根据本发明的实施例,对所述引导加载程序压缩码生成RLC游程编码,所述步骤A2包括步骤:对所述RLC游程编码进行解码。
[0015]根据本发明的实施例,所述步骤Al包括步骤:对所述备份引导加载程序压缩码生成RLC游程编码,所述步骤A5包括步骤:对所述RLC游程编码进行解码。
[0016]根据本发明的实施例,还包括步骤:执行所述引导加载程序或者所述备份引导加载程序时,判断是否需要对配置信息进行修改,如果需要则修改配置信息,否则执行后续步骤。
[0017]根据本发明的实施例,所述步骤Al包括步骤:使用XZ压缩算法对内核kernel程序以及备份内核kernel程序进行压缩,形成内核kernel程序压缩码和备份内核kernel程序压缩码,所述步骤A4包括步骤:
[0018]B1、所述引导加载程序读取所述内核kernel程序压缩码,使用XZ解压缩算法对所述内核kernel程序压缩码进行解压缩;
[0019]B2、计算内核kernel程序校验码,并与所述内核kernel程序头部校验码进行比较;
[0020]B3、如果比较结果正确则加载所述内核kernel程序,否则执行步骤B4 ;
[0021]B4、所述引导加载程序从数据备份区读取所述备份内核kernel程序压缩码,使用XZ解压缩算法对所述备份内核kernel程序压缩码进行解压缩;
[0022]B5、计算备份内核kernel程序校验码,并与所述备份内核kernel程序头部校验码进行比较;
[0023]B6、如果比较结果正确则加载所述备份内核kernel程序,否则终止启动过程。
[0024]根据本发明的实施例,所述步骤Al包括步骤:对所述内核kernel程序压缩码生成RLC游程编码,所述步骤BI包括步骤:对所述RLC游程编码进行解码。
[0025]根据本发明的实施例,所述步骤Al包括步骤:对所述备份内核kerne I程序压缩码生成RLC游程编码,所述步骤B4包括步骤:对所述RLC游程编码进行解码。
[0026]根据本发明的实施例,所述步骤B3包括步骤:加载文件系统rootfs。
[0027]根据本发明的实施例,所述步骤B6包括步骤:加载文件系统rootfs。
[0028]实施本发明的技术方案,具有以下有益效果:本发明对Linux系统固件的压缩率高,大大减少了存储空间,降低了成本,减少了系统启动时间,提高了用户体验,启动过程具有容错处理机制,可对配置信息进行动态修改,提高了产线问题的调试和解决速度。
【附图说明】
[0029]下面通过参考附图并结合实例具体地描述本发明,本发明的优点和实现方式将会更加明显,其中附图所示内容仅用于对本发明的解释说明,而不构成对本发明的任何意义上的限制,在附图中:
[0030]图1为现有技术Linux系统启动流程图;
[0031]图2为本发明流程图;
[0032]图3为本发明实施例流程图;
[0033]图4为本发明Linux系统固件组成示意图;
[0034]图5为本发明Linux系统固件压缩打包过程示意图。
【具体实施方式】
[0035]如图2和图3所示,本发明嵌入式Linux系统快速安全启动方法,包括步骤:
[0036]Al、使用XZ压缩算法对Linux系统引导加载程序以及备份引导加载程序进行压缩,形成引导加载程序压缩码以及备份引导加载程序压缩码;
[0037]A2、Linux系统启动时,读取引导加载程序压缩码,使用XZ解压缩算法对引导加载程序压缩码进行解压缩;
[0038]A3、计算引导加载程序校验码,并与引导加载程序头部校验码进行比较;
[0039]A4、如果比较结果正确则执行引导加载程序,否则执行步骤A5;
[0040]A5、从数据备份区读取备份引导加载程序压缩码,使用XZ解压缩算法对备份引导加载程序压缩码进行解压缩;
[0041]A6、计算备份引导加载程序校验码,并与备份引导加载程序头部校验码进行比较;
[0042]A7、如果比较结果正确则执行备份引导加载程序,否则终止启动过程。
[0043]在本发明优化实施例中还对引导加载程序压缩码生成RLC游程编码,对应地步骤A2包括步骤:对RLC游程编码进行解码。步骤Al包括步骤:对备份引导加载程序压缩码生成RLC游程编码,步骤A5包括步骤:对RLC游程编码进行解码。执行引导加载程序或者备份引导加载程序时,判断是否需要对配置信息进行修改,如果需要则修改配置信息,否则执行后续步骤。步骤Al包括步骤:使用XZ压缩算法对内核kernel程序以及备份内核kernel程序进行压缩,形成内核kernel程序压缩码和备份内核kernel程序压缩码,步骤A4包括步骤:
[0044]B1、引导加载程序读取内核kernel程序压缩码,使用XZ解压缩算法对内核kernel程序压缩码进行解压缩;
[0045]B2、计算内核kernel程序校验码,并与内核kernel程序头部校验码进行比较;
[0046]B3、如果比较结果正确则加载内核kernel程序,否则执行步骤B4 ;
[0047]B4、引导加载程序从数据备份区读取备份内核ker