本发明属于计算机,具体而言属于一种分区损坏切换备份的方法及系统。
背景技术:
1、在现代通信模组和安卓设备中,ab分区方案被广泛采用以实现系统软件的无缝更新。该方案通过将存储空间分为a区和b区,使得在系统软件更新过程中,可以在b分区进行新版本的安装,而a分区则保留当前运行的版本。这样,在更新过程中发生异常时,系统可以回滚至a分区使用旧版本开机,以此保证更新的安全性和系统的可靠启动。ab分区的更新机制主要应用于系统软件的更新场景,即fota(firmware over-the-air)升级,确保了升级过程中的数据安全和系统的稳定性。
2、尽管ab分区方案在系统升级方面提供了一定的安全保障,但其应用范围相对有限,主要集中在软件升级过程中。这种机制很少被用于处理非升级过程中的分区损坏情况,即当a分区在日常使用中损坏导致无法正常开机时,系统并不会自动切换至b分区以实现恢复和启动。此外,少数设备尝试在开机阶段通过校验失败来恢复b分区,但这种做法存在较大风险:在没有充分运行测试的情况下,无法保证另一分区的完整性和可靠性,若因误判而重写当前可用的分区,可能会引入更多风险,导致设备无法启动。这表明,当前的ab分区方案在程序健壮性和应对非升级场景下的分区损坏方面,仍然面临挑战,需要进一步的技术改进以提高系统的可靠性和用户体验。
3、有鉴于此,特提出本发明。
技术实现思路
1、有鉴于此,本发明公开了一种分区损坏切换备份的方法及系统,能够解决操作系统在遇到分区损坏、数据篡改或升级失败等问题的恢复机制,提高系统的可靠性和稳定性。
2、具体的,本发明是通过以下技术方案实现的:
3、第一方面,本发明公开了一种分区损坏切换备份的方法,包括如下步骤:
4、s1、开机前检测ab分区标志位信息,根据所述ab分区标志位信息判断是否存在可用分区,检测可用分区的工作状态并根据优先级排序选择优先级高的可用分区作为运行分区进行开机;
5、s2、设置开机镜像校验机制,在开机加载镜像阶段,若校验成功,则进入下一步骤,若校验失败,判断是否启动ab ota升级规则,若是,则标记当前运行分区的success=0,并重启,若否,则进入fastboot模式;
6、s3、采用dm-verity进行校验运行分区,确保启动后再访问各数据块时进行单独验证;
7、若哈希树根基损坏或数据块校验失败,则标记当前运行分区的success=0并重启;
8、若标志开机的服务成功开启,则标记当前运行分区的工作状态为可用状态;
9、s4、开机服务成功开启后,检测另一分区的工作状态,若被标记为不可用状态或恢复未完成,则进行恢复操作;
10、s5、恢复完成后,更新分区信息,将当前运行分区优先级设置为最高,另一分区的优先级低于当前运行分区,且标记为开机未成功但不改变工作状态。
11、本发明能够实现分区损坏自动恢复,通过检测ab分区的状态并选择一个健康的分区作为运行分区,系统可以在一个分区损坏时自动切换到另一个分区,从而避免启动失败;并且提高系统升级安全性,在系统升级过程中,如果新升级的系统存在问题或校验失败,系统可以自动标记该分区为不可用分区并重新启动,回滚到旧的系统分区,确保系统的连贯运行和数据安全;通过采用dm-verity技术对运行分区进行实时校验,能够确保系统文件在运行时未被篡改,增加系统防篡改的能力。
12、本发明能够对运行问题及时发现与恢复,如果在系统运行过程中发现哈希树根基损坏或数据块校验失败,系统能够及时发现并通过重启尝试自我恢复,减少了潜在的安全风险;
13、同时本发明具有自动化的分区恢复流程,当检测到备用分区被标记为不可用或恢复未完成时,系统会自动执行恢复操作,无需用户干预,简化了恢复流程,提升了用户体验;
14、本发明优化系统运行环境,在恢复完成后,通过更新分区信息和调整分区优先级,系统能够确保始终在最健康、最安全的分区上运行,保证了系统性能和稳定性。
15、进一步地,所述s4步骤中,所述恢复操作的方法包括:
16、计算当前运行分区与损坏分区内的每个分区的md5值,若两者md5值相等则不进行操作,继续比较下一分区;
17、若两者md5值不相等,则将运行分区的信息复制恢复到损坏分区,恢复后再次计算md5值,重复操作直至md5值相等后完成恢复操作;
18、若多次重复不相等,则报错后进入校验下一分区。
19、进一步地,若校验或恢复某一分区过程中出现报错情况,则跳过该数据块的校验与恢复,至下次开机时再次进行校验并恢复。
20、进一步地,所述s1步骤中,所述判断是否存在可用分区的方法包括:
21、判断所述ab分区的priority标志位信息;
22、若存在至少一个分区的priority标志位大于0,则认定存在可用分区,并对可用分区进行优先级排列;
23、若每个分区的priority标志位均小于等于0,则认定不存在可用分区,系统重新初始化ab分区的信息。
24、进一步地,所述s1步骤中,所述检测可用状态的方法包括:
25、检测可用分区的success标志位信息;
26、若可用分区的success标志位为1,则选用当前可用分区作为运行分区进行开机;
27、若所述可用分区的success标志位为0,则减少该分区retry次数后继续开机,直至减少至小于等于0,则将该分区的工作状态标记为不可用状态,按照优先级顺序选择下一个可用分区。
28、进一步地,所述s3步骤中,所述采用dm-verity进行校验的方法包括:
29、创建一个只读的校验区域,包括校验表和校验块;
30、在所述校验表中记录分区中每个数据块的哈希值,并在设备启动时,将所述校验表加载到内存中;
31、从第一级开始逐级计算数据块的哈希值,并与校验表中对应的哈希值进行比较继而验证整个哈希树的哈希值。
32、第二方面,本发明公开了一种分区损坏切换备份的系统,包括:
33、分区状态检测模块:开机前检测ab分区标志位信息,根据所述ab分区标志位信息判断是否存在可用分区,检测可用分区的工作状态并根据优先级排序选择优先级高的可用分区作为运行分区进行开机;
34、镜像加载模块:设置开机镜像校验机制,在开机加载镜像阶段,若校验成功,则进入下一步骤,若校验失败,判断是否启动ab ota升级规则,若是,则标记当前运行分区的success=0,并重启,若否,则进入fastboot模式;
35、校验模块:采用dm-verity进行校验运行分区,确保启动后再访问各数据块时进行单独验证;
36、若哈希树根基损坏或数据块校验失败,则标记当前运行分区的success=0后重启;
37、若标志开机的服务成功开启,则标记当前运行分区的success=1并使用当前运行分区进行开机;
38、恢复操作模块:开机服务成功开启后,检测另一分区的工作状态,若被标记为不可用状态或恢复未完成,则进行恢复操作;
39、恢复后标记模块:恢复完成后,更新分区信息,将当前运行分区优先级设置为最高,另一分区的优先级低于当前运行分区,且标记为开机未成功但不改变工作状态。
40、第三方面,本发明公开了一种计算机可读存储介质,其上存储有计算机程序所述程序被处理器执行时实现如第一方面所述分区损坏切换备份的方法的步骤。
41、第四方面,本发明公开了一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的分区损坏切换备份的方法的步骤。
42、与现有技术相比,本发明的有益效果在于:
43、本发明提供的分区损坏切换备份的方法及系统,通过提供一套完整的分区检测、校验、恢复和优先级调整机制,有效地提高了系统在面对软件错误、数据损坏或安全威胁时的自我修复能力和稳定性;本发明可以在对另一分区进行备份时保证有一个分区可以正常使用,避免了进行备份操作导致两个分区均损坏的情况。同时避免对正常分区进行不必要的刷写,减少对nand的写操作。