本技术涉及计算机,具体地涉及一种操作系统升级方法、设备、存储介质及计算机程序产品。
背景技术:
1、在现有技术的应用场景中,用户终端需要安装操作系统才可以被用户使用。例如,手机上需要安装手机操作系统(例如:ios系统、安卓系统)才可以被用户使用。
2、在终端设备安装操作系统后,当操作系统出现版本升级时,需要升级终端设备上所安装的操作系统。一般的,终端设备的操作系统的分区架构是事先在终端设备的存储器上规划好的。操作系统的升级主要是在原有的操作系统分区架构下对操作系统数据进行更新。但是,在进行某些改动较大的版本升级时,需要改动操作系统的分区架构,例如,增加分区或者是删除分区。因此,需要一种支持调整分区架构的操作系统升级方法。
技术实现思路
1、有鉴于此,本技术提供一种升级操作系统的方法、设备、存储介质及计算机程序产品,以利于解决现有技术中如何调整设备存储器的分区架构的问题。
2、第一方面,本技术实施例提供了一种升级操作系统的方法,应用于电子设备,所述电子设备包括处理器以及存储器,所述存储器包括基础分区、第一静态分区、第二静态分区、动态分区以及用户数据分区,所述电子设备当前的分区表为对应第一操作系统的第一分区表,所述电子设备启动后加载所述基础分区、所述第一静态分区以及动态分区的数据以运行所述第一操作系统,所述第一操作系统运行之后,所述方法包括:
3、获取操作系统升级包,所述操作系统升级包包括对应第二操作系统的第二分区表以及操作系统升级数据,所述操作系统升级数据用于将所述第一操作系统升级到所述第二操作系统,所述操作系统升级数据包括动态分区升级数据,其中,在所述第二分区表以及所述第一分区表中,名称相同的分区的地址配置一致;
4、触发所述电子设备的第一次重启,在所述第一次重启之后,所述电子设备进入恢复模式;
5、在所述恢复模式下,将所述电子设备的分区表更新为所述第二分区表;
6、触发所述电子设备的第二次重启,在所述第二次重启之后,所述电子设备加载所述基础分区、所述第一静态分区以及动态分区的数据以运行所述第一操作系统;
7、在所述用户数据分区中创建虚拟动态分区,将所述动态分区升级数据写入到所述虚拟动态分区;
8、触发所述电子设备的第三次重启;
9、在所述第三次重启之后,所述电子设备加载所述基础分区、所述第二静态分区、所述动态分区以及所述虚拟动态分区的数据以运行所述第二操作系统;
10、在所述第二操作系统运行后,将所述虚拟动态分区的数据落盘到所述动态分区。
11、根据本技术第一方面的方案,可以针对采用虚拟a/b升级方案的操作系统进行升级并在升级过程中更新设备存储器的分区表;根据本技术第一方面的方案,不需要准备烧录工具,设备基于下载的操作系统升级包就可以自行完成分区表的更新;根据本技术第一方面的方案大大简化了设备分区表更新的操作难度,提高了用户体验。
12、在第一方面的一种实现方式中,所述操作系统升级数据还包括静态分区升级数据;
13、在所述用户数据分区中创建虚拟动态分区之前,所述方法还包括,基于所述静态分区升级数据升级所述第二静态分区的数据。
14、在第一方面的一种实现方式中,所述触发所述电子设备的第三次重启之前,所述方法还包括,将所述电子设备的启动顺序由从所述第一静态分区启动,修改为从所述第二静态分区启动。
15、在第一方面的一种实现方式中,所述方法还包括生成所述第二分区表。
16、在第一方面的一种实现方式中,所述第一分区表中包括第一预留分区;所述生成所述第二分区表包括:
17、保持所述第一分区表中除所述第一预留分区以外的其他分区不变,基于所述第一预留分区的全部或部分空间创建新的分区。
18、在第一方面的一种实现方式中,所述生成所述第二分区表包括:
19、保持所述第一分区表中除第一分区以外的其他分区不变,删除所述第一分区,将所述第一分区的空间创建为第二预留分区;
20、或者,
21、保持所述第一分区表中除第一分区以及第一预留分区以外的其他分区不变,将所述第一分区与所述第一预留分区合并为第二预留分区。
22、在第一方面的一种实现方式中,重启所述电子设备,进入恢复模式之前,所述方法还包括:
23、执行分区表更新准备操作,所述分区表更新准备操作用于配置所述电子设备在所述恢复模式下的执行流程。
24、在第一方面的一种实现方式中,所述执行分区表更新准备操作,包括:
25、将所述第二分区表保存到缓存;
26、在所述缓存中写入第一控制命令,所述第一控制命令对应第一操作流程,所述第一操作流程用于将所述电子设备的分区表更新为所述第二分区表。
27、在第一方面的一种实现方式中,所述第一操作流程包括:
28、校验所述第二分区表;
29、所述第二分区表校验成功后,验证所述第二分区表以及所述第一分区表中,名称相同的分区的地址配置是否一致;
30、当所述第二分区表以及所述第一分区表中,名称相同的分区的地址配置一致时,使用所述第二分区表更新所述电子设备的分区表。
31、在第一方面的一种实现方式中,所述在所述恢复模式下,将所述电子设备的分区表更新为所述第二分区表,包括:
32、加载所述缓存中的所述第二分区表以及所述第一控制命令;
33、解析所述第一控制命令,根据所述第一控制命令调用所述第一操作流程的执行代码;
34、执行所述第一操作流程的执行代码。
35、在第一方面的一种实现方式中,所述执行分区表更新准备操作之前,所述方法还包括:
36、确认所述操作系统升级包是否用于更新分区;
37、当所述操作系统升级包用于更新分区时,确认所述电子设备的分区表是否已基于所述第二分区表进行过更新;
38、当所述电子设备的分区表未基于所述第二分区表进行过更新时,执行所述分区表更新准备操作。
39、在第一方面的一种实现方式中,所述确认所述操作系统升级包是否用于更新分区,包括:
40、解析所述操作系统升级包对应的描述文件,当所述描述文件中包含分区升级包标志时,所述操作系统升级包用于更新分区。
41、在第一方面的一种实现方式中:
42、所述确认所述电子设备的分区表是否已基于所述第二分区表进行过更新,其中,根据分区更新标志位的状态确认所述电子设备的分区表是否已基于所述第二分区表进行过更新,在所述获取操作系统升级包之前,所述分区更新标志位的状态为未更新;
43、所述在所述恢复模式下,将所述电子设备的分区表更新为所述第二分区表,包括,将所述分区更新标志位的状态设置为已更新;
44、所述在所述第二操作系统运行后,将所述虚拟动态分区的数据落盘到所述动态分区之后,所述方法还包括,将所述分区更新标志位的状态设置为未更新。
45、在第一方面的一种实现方式中,在所述在所述用户数据分区中创建虚拟动态分区之前,所述方法还包括:
46、在所述第二次重启之后,在所述第一操作系统运行之后,再次确认所述电子设备的分区表是否已基于所述第二分区表进行过更新;
47、当确认所述电子设备的分区表已基于所述第二分区表进行过更新时,执行所述在所述用户数据分区中创建虚拟动态分区,将所述动态分区升级数据写入到所述虚拟动态分区。
48、在第一方面的一种实现方式中,所述第一操作系统包括第一升级包获取工具以及第一升级引擎,所述第一操作系统运行之后,所述方法包括:
49、所述第一升级包获取工具获取所述操作系统升级包;
50、所述第一升级包获取工具确认所述操作系统升级包是否用于更新分区;
51、当所述操作系统升级包用于更新分区时,所述第一升级包获取工具确认所述电子设备的分区表是否已基于所述第二分区表进行过更新;
52、当所述电子设备的分区表未基于所述第二分区表进行过更新时,所述第一升级包获取工具执行所述分区表更新准备操作;
53、所述第一升级包获取工具记录第一升级流程断点,所述第一升级流程断点对应所述确认所述电子设备的分区表是否已基于所述第二分区表进行过更新;
54、所述第一升级包获取工具触发所述第一次重启;
55、所述第一次重启之后,所述电子设备进入所述恢复模式,在所述恢复模式下,所述电子设备的分区表被更新为所述第二分区表,之后,所述电子设备的分区表已基于所述第二分区表进行过更新;
56、在所述恢复模式下,触发所述第二次重启;
57、所述第二次重启之后,所述电子设备加载所述基础分区、所述第一静态分区以及动态分区的数据以运行所述第一操作系统;
58、所述第一操作系统运行之后,所述第一升级包获取工具读取所述第一升级流程断点,再次确认所述电子设备的分区表是否已基于所述第二分区表进行过更新;
59、当所述第一升级包获取工具确认所述电子设备的分区表已基于所述第二分区表进行过更新,所述第一升级包获取工具触发所述第一升级引擎在所述用户数据分区中创建虚拟动态分区,将所述动态分区升级数据写入到所述虚拟动态分区。
60、在第一方面的一种实现方式中,所述第一操作系统包括第二升级包获取工具以及第二升级引擎,所述第一操作系统运行之后,所述方法包括:
61、所述第二升级包获取工具获取所述操作系统升级包;
62、所述第二升级包获取工具触发所述第二升级引擎进入升级流程;
63、所述第二升级引擎确认所述操作系统升级包是否用于更新分区;
64、当所述操作系统升级包用于更新分区时,所述第二升级引擎确认所述电子设备的分区表是否已基于所述第二分区表进行过更新;
65、当所述电子设备的分区表未基于所述第二分区表进行过更新时,所述第二升级引擎执行所述分区表更新准备操作;
66、所述第二升级引擎向所述第二升级包获取工具返回所述分区表更新准备操作执行完成的状态信息;
67、所述第二升级包获取工具记录第二升级流程断点,所述第二升级流程断点对应所述第二升级包获取工具触发所述第二升级引擎进入升级流程;
68、所述第二升级包获取工具触发所述电子设备的所述第一次重启;
69、所述第一次重启之后,所述电子设备进入所述恢复模式,在所述恢复模式下,所述电子设备的分区表被更新为所述第二分区表,之后,所述电子设备的分区表已基于所述第二分区表进行过更新;
70、在所述恢复模式下,触发所述电子设备的所述第二次重启;
71、所述第二次重启之后,所述电子设备加载所述基础分区、所述第一静态分区以及动态分区的数据以运行所述第一操作系统;
72、所述第一操作系统运行之后,所述第二升级包获取工具读取所述第二升级流程断点,再次触发所述第二升级引擎进入升级流程;
73、所述第二升级引擎再次确认所述操作系统升级包是否用于更新分区;
74、当所述操作系统升级包用于更新分区时,所述第二升级引擎再次确认所述电子设备的分区表是否已基于所述第二分区表进行过更新;
75、当所述电子设备的分区表已基于所述第二分区表进行过更新时,所述第二升级引擎在所述用户数据分区中创建虚拟动态分区,将所述动态分区升级数据写入到所述虚拟动态分区。
76、第二方面,本技术提出了一种电子设备,电子设备包括处理器以及存储器,存储器包括基础分区、第一静态分区、第二静态分区、动态分区以及用户数据分区,动态分区包括多个子分区,处理器用于执行存储器上存储的软件代码,以使得电子设备启动后加载基础分区、第一静态分区以及动态分区的数据以运行第一操作系统;
77、并且,在第一操作系统运行之后,使得电子设备执行如第一方面的方法流程。
78、第三方面,本技术提出了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面的方法。
79、第四方面,本技术提出了一种计算机程序产品,计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行如第一方面的方法。