CN118113355A - 操作系统切换方法、芯片及设备 - Google Patents

操作系统切换方法、芯片及设备 Download PDF

Info

Publication number
CN118113355A
CN118113355A CN202311871774.7A CN202311871774A CN118113355A CN 118113355 A CN118113355 A CN 118113355A CN 202311871774 A CN202311871774 A CN 202311871774A CN 118113355 A CN118113355 A CN 118113355A
Authority
CN
China
Prior art keywords
operating system
container
started
kernel
switching
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
Application number
CN202311871774.7A
Other languages
English (en)
Inventor
万侃然
毛阿利
张嘉誉
易倩
敖初妍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital Technologies Co Ltd
Filing date
Publication date
Application filed by XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Publication of CN118113355A publication Critical patent/CN118113355A/zh
Pending legal-status Critical Current

Links

Abstract

本申请实施例提供了一种操作系统切换方法、芯片及设备,涉及计算机技术领域。该方法中,计算设备运行第一操作系统的容器的过程中,若需要切换操作系统,则从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器,之后,从内存文件系统直接跳转运行第二操作系统的容器。由于待启动操作系统与当前运行的第一操作系统使用的引导加载程序和内核相同,因此,计算设备可以从内存文件系统直接跳转运行待启动操作系统的容器,不必重新启动引导加载程序和内核,从而实现了快速启动待启动操作系统,进而能够显著缩短操作系统切换消耗的时间,提高操作系统切换的效率以及用户的使用体验。

Description

操作系统切换方法、芯片及设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种操作系统切换方法、芯片及设备。
背景技术
相关技术中,计算设备运行当前操作系统的过程中,若需要切换操作系统,通常是从当前操作系统退回至只读存储器(read only memory,ROM)引导程序,然后,按照ROM引导程序指示的分区地址,依次加载待启动操作系统的引导加载程序、内核、根文件系统、应用程序等,从而实现启动待启动操作系统。这种情况下,操作系统切换消耗的时间特别长,导致操作系统切换的效率特别低,严重影响了用户的使用体验。
发明内容
本申请实施例提供一种操作系统切换方法、芯片及设备,能够缩短操作系统切换所消耗的时间,提高操作系统切换的效率,从而提高用户的使用体验。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种操作系统切换方法,用于计算设备,计算设备包括第一操作系统和第二操作系统,第一操作系统包括第一操作系统的容器,第二操作系统包括第二操作系统的容器;第一操作系统和第二操作系统使用的引导加载程序、内核和内存文件系统相同;该方法包括:加载引导加载程序和内核,从而运行第一操作系统的容器;当检测到发生目标事件,从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器;从内存文件系统跳转运行第二操作系统的容器,从而运行第二操作系统。
该实施例中,计算设备运行第一操作系统的容器时,若检测到目标事件,说明需要切换操作系统,基于此,计算设备从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器,之后,从内存文件系统直接跳转运行第二操作系统的容器。由于待启动操作系统与当前运行的第一操作系统统使用的引导加载程序、内核和内存文件系统相同,因此,计算设备可以从内存文件系统直接跳转运行待启动操作系统的容器,不必重新启动引导加载程序和内核,从而实现了快速启动待启动操作系统,相对于相关技术中的方式,能够显著缩短操作系统切换消耗的时间,提高操作系统切换的效率,进而提高用户的使用体验。
在一种可能的实现方中,该方法还包括:当检测到发生目标事件,从第二操作系统的容器跳转运行内存文件系统,并确定第一操作系统的容器为待启动操作系统的容器;从内存文件系统跳转运行第一操作系统的容器,以运行第一操作系统。
该实现方式中,在运行第二操作系统的过程中,若再次检测到发生目标事件,计算设备可以再次执行操作系统切换操作,以从第二操作系统的容器切换至第一操作系统的容器,从而实现运行第一操作系统。由于可以通过内存文件系统,直接从一个操作系统的容器切换至另一个操作系统的容器,因此,显著提高计算设备运行过程中的操作系统切换效率。
另一种可能的实现方式中,从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器,包括:若目标事件指示了容器切换,从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器。
该实现方式中,通过设置目标事件指示了容器切换时,才在跳转运行内存文件系统后,确定待启动操作系统的容器,以便于从内存文件系统直接切换至待启动操作系统的容器。这样,有助于仅在系统切换类型为容器切换时,才仅启动待启动操作系统的容器,进而有助于保证待启动操作系统启动后的稳定性和可靠性。
另一种可能的实现方式中,该方法还包括:若目标事件指示了为非容器切换,从第一操作系统的容器跳转运行内存文件系统,并跳转运行计算设备的只读存储器ROM引导程序;非容器切换用于指示系统切换过程中加载引导加载程序、内核以及待启动操作系统的容器;基于ROM引导程序指示引导加载程序,加载引导加载程序、内核和内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器;从内存文件系统跳转运行第二操作系统的容器,以运行第二操作系统。
该实现方式中,在系统切换类型为非容器切换时,计算设备不仅启动待启动操作系统的容器,还重新启动引导加载程序和内核,从而实现为用户提高另一种系统切换方式(即非容器切换),进而实现根据实际场景,执行不同的系统切换方式,这样,有助于提高待启动系统启动后的稳定性和可靠性。
另一种可能的实现方式中,确定第二操作系统的容器为待启动操作系统的容器,包括:从计算设备的存储介质中获取启动配置参数;启动配置参数用于指示待启动操作系统的容器;基于启动配置参数,确定第二操作系统的容器为待启动操作系统的容器。
该实现方中,通过存储介质中的启动配置参数,确定待启动操作系统的容器,这样,有助于保证确定待启动操作系统的容器的准确性以及便利性。
另一种可能的实现方式中,加载引导加载程序、内核、内存文件系统和第一操作系统的容器,以运行第一操作系统的容器,包括:在计算设备上电的情况下,基于计算设备的ROM引导程序指示所述引导加载程序,加载引导加载程序、内核和内存文件系统,并确定第一操作系统的容器为待启动操作系统的容器;从内存文件系统跳转运行第一操作系统的容器,以运行第一操作系统。
该实现方式中,计算设备上电时,基于ROM引导程序,依次运行引导加载程序、内核和内存文件系统,并确定待启动操作系统的容器,然后从内存文件系统跳转运行待启动操作系统的容器,这样,有助于保证在不同场景下启动待启动操作系统的流程一致性,进而有助于简化操作系统的启动程序。
另一种可能的实现方式中,检测到发生目标事件,包括:检测到系统切换请求。
该实现方式中,通过设置接收到系统切换请求时,跳转运行内存文件系统,这样,用户便可以通过向计算设备发送系统切换请求,实现触发计算设备进行操作系统切换,不仅有助于提高触发操作系统切换方式的多样性,还有助于提高用户的使用体验。
另一种可能的实现方式中,检测到发生目标事件,包括:检测到系统升级完成。
该实现方式中,通过设置执行完系统升级操作之后,自动跳转运行内存文件系统,从而实现在操作系统升级完成之后,自动切换运行升级后的操作系统,这样,便不必由用户手动触发切换操作系统,不仅有助于提高操作系统升级后的系统切换的便利性,还有助于提高用户的使用体验。
另一种可能的实现方式中,多个操作系统使用相同的引导加载程序和内核,包括:多个操作系统中的不同操作系统共用同一个引导加载程序和内核。
该实现方式中,在计算设备配置有多个操作系统时,多个操作系统中的不同操作系统共用同一个引导加载程序和内核,这样,有助于降低计算设备配置的多个操作系统时所占用的存储空间。
另一种可能的实现方式中,多个操作系统使用相同的引导加载程序和内核,包括:多个操作系统中不同操作系统的引导程序的代码和内核的代码相同。
该实现方式中,通过设置不同操作系统的引导程序的代码和内核的代码相同,这样,不仅使得每个操作系统可以使用其他操作系统的引导程序和内核,还有助于保证每个操作系统的完整性。
第二方面,提供了一种操作系统切换装置,该装置包括:用于执行第一方面提供的任意一种方法的功能单元,各个功能单元所执行的动作通过硬件实现或通过硬件执行相应的软件实现。例如,操作系统切换装置可以包括运行模块、跳转模块和切换模块;运行模块,用于加载引导加载程序和内核,从而运行第一操作系统的容器;跳转模块,用于当检测到发生目标事件,从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器;切换模块,用于从内存文件系统跳转运行第二操作系统的容器,从而运行第二操作系统。
第三方面,提供了一种芯片,芯片包括:处理器和存储器,所述处理器与存储器连接;所述存储器用于存储计算机执行指令,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述芯片实现第一方面提供的任意一种方法。
第四方面,提供了一种芯片,芯片包括:处理器和接口电路;接口电路,用于接收代码指令并传输至处理器;处理器,用于运行代码指令以执行上述第一方面提供的任意一种方法。
第五方面,提供了一种计算机设备,包括:供电电源和第三方面或第四方面提供的芯片,所述供电电源用于为芯片供电,所述芯片用于实现第一方面提供的任意一种方法。
第六方面,提供了一种计算机可读存储介质,存储有计算机执行指令,当计算机执行指令在计算设备上运行时,使得计算设备执行上述第一方面提供的任意一种方法。
第七方面,提供了一种计算机程序产品,包括:计算机执行指令,当计算机执行指令在计算设备上运行时,使得计算设备执行上述第一方面提供的任意一种方法。
其中,第二方面至第七方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种计算设备的示意图;
图2为本申请实施例提供的一种BMC单元的层级示意图;
图3为本申请实施例提供的一种操作系统切换方法的流程图;
图4为本申请实施例提供的一种界面示意图;
图5为本申请实施例提供的另一种操作系统切换方法的流程图;
图6为本申请实施例提供的一种操作系统切换的示意图;
图7为本申请实施例提供的一种操作系统启动的流程图;
图8为本申请实施例提供的一种操作系统启动的示意图;
图9为本申请实施例提供的一种操作系统切换装置的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
其中,在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。
并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。同时,在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
以下,对本申请实施例涉及的相关术语进行简要介绍。
容器:是计算机操作系统中的一种虚拟化技术,可以用于封装和隔离不同应用程序的运行环境,以将应用程序与操作系统隔离开,使得应用程序只能访问被临时赋予的资源,而无法访问操作系统上实际存在的文件和文件夹。
在本申请实施例中,容器可以包括根文件系统、系统守护进程和应用程序等。
分区:也可以称为操作系统分区(System Partion)、系统分区等,是指将存储设备的存储空间划分为不同区间。其中,存储操作系统的存储设备,可以按照操作系统的功能特性划分为不同分区,如:可以划分为引导加载程序(如:uboot)的分区、内核(如:kernel)的分区、根文件系统(如:rootfs)的分区以及应用程序的分区等。
在本申请实施例中,分区可以包括引导加载程序的分区、内核的分区以及容器的分区等。
根文件系统(如:rootfs):用于管理、存储文件。
内存文件系统(ramfs):是被操作系统的内核拉起的基础文件系统,用于切换容器、挂载/卸载分区、重启系统以及与处理器交互等。
change root(chroot)命令:用于将根目录更改为指定目录,也即,将程序运行环境切换到指定目录。切换后,在新运行环境下将访问不到旧的根目录结构和文件。示例性的,chroot命令可以从ramfs环境切换至指定容器的根目录环境。
系统守护进程(system daemon,systemd):是用于启动应用程序、并对各应用程序的启动前后依赖关系进行约束的进程。
应用程序:也可以称为服务,用于实现相对独立的功能,不同应用程序之间可以通过进程间的通信方式进行通信。
以下,对本申请实施例的应用场景进行示例性介绍。
相关技术中,计算设备运行当前操作系统的过程中,若需要切换操作系统,通常是从当前操作系统退回至只读存储器(read only memory,ROM)引导程序,然后,按照ROM引导程序指示的分区地址,依次加载待启动操作系统的引导加载程序、内核、根文件系统、应用程序等,从而实现启动待启动操作系统。这种情况下,操作系统切换消耗的时间特别长,导致操作系统切换的效率特别低,严重影响了用户的使用体验。
有鉴于此,本申请实施例提供了一种操作系统切换方法,用于计算设备,计算设备运行第一操作系统的容器时,若检测到目标事件,说明需要切换操作系统,基于此,计算设备从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器,之后,从内存文件系统直接跳转运行第二操作系统的容器。由于待启动操作系统与当前运行的第一操作系统统使用的引导加载程序、内核和内存文件系统相同,因此,计算设备可以从内存文件系统直接跳转运行待启动操作系统的容器,不必重新启动引导加载程序、内核和内存文件系统,从而实现了快速启动待启动操作系统,相对于相关技术中的方式,能够显著缩短操作系统切换消耗的时间,提高操作系统切换的效率,进而提高用户的使用体验。
以下,对本申请实施例的系统架构进行示例性介绍。
本申请实施例提供的操作系统切换方法适用于计算设备,计算设备包括至少一个管理单元。至少一个管理单元中的每个管理单元可以包括处理器、内存和存储设备等。存储设备中存储有至少一个操作系统,处理器可以通过内存运行存储设备中的至少一个操作系统。
本申请实施例中,至少一个操作系统中的每个操作系统可以包括引导加载程序、内核和容器等。每个操作系统的容器可以包括根文件系统、系统守护进程和至少一个应用程序等。
需要说明的,本申请实施例中的至少一个可以是一个,或者,也可以是多个。其中,多个可以是两个,或者,也可以是两个以上,后续不再赘述。
本申请实施例提供的操作系统切换方法,适用于计算设备的每个管理单元,每个管理单元基于本申请实施例提供的操作系统切换方法,在切换操作系统时,可以选择仅启动待启动操作系统的容器,而不必重新启动引导加载程序、内核和内存文件系统等。
本申请实施例中,每个管理单元还可以包括只读存储器。只读存储器中存储有ROM引导程序。ROM引导程序指示了引导加载程序在存储设备中的分区地址,基于此,在启动操作系统时,管理单元通过运行ROM引导程序,可以基于ROM引导程序指示的分区地址,跳转运行操作系统的引导加载程序,并基于引导加载程序指示的内核的分区地址,跳转运行内核,从而实现重新启动操作系统的引导加载程序和内核。示例性的,ROM可以内嵌在处理器上。相同型号的处理器,ROM中的代码可以相同。
本申请实施例中,至少一个管理单元可以包括带内管理单元和带外管理单元。
示例性的,带内管理单元是指用于实现带内管理的单元,如:中央管理单元等,带内管理是指计算设备的管理数据和用户的业务数据使用相同的物理通道进行传输。
示例性的,带外管理单元是指用于实现带外管理的单元,如:基板管理控制器(board management controller,BMC)单元等,带外管理是指计算设备的管理数据和用户的业务数据使用不同的物理通道进行传输。
需要说明的是,不同计算设备对BMC有不同的称呼,例如,一些计算设备称为BMC,一些计算设备称为iLO,另一计算设备称为iDRAC。不论是叫BMC,还是叫iLO或iDRAC,都可以理解为是本发明实施例中的BMC。
可选地,计算设备可以包括网络设备或终端设备。
网络设备可以包括服务器等。其中,服务器可以是一个物理或逻辑服务器,也可以是有两个或两个以上分担不同职责的物理或逻辑服务器、相互协同来实现服务器的各项功能。示例性的,服务器可以是刀片服务器、高密服务器、机架服务器或塔式服务器等。
终端设备可以包括增强现实(augmented reality,AR)设备、虚拟现实(virtualreality,VR)设备、个人数字助理(personal digital assistant,PDA)、超级移动个人计算机(ultra-mobile personal computer,UMPC)、平板电脑、笔记本电脑、上网本、台式计算机、一体机等。
需要说明的,本申请实施例对计算设备的形态不做限制,以上仅为示例性说明。
如图1所示,为本申请实施例提供的一种计算设备的示意图。
示例性的,参见图1,计算设备可以包括第一管理单元和第二管理单元。其中,第一管理单元可以为带外管理单元,带外管理单元可以包括处理器1、ROM1、内存1以及存储设备1等。第二管理单元可以为带内管理单元,带内管理单元可以包括处理器2、ROM2、内存2以及存储设备2等。
需要说明的,图1所示的计算设备仅为可适用于本申请实施例的一种计算设备的结构示意图,其不对本申请实施例所适用的计算设备构成限定。
以下,以带外管理单元为BMC单元为例,对本申请实施例进行示例性介绍。
本申请实施例中,BMC单元可以包括至少一个操作系统。其中,至少一个操作系统中的每个操作系统可以包括引导加载程序、内核和容器。
在BMC单元包括一个操作系统时,该一个操作系统可以包括引导加载程序、内核和容器。其中,容器包括根文件系统、系统守护进程(systemd)和至少一个应用程序。
在此基础上,存储设备1的多个分区中存储有一个操作系统。如:多个分区包括分区1、分区2和分区3,其中,分区1存储引导加载程序,分区2存储内核,分区3存储容器。
需要说明的,本申请实施例对容器中的应用程序的数量不做限制。
在BMC单元包括多个操作系统时,多个操作系统中的不同操作系统使用的引导加载程序和内核相同。由于内存文件系统是基于内核拉起的,因此,在不同操作系统使用的内核相同的情况下,不同操作系统使用的内存文件系统也相同。
需要说明的,不同操作系统使用的引导加载程序和内核相同,也可以认为一个操作系统可以兼容其他操作系统的引导加载程序和内核。
以下,通过方式1至方式2,对使用的引导加载程序和内核相同进行示例性介绍。
方式1:多个操作系统中不同操作系统共用同一个引导加载程序和内核。
其中,不同操作系统具有不同的容器。
示例性的,BMC单元包括M个操作系统,也即,存储设备1的多个分区中存储有M个操作系统,其中,M为大于1的正整数。由于不同操作系统使用同一个引导加载程序和内核,也即,共用相同的引导加载程序和内核,因此,M个操作系统可以包括一个引导加载程序、一个内核和M个容器。其中,一个容器属于一个操作系统,换言之,不同容器属于不同操作系统。一个操作系统的容器可以包括一个操作系统的根文件系统、系统守护进程(systemd)和应用程序。
该方式中,通过设置不同操作系统使用同一个引导加载程序、且使用同一个内核,这样,有助于减少多个操作系统所占用的存储空间,进而有助于节省存储资源。
示例性的,存储设备1的多个分区可以包括M+2个分区,其中,M+2个分区可以包分区1、分区2、分区3、......、分区M+2,其中,分区1可以用于存储引导加载程序,分区2可以用于存储内核,分区3、......、分区M+2用于存储M个容器。
需要说明的,不同容器中的应用程序可以相同,或者,也可以不同,本申请实施例对此也不做限制。
方式2:多个操作系统中不同操作系统使用的引导加载程序的代码相同,且不同操作系统使用的内核的代码相同。其中,不同操作系统具有不同的容器。
也就是说,多个操作系统都有独立的引导加载程序和内核,但是,不同操作系统使用的引导加载程序的代码相同,且不同操作系统使用的内核的代码相同。这种情况下,一个操作系统也可以使用另一个操作系统的引导加载程序和内核。
该方式中,通过设置不同操作系统包括独立的引导加载程序、内核和容器,且不同操作系统使用的引导加载程序的代码和内核的代码均相同,这样,不仅有助于保证每个操作系统的完整性,还有助于提高不同操作系统之间切换时的互通性,进而有助于系统切换时可以直接由当前运行的操作系统的容器跳转运行待启动操作系统的容器,进而有助于提高系统切换的效率。
需要说明的,关于容器的相关说明,可以参考上述方式1,此处不再赘述。
以下,以上述方式1为例,对本申请实施例进行示例性介绍。
如图2所示,为本申请实施例提供一种BMC单元的层级示意图。
参见图2,BMC单元包括硬件层和软件层,软件层是运行在硬件层上的程序代码。
其中,硬件层包括处理器、内存、ROM、存储设备等。软件层可以包括操作系统。用户侧可以通过软件层中的文件系统使用计算设备运行的应用程序。
以下,结合图2,对BMC单元的操作系统启动过程进行示例性介绍。
示例性的,BMC单元包括第一操作系统和第二操作系统,第一操作系统包括第一容器(也称为第一操作系统的容器),第二操作系统包括第二容器(也称为第二操作系统的容器),第一操作系统和第二操作系统共用相同的引导记载程序和内核。
需要说明的,在图2中,第一容器为实线,用于表征处于运行状态的容器。第二容器为虚线,用于表征处于非运行状态的容器,或者说,处于休眠状态的容器。
BMC单元上电时,BMC单元的处理器首先运行ROM引导程序,如:将ROM引导程序加载到BMC单元的内存中。之后,处理器基于ROM引导程序中的分区地址(即引导加载程序的分区地址),运行存储设备中的操作系统。
其中,运行存储设备中操作系统可以包括以下步骤:
1)运行操作系统的引导加载程序:按照ROM引导程序指示的分区地址,切换到引导加载程序所在分区,将引导加载程序加载到指定内存地址中运行,指定内存地址可以是出厂时设置的,运行引导加载程序的过程中,可以进行基础输入输出(input output,IO)配置等。
2)运行内核:基于引导加载程序指示的分区地址,切换到内核所在分区,将内核加载到指定的内存地址中运行。运行内核时,可以进行驱动设备配置和加载、拉起内存文件系统等。
其中,内核中包括切换器,切换器可以用于实现本申请实施例提供的操作系统切换方法。在拉起内存文件系统时,可以使用切换器拉起内存文件系统,从而使得内存文件系可以包括切换器,进而使得内存文件系统可以用于实现本申请实施例提供的操作系统切换方法。
3)运行容器:在拉起内存文件系统之后,切换到第一容器所在的分区,挂载第一容器所在的分区,并将第一容器的初始目录挂载为根目录,也即,将第一容器中的内容加载到指定的内存地址中运行。
需要说明,对于如何切换到第一容器所在的分区,将在后续实施例中进行说明,此处不再赘述。具体参见图7所示的实施例。
4)运行应用程序:通过第一容器中的系统守护进程启动第一容器中的应用程序。
需要说明的,本申请实施例描述的系统架构以及应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
为了便于理解,以下,结合上述系统架构以及附图,对本申请实施例提供的操作系统切换方法进行示例性介绍。
图3是根据一示例性实施例示出的一种操作系统切换方法的流程图。示例性的,该操作系统切换方法可以包括以下S301-S303。
以下,以计算设备的BMC单元的操作系统为例,对操作系统切换方法进行示例性说明。其中,下述的处理器、存储设备、内存、ROM、操作系统均属于BMC单元,后续不再说明。
以下,以BMC单元包括第一操作系统和第二操作系统为例,对图3所示实施例进行示例性说明。
其中,第一操作系统包括第一操作系统的容器,第二操作系统包括第二操作系统的容器,第一操作系统和第二操作系统使用的引导加载程序、内核和内存文件系统相同。第一操作系统的容器可以命名为第一容器,第二操作系统的容器可以命名为第二容器。
第一容器、第二容器可以包括根文件系统、系统守护进程以及至少一个应用程序。
需要说明的,本申请实施例对第一容器、第二容器中的应用程序的数量不做限制,且第一容器、第二容器中的应用程序可以全部相同、部分相同,或者,也可以全部不同。以下,以第一容器、第二容器包括多个应用程序为例,对本申请实施例进行示例性说明。
示例性的,第一操作系统和第二操作系统中的一个操作系统可以为BMC架构的操作系统(简称为BMC系统),另一个操作系统可以为OpenBMC架构的操作系统(简称为OpenBMC系统)。
以下,以BMC单元当前运行的操作系统为第一操作系统(如:第一操作系统为BMC系统)为例,对本申请实施例提供的操作系统切换方法进行示例性说明。
S301:计算设备加载引导加载程序和内核,从而运行第一操作系统的容器。
本申请实施例中,计算设备的BMC单元依次加载引导加载程序和内核,并在运行内核的过程中,基于内核包括的切换器生成内存文件系统,之后,运行第一操作系统的容器。
由于内存系统包括了切换器,因此,BMC运行内存文件系统的过程中,可以实现本申请实施例提供的操作系统切换方法。
需要说明的,S301的其他相关说明,可以参考上述图2的说明,此处不再赘述。
S302:计算设备检测到发生目标事件的情况下,从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器。
需要说明的,本申请实施例对“从第一操作系统的容器跳转运行内存文件系统”和“确定第二操作系统的容器为待启动操作系统的容器”的执行顺序不做限制。
其中,待启动操作系统的容器也可以称为待启动容器。
需要说明的,本申请实施例中,待启动操作系统、待启动容器等,是泛指待启动的操作系统、待启动的容器等,并不特指某一个操作系统、容器等。
本申请实施例中,计算设备的BMC单元运行第一容器的过程中,若检测到发生了目标事件,则BMC单元从运行第一容器跳转运行第一操作系统的内存文件系统。
需要说明的,BM单元运行第一容器,可以认为是BMC单元运行第一容器包括的多个应用程序。
需要说明的,本申请实施例中的BMC单元执行某个操作(如:加载内存文件系统、第一容器等),可以是BMC单元的处理器执行某个操作,后续不再说明。
本申请实施例中,检测到发生目标事件,包括多种情况,以下,通过情况1至情况2进行示例性说明。
情况1:计算设备接收到系统切换请求。
示例性的,用户需要切换BMC单元运行的操作系统时,可以通过电子设备向计算设备的BMC单元发送系统切换请求,以请求切换BMC单元运行的操作系统。BMC单元运行第一容器的过程中,若接收到系统切换请求,则跳转运行第一操作系统的内存文件系统。
该实施例中,通过设置目标事件可以为系统切换请求,从而实现在用户通过电子设备向计算设备发送系统切换请求时,可以通过本申请实施例提供的操作系统切换方法选择操作系统启动路径,也即,直接选择启动待启动操作系统的容器,进而有助于提高用户的使用体验。
情况2:计算设备执行完系统升级操作。
示例性的,在计算设备的BMC单元检测到某个操作系统(如:第二操作系统)被执行完升级操作的情况下,也就是说,检测到系统升级完成的情况下,BMC单元从运行第一容器跳转运行第一操作系统的内存文件系统。
在一个示例中,BMC单元可以在第二操作系统被执行完升级操作之后,立即从运行第一容器跳转运行第一操作系统的内存文件系统。
在另一个示例中,BMC单元可以在第二操作系统被执行完升级操作、且经过预设时长之后,从运行第一容器跳转运行第一操作系统的内存文件系统。
需要说明的,本申请实施例对预设时长的具体值不做限制。例如,可以是5秒、10秒等。
在又一个示例中,BMC单元可以在第二操作系统被执行完升级操作之后的指定时间,从运行第一容器跳转运行第一操作系统的内存文件系统。
需要说明的,本申请实施例对指定时间的具体时间点不做限制。例如,指定时间可以是次日的0点、1点等。
该实施例中,通过设置目标事件可以为系统升级完成,从而实现在操作系统升级完成后,可以自动切换到新升级的操作系统,这样,便不需要用户手动切换操作系统,有助于提高用户的使用体验。
需要说明的,第二操作系统升级可以是第二操作系统的容器升级,或者,也可以第二操作系统的整个操作系统进行升级,其中,第二操作系统的整个操作系统升级是指同时升级第二操作系统的引导记载程序、内核、容器等,本申请实施例对此不做限制。
本申请实施例中,计算设备的BMC单元从第一容器跳转运行第一操作系统的内存文件系统之前,可以对第一容器包括的多个应用程序执行关闭操作,以便于在关闭多个应用程序之后,再从第一容器跳转运行第一操作系统的内存文件系统。
这样,有助于避免突然退出第一容器,导致多个应用程序崩溃,影响第一操作系统的稳定性,从而导致计算设备宕机。此外,还有助于避免第一操作系统的应用程序应用后续启动的第二操作系统的应用程序的稳定性。
本申请实施例中,计算设备的BMC单元跳转运行第一操作系统的内存文件系统之后,与相关技术中不同的是,不再继续跳转运行ROM引导程序,而是确定待启动操作系统的容器,以便于直接从运行第一操作系统的内存文件系统切换为运行待启动操作系统的容器。
需要说明的,待启动操作系统可以为当前操作系统,或者,也可以当前操作系统之外的其他系统,本申请实施例对此不做限制。以下,以待启动操作系统为当前操作系统之外的其他操作系统为例,对本申请实施例进行示例性说明。
本申请实施例中,对于确定待启动操作系统的容器,包括多种实现方式,以下,通过方式1至方式2进行示例性说明。
方式1:基于启动配置参数,确定待启动操作系统的容器。
本申请实施例中,BMC单元可以基于启动配置参数,确定待启动操作系统的容器。
示例性的,BMC单元可以基于启动配置参数以及启动对应关系,确定待启动操作系统的容器。其中,启动对应关系可以包括启动配置参数和待启动容器的标识之间的对应关系。
示例1,启动对应关系可以包括启动配置参数为第一标识时对应第二标识,也就是说,启动配置参数为第一标识时,确定第二标识所属容器为待启动容器。
示例2,启动对应关系可以包括启动配置参数为第二标识时对应第二标识,也就是说,启动配置参数为第二标识时,确定第二标识所属容器为待启动容器。
示例3,启动对应关系可以包括启动配置参数为空时对应第一标识,也就是说,启动配置参数为空时,确定第一标识所属容器为待启动容器。
本申请实施例中,启动配置参数为发生目标事件的情况下写入存储介质中的。也就是说,若未发生目标事件,则启动配置参数为空。
示例性的,BMC单元检测到发生目标事件之后,跳转运行第一操作系统的内存文件系统,并将启动配置参数写入计算设备的存储介质中,以便于后续用于确定待启动容器。
本申请实施例中,BMC单元包括易失性存储介质。在确定系统切换类型为容器切换时,BMC单元可以将启动配置参数写入易失性存储介质中。这样,BMC单元运行第一操作系统的内存文件系统时,可以从易失性存储介质中获取启动配置参数,以确定待启动容器。
需要说明的,关于如何确定系统切换类型,将在后续实施例中进行说明,此处暂不细述。例如,可以参见S502中的相关说明。
由于BMC单元跳转运行内存文件系统之后,不会继续跳转运行ROM引导程序,因此,BMC单元不会下电,基于此,将启动配置参数存储在易失性存储介质中,不仅可以保证能够获取到启动配置参数,还可以在BMC单元之后的下电过程中,自动清除易失性存储介质中的启动配置参数,避免启动配置参数长久占用存储空间、影响正常的操作系统启动流程。
示例性的,易失性存储介质可以为BMC单元的内存,这样,有助于提高读写启动配置参数时的速度,进而有助于提高操作系统切换的效率。
本申请实施例中,对启动配置参数如何存储至存储介质不做限制,例如,可以是基于用户的电子设备发送的指令存储的,或者,也可以是BMC单元自动存储的。
本申请实施例中,在将启动配置参数写入存储介质中之后,计算设备可以卸载第一操作系统的容器所在的分区,并卸载第一操作系统的根目录,从而为后续运行待启动容器做准备,如:直接从内存文件系统切换为运行待启动容器。
本申请实施例中,启动配置参数指示了容器标识,BMC单元可以基于启动配置参数指示的容器标识,确定待启动容器。
其中,容器标识包括多种情况,以下,通过情况a至情况b进行说明。
情况a:容器标识为第一容器的标识。
结合上述示例1,BMC单元可以将第一容器的标识(如:第一标识)存储在存储介质中。由于BMC单元仅配置两个系统,这样,BMC单元获取到启动配置参数(即第一标识)之后,便可以确定除第一操作系统之外的另一个操作系统(即第二操作系统)为待启动操作系统,基于此,便可以确定该第二操作系统的容器为待启动容器。
情况b:容器标识为待启动容器的标识。
结合上述示例2,BMC单元可以将待启动容器的标识(如:第二标识)存储在存储介质中。例如,待启动操作系统为第二操作系统时,则可以将第二操作系统的容器的标识(即第二容器的标识)存储在存储介质中。这样,BMC单元获取到启动配置参(即第二标识)之后,便可以直接确定第二标识所属的第二容器为待启动容器。
需要说明的,在计算设备的BMC单元仅配置两个操作系统时,可以基于上述情况a和情况b的方式确定待启动操作系统的容器。在计算设备配置两个以上操作系统时,可以基于上述情况b中的方式确定待启动操作系统的容器。
该实现方式中,通过预先写入存储介质的启动配置参数,确定待启动容器,这样,便不再需要用户指定待启动容器,有助于提高用户的使用体验,以及操作系统切换的便利性和自动化程度。
方式2:基于目标事件,确定待启动容器。
本申请实施例中,目标事件为系统切换请求时,系统切换请求可以包括容器标识。基于此,BMC单元可以确定系统切换请求中的容器标识对应的容器,为待启动容器。
示例性的,如图4中的(a)所示,用户的电子设备上显示第一界面,第一界面包括第一控件,其中,第一控件用于指示系统切换。用户选中第一控件,并点击第一界面上的下一步控件,如图4中的(b)所示,电子设备响应于用户的操作,显示第二界面,第二界面包括第二控件,第二控件用于指示容器。用户在第二界面上选中第二容器(即待启动容器),并点击第二界面上的下一步控件之后,电子设备响应于用户的操作,向计算设备发送系统切换请求,该系统切换请求包括第二容器的标识(即第二标识)。
需要说明的,本申请实施例对第二控件的数量不做限制,以上仅为示例性说明。示例性的,第二控件的数量可以与计算设备配置的操作系统的数量相同,从而实现通过一个第二控件指示一个操作系统的容器。
本申请实施例,目标事件为系统升级完成时,BMC单元可以确定执行升级操作的容器为待启动容器。这样,有助于提高确定待启动容器的准确性和效率。
示例性的,第二操作系统执行了升级操作,基于此,BMC单元可以确定第二操作系统的容器为待启动容器。
该实现方式中,通过目标事件,确定待启动容器,这样,有助于提高最终启动的待启动操作系统为用户想要启动的操作系统,进而有助于提高用户的使用体验。
S303:计算设备从内存文件系统跳转运行第二操作系统的容器,从而运行第二操作系统。
其中,第一操作系统与第二操作系统使用的引导程序和内核相同。
需要说明的,第一操作系统与第二操作系统使用的引导加载程序和内核相同,也可以认为第二操作系统可以兼容第一操作系统的引导加载程序和内核。
在一个示例中,基于上述方式1中的情况a,计算设备的BMC单元获取到第一标识之后,确定非第一标识指示的容器(即第二容器)为待启动容器,基于此,BMC单元从第一操作系统的内存文件系统切换为运行第二容器,从而实现从第一操作系统直接切换至第二操作系统,进而实现运行第二操作系统。
在另一个示例中,基于上述方式1中的情况b,BMC单元获取第二标识之后,确定第二标识指示的容器(如:第二容器)为待启动容器。基于此,BMC单元从第一操作系统的内存文件系统切换为运行第二容器,从而实现从第一操作系统直接切换至第二操作系统,进而实现运行第二操作系统。
本申请实施例中,切换为运行第二容器,可以包括:挂载第二容器所的分区,也即,将第二容器加载到BMC单元的内存中运行。将第二容器的初始目录设置为根目录,也即,设置为第二操作系统的根目录。之后,通过chroot跳转到第二操作系统的根目录,并通过第二容器中的系统守护进程,依次启动第二容器中的多个应用程序。
上述实施例中,计算设备运行第一操作系统的过程中,若检测到目标事件,说明需要切换操作系统,基于此,计算设备从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器,之后,从内存文件系统直接跳转运行第二操作系统的容器。由于待启动操作系统与当前运行的第一操作系统统使用的引导加载程序、内核和内存文件系统相同,因此,计算设备可以从内存文件系统直接跳转运行待启动操作系统的容器,不必重新启动引导加载程序、内核和内存文件系统,从而实现了快速启动待启动操作系统,相对于相关技术中的方式,能够显著缩短操作系统切换消耗的时间,提高操作系统切换的效率,进而提高用户的使用体验。
本申请实施例中,操作系统切换方法还可以包括以下S1至S2。
S1:计算设备检测到发生目标事件的情况下,从第二操作系统的容器跳转运行内存文件系统,并确定第一操作系统的容器为待启动操作系统的容器。
S2:计算设备从内存文件系统跳转运行第一操作系统的容器,以运行第一操作系统。
需要说明的,S1-S2的相关说明,可以参考上述S302-S303的说明,此处不再赘述。
该实施例中,在运行第二操作系统的过程中,若计算设备再次检测到发生目标事件,计算设备可以再次执行操作系统切换操作,以从第二操作系统的容器切换至第一操作系统的容器,从而实现运行第一操作系统。由于可以通过内存文件系统,直接从一个操作系统的容器切换至另一个操作系统的容器,因此,显著提高计算设备运行过程中的操作系统切换效率。
以上实施例,可以认为是提供了一种切换方式的操作系统切换方案。与上述实施例不同的是,本申请实施例还提供另一种操作系统切换方案,该另一种操作系统切换方案可以提供两种不同的切换方式。以下,结合图5和图6对该另一种操作系统切换方案进行示例性说明。
需要说明的,以下,仅对两个方案的不同之处进行详细描述,对于相同之处,不再赘述。
图5是根据一示例性实施例示出的另一种操作系统切换方法的流程图。示例性的,该操作系统切换方法可以包括以下S501-S507。
S501:计算设备加载引导加载程序和内核,从而运行第一操作系统。
需要说明的,S501的相关说明,可以参考上述S301,此处不再赘述。
S502:当计算设备检测到目标事件,计算设备确定系统切换类型是否为容器切换。
若确定结果为是,则执行下述S503-504。若确定结果为否,则执行下述S505-S507。
本申请实施例中,系统切换类型可以包括容器切换或非容器切换。其中,容器切换也可以称为快速切换,非容器切换也可以称为全量切换或全量分区切换。
其中,容器切换用于指示系统切换过程中加载待启动操作系统的容器,换言之,不加载引导加载程序和内核等。示例性的,容器切换的路径为:当前操作系统的容器→当前操作系统的内存文件系统→待启动操作系统的容器。
其中,非容器切换用于指示系统切换过程中运行引导加载程序、内核以及待启动操作系统的容器。示例性的,非容器切换的路径为:当前操作系统的容器→当前操作系统的内存文件系统→ROM引导程序→待启动操作系统的引导加载程序→待启动操作系统的内核→待启动操作系统的内存文件系统→待启动操作系统的容器。
本申请实施例中,S502包括多种情况,以下,通过情况A至情况B进行示例性说明。
情况A:目标事件为系统切换请求。
若目标事件指示容器切换,则确定系统切换类型为容器切换。若目标事件指示非容器切换,则确定系统切换类型为非容器切换。
在一个示例中,系统切换请求指示了切换类型,计算设备的BMC单元可以通过系统切换请求指示的切换类型,确定系统切换类型是否为容器切换。这样,可以按照用户指示的切换类型进行系统切换,有助于提高用户的使用体验。
示例性的,系统切换请求包括切换标识,切换标识指示了切换类型,若切换标识指示了容器切换,确定系统切换类型为容器切换,若切换标识指示了非容器切换,确定系统切换类型为非容器切换。
在另一个示例中,系统切换请求指示了切换类型,BMC单元可以通过系统切换请求指示的切换类型以及多个应用程序的关闭操作是否满足预设条件,确定是否为容器切换。若切换标识指示了容器切换、且满足多个应用程序的关闭操作满足预设条件,则为容器切换,若切换标识指示了非容器切换或多个应用程序的关闭操作不满足预设条件,则为非容器切换。
这样,通过设置合适的预设条件,不仅有助于避免多个应用程序的崩溃而导致当前操作系统崩溃,还有助于避免当前操作系统的应用程序,影响后续启动的操作系统的应用程序的正常运行。
其中,多个应用程序的关闭操作满足预设条件,包括:多个应用程序中的每个应用程序均关闭成功,和/或,多个应用程序的关闭顺序与多个应用程序的启动顺序相反。
通过设置多个应用程序中的每个应用程序均关闭成功,可以避免当前操作系统的应用程序,影响后续启动的操作系统的应用程序的正常运行,而设置多个应用程序的关闭顺序与多个应用程序的启动顺序相反,有助于避免多个应用程序的崩溃而导致当前操作系统崩溃。
示例性的,在多个应用程序按照多个应用程序之间的依赖关系从内到外依次启动的情况下,可以认为多个应用程序按照多个应用程序之间的依赖关系从外到内依次关闭。
示例性的,第一操作系统的容器包括应用程序1、应用程序2和应用程序3。BMC单元的处理器启动第一操作系统的容器中的应用程序时,先启动应用程序1,再启动应用程序2,最后启动应用程序3,也就是说,多个应用程序的启动顺序为:应用程序1→应用程序2→应用程序3。在此基础上,对多个应用程序执行关闭操作的顺序为:应用程序3→应用程序2→应用程序1。
情况B:目标事件为系统升级完成。
在一个示例中,系统升级类型指示了切换类型,计算设备的BMC单元可以通过系统升级类型,确定系统切换类型是否为容器切换。例如,若操作系统升级时仅升级了容器,说明系统升级类型为容器升级,则BMC单元确定系统切换类型为容器切换。若操作系统升级时升级了整个操作系统,即同时升级了操作系统的引导加载程序、内核和容器等,说明系统升级类型为非容器升级,则BMC单元可以确定系统切换类型为非容器切换。
需要说明的,BMC单元可以通过系统日志查看系统升级类型,若系统日志中记录了最近一次操作系统升级时仅升级了容器,也就是说,未升级引导加载程序和内核,则系统升级类型为容器升级。若系统日志中记录了最近一次操作系统升级时同时升级了引导加载程序、内核和内存文件系统,则系统升级类型为非容器升级。
在另一个示例中,在目标事件为系统升级完成时,确定系统切换类型为容器切换。也就是说,无论系统升级类型为容器升级还是非容器升级,都确定系统切换类型为容器切换。
在又一个示例中,在目标事件为系统升级完成时,确定系统切换类型为非容器升级。也就是说,无论系统升级类型为容器升级还是非容器升级,都确定系统切换类型为非容器切换。
在又一个示例中,若系统升级类型为容器升级、且多个应用程序的关闭操作满足预设条件,确定系统切换类型为容器切换。
需要说明的,情况B的其他相关说明,可以参考上述情况A,此处不再赘述。
需要说明的,本申请实施例对S501和S502的执行顺序不做限制,以上仅为示例性说明。
S503:计算设备从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器。
其中,S503中的内存文件系统是计算设备执行S501的步骤时,基于内核拉起的内存文件系统。
S504:计算设备从内存文件系统跳转运行第二操作系统的容器,从而运行第二操作系统。
其中,S504中的内存文件系统是计算设备执行S501的步骤时,基于内核拉起的内存文件系统。
基于S503-S504,若系统切换类型为容器切换,计算设备的BMC单元将启动配置参数写入易失性存储介质后,可以卸载第一操作系统的根目录以及第一操作系统的容器所在的分区。之后,BMC单元从易失性存储介质读取启动配置参数,并基于启动配置参数确定待启动操作系统的容器,然后,从第一操作系统的内存文件系统直接跳转运行待启动操作系统的容器。
需要说明的,S503-S504的相关说明,可以参考上述S302-S303,此处不再赘述。
S505:计算设备从第一操作系统的容器跳转运行内存文件系统,并跳转运行ROM引导程序。
本申请实施例中,若系统切换类型为非容器切换,计算设备的BMC单元从第一操作系统的容器跳转运行第一操作系统的内存文件系统后,继续从第一操作系统的内存文件系统跳转运行ROM引导程序,也即,退回至ROM引导程序。
S506:计算设备基于ROM引导程序,依次运行引导加载程序、内核和内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器。
其中,S506中的内存文件系统是计算设备执行S506的步骤时,基于内核拉起的内存文件系统。
本申请实施例中,ROM引导程序指示了引导加载程序的分区地址,引导加载程序指示了内核的地址,计算设备的BMC单元基于ROM引导程序指示的分区地址,依次运行操作系统的引导加载程序、内核和内存文件系统。
示例1,结合系统架构部分的方式1,ROM引导程序指示了第一操作系统和第二操作系统共用的引导加载程序,基于此,BMC单元运行该共用的引导加载程序,并基于该共用的引导加载程序,运行第一操作系统和第二操作系统共用的内核,之后,基于该共用的内核,生成内存文件系统。
示例2,结合系统架构部分的方式2,ROM引导程序指示的可以是第一操作系统的引导加载程序,或者,也可以是第二操作系统的引导加载程序,本申请实施例对此不做限制。
需要说明的,该示例2的其他相关说明,可以参考上述示例1的说明,此处不再赘述。
本申请实施例中,计算设备的BMC单元确定待启动操作系统的容器的方式,可以参考上述S302中,BMC单元确定待启动操作系统的容器的方式。
以下,仅对两种方式的不同之处进行细述,对于两种方式的相同之处,不再赘述。
本申请实施例中,BMC单元包括非易失存储介质。在确定系统切换类型为非容器切换时,BMC单元可以将启动配置参数写入非易失性存储介质中。这样,BMC单元运行内存文件系统的过程中,可以从非易失性存储介质中获取启动配置参数,以确定待启动操作系统的容器。
本申请实施例中,通过设置容器切换和非容器切换时,将启动配置参数写入不同的存储介质,这样,不同的系统切换方式可以使用不同存储介质中存储的启动配置参数,有助于保证待启动操作系统的准确性。
本申请实施例中,在采用非容器切换时,将启动配置参数存储在非易失存储中,这样,能够避免退回到ROM引导程序时,易失性存储介质中的启动配置参数丢失,进而有助于保证操作系统切换的可靠性。
在一个示例中,非易失性存储介质可以包括存储设备上的裸分区。如:存储设备可以是嵌入式多媒体卡(embedded multi media card,EMMC)、与非型闪存(NANDFLASH)、或非型闪存(NORFLASH)、通用闪存存储器(universal flash storage,UFS)等,计算设备可以将存储设备的部分储存区域划分为裸分区(也可以称为裸设备(raw device)或原始分区),该裸分区可以无文件系统格式。在此基础上,BMC单元可以通过裸设备的固定偏移地址访问裸设备,以获取启动配置参数。
在另一个示例中,非易失性存储介质可以包括可编程逻辑器件上的用户闪存(user flash memory,UFM)。如:可编程逻辑器件可以是复杂可编程逻辑器件(ComplexProgrammable Logic Device,CPLD)、现场可编程逻辑门阵列(Field Programmable GateArray,FPGA)等。可编辑逻辑中包括UFM存储空间,其中,UFM存储空间是指用户可以使用的闪存存储空间。在此基础上,BMC单元可以通过可编程逻辑器件提供的对外访问接口访问UFM存储空间,以获取启动配置参数。
需要说明的,S506的其他相关说明,可以参考上述S302,此处不再赘述。
S507:计算设备从内存文件系统跳转运行第二操作系统的容器,从而运行第二操作系统。
基于S505-S507,若系统切换类型为非容器切换,BMC单元将启动配置参数写入非易失性存储介质后,可以跳转运行ROM引导程序,并基于ROM引导程序指示的分区地址(即引导加载程序的分区地址),依次运行引导加载程序和内核,并在运行内核的过程中,基于内核中的切换配置模块、切换器等生成内存文件系统。在运行内存文件系统的过程中,BMC单元从非易失性存储介质中读取切的配置参数,并基于启动配置参数确定待启动操作系统的容器,然后,从内存文件系统直接跳转运行待启动操作系统的容器。
需要说明的,BMC单元运行引导加载程序和内核,可以是第一操作系统的,或者,也可以是第二操作系统的,本申请实施例对此不做限制。
需要说明的,S507的其他相关说明,可以参考上述S303,此处不再赘述。
上述实施例中,计算设备提供了多种操作系统切换方式,如:容器切换和非容器切换,在需要进行操作系统切换时,若计算设备确定系统切换类型为容器切换,则计算设备通过第一操作系统内存文件系统,直接切换至待启动操作系统的容器。若计算设备确定系统切换类型为非容器切换,则计算设备退出第一操作系统,并重新启动待启动操作系统的引导加载程序、内核以及内存文件系统,之后,再启动待启动操作系统的容器。这样,不仅有助于提高操作系统切换方式的多样性,从而实现根据实际场景选择合适的操作系统切换方式进行操作系统切换,还有助于提高待启动操作系统启动后的稳定性和可靠性,进而有助于提高用户的使用体验。
如图6所示,为本申请实施例提供的一种操作系统切换的示意图。以下,结合图6,对本申请实施例提供的操作系统切换过程进行示例性说明。
示例性的,BMC单元运行第一操作系统的容器(也可以称为原容器)时,用户触发目标事件,如:触发系统升级或系统切换,BMC单元检测到目标事件之后,对第一操作系统的容器中的多个应用程序执行关闭操作,以关闭第一操作系统的容器中的多个应用程序。之后,BMC单元确定系统切换类型是否为容器切换,若为系统切换类型为容器切换,则BMC单元执行容器启动流程,若系统切换类型不是容器切换,则BMC单元执行非容器切换流程,如:执行全量启动流程。
若BMC单元执行容器启动流程,BMC单元从第一操作系统的容器跳转运行第一操作系统的内存文件系统后,不跳转运行ROM引导程序,而是停留在运行第一操作系统的内存文件系统的阶段。在运行第一操作系统的内存文件系统的过程中,BMC单元将启动配置参数写入易失性存储介质,并卸载第一操作系统的根目录以及第一操作系统的容器所在的分区。
若执行全量启动流程,BMC单元从第一操作系统的容器跳转运行第一操作系统的内存文件系统,在运行第一操作系统的内存文件系统的过程中,将启动配置参数写入非易失性存储介质,之后,继续向ROM跳转,以退回至ROM引导程序,然后,基于ROM引导程序指示的分区地址,运行引导记载程序、内核以及内存文件系统。
之后,BMC单元获取启动配置参数,并基于启动配置参数,确定待启动操作系统的容器。示例性的,若启动配置参数为容器1的标识或空(NULL),BMC单元运行容器1(即待启动操作系统的容器),如:挂载容器1对应的分区,并挂载容器1的初始目录为根目录。若启动配置参数为容器2的标识,BMC单元运行容器2(即待启动操作系统的容器),如:挂载容器2对应的分区,并挂载容器2的初始目录为根目录。
之后,BMC单元通过chroot跳转根目录环境,如:启动配置参数指示了容器2的标识,则BMC单元跳转到容器2的初始目录对应的根目录,并通过容器2中的系统守护进程启动容器2中的多个应用程序。
上述实施例可以认为是BMC单元运行第一操作系统的过程中,切换操作系统的方案。以下,为本申请实施例提供的另一种方案,该另一种方案为BMC单元上电时启动操作系统的方案。
需要说明的,以下,仅对两种方案的不同之处进行细述,对于相同之处不再赘述。
图7是根据一示例性实施例示出的一种操作系统启动方法的流程图。示例性的,该操作系统启动方法可以包括以下S701-S703。
S701:在计算设备上电的情况下,计算设备运行ROM引导程序。
本申请实施例中,计算设备的BMC单元上电时,例如,可以是BMC单元接通交流电(alternating current,AC)时,BMC单元运行只读存储器中的ROM引导程序。
S702:计算设备基于ROM引导程序,依次运行引导加载程序、内核以及内存文件系统并确定第一操作系统的容器为待启动操作系统的容器。
需要说明的,S702的相关说明,可以参考上述S506,此处不再赘述。
本申请实施例中,启动配置参数是在发生了目标事件的情况下写入存储介质中的,因此,在计算设备首次上电时,或者,断电重启时,启动配置参数未被写入存储介质中,基于此,BMC单元获取到的启动配置参数为空(NULL)。
在此基础上,计算设备的BMC单元基于启动配置参数的内容为空以及启动对应关系,确定待启动操作系统的容器。如:启动对应关系包括启动配置参数为空对应第一标识,BMC单元确定第一标识所属容器为待启动操作系统的容器。
示例性性的,计算设备的BMC单元运行内存文件系统的过程中,可以从非易失存储介质中获取启动配置参数,这样,上电时操作系统启动和操作系统切换时,获取启动配置参数的路径相同,有助于减少获取启动配置参数的路径,进而有助于简化操作系统启动的程序。
需要说明的,S702的相关说明,可以参考上述S302,此处不再赘述。
S703:计算设备从内存文件系统跳转运行第一操作系统的容器,从而运行第一操作系统。
需要说明的,S703的其他相关说明,可以参考上述S303,此处不再赘述。
本申请实施例中,计算设备上电时,基于ROM引导程序,在依次运行了引导加载程序、内核以及内存文件系统后,确定待启动操作系统的容器,这样,不仅有助于保证计算设备上电时的系统启动流程与系统切换流程的统一性,还能够保证非容器切换对应的切换流程不会影响计算设备上电时的系统启动流程,从而有助于提高系统切换流程的适用范围,使得操作系统切换流程既适用于上电时的系统启动,也适用于操作系统切换时的系统启动。
如图8所示,为本申请实施例提供的一种操作系统启动流程的示意图。以下,结合图8,对本申请实施例中的计算设备的操作系统启动过程进行示例性说明。
示例性的,该系统启动过程可以应用系统初始化场景,也即,BMC单元上电时的系统启动场景。BMC单元AC上电后,基于ROM中的ROM引导程序指示的分区地址,依次运行引导加载程序、内核和内存文件系统,并挂载不同容器公用的可读写文件系统(read writefile system,rwfs)。
之后,BMC单元获取启动配置参数,并根据启动配置参数,确定上电时启动的待启动操作系统的容器。示例性的,若启动配置参数为容器1的标识或为空(NULL),BMC单元运行容器1,如:挂载容器1对应的分区,并挂载容器1的初始目录为根目录。若启动配置参数为容器2的标识,BMC单元运行容器2,如:挂载容器2对应的分区,并挂载容器2的初始目录为根目录。
之后,BMC单元通过chroot跳转根目录环境,例如,启动配置参数为空,则BMC单元跳转到容器1的初始目录对应的根目录,并通过容器1中的系统守护进程启动容器1中的多个应用程序。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,操作系统切换方法包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法,示例性的对操作系统切换方法进行功能模块的划分,例如,操作系统切换方法可以包括对应各个功能划分的各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
示例性的,图9示出了上述实施例中所涉及的操作系统切换装置(记为操作系统切换装置900)的一种可能的结构示意图,该操作系统切换装置900所执行的动作通过计算设备实现或通过计算设备执行相应的软件实现,计算设备包括第一操作系统和第二操作系统,第一操作系统包括第一操作系统的容器,第二操作系统包括第二操作系统的容器,第一操作系统和第二操作系统使用的引导加载程序、内核和内存文件系统相同。例如,操作系统切换装置900可以包括运行模块901、跳转模块902和切换模块903。运行模块901,用于加载引导加载程序和内核,从而运行第一操作系统的容器。例如,图3所示的S301。跳转模块902,用于当检测到发生目标事件,从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器。例如,图3所示的S302。切换模块903,用于从内存文件系统跳转运行第二操作系统的容器,从而运行第二操作系统。例如,图3所示的S303。
可选地,跳转模块902还用于:当检测到发生目标事件,从第二操作系统的容器跳转运行内存文件系统,并确定第一操作系统的容器为待启动操作系统的容器;切换模块903还用于:从内存文件系统跳转运行第一操作系统的容器,以运行第一操作系统。
可选地,跳转模块902具体用于:若目标事件指示了容器切换,从第一操作系统的容器跳转运行内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器。
可选地,跳转模块902还用于:若目标事件指示了为非容器切换,从第一操作系统的容器跳转运行内存文件系统,并跳转运行计算设备的只读存储器ROM引导程序;非容器切换用于指示系统切换过程中加载引导加载程序和内核;基于ROM引导程序指示引导加载程序,加载引导加载程序、内核和内存文件系统,并确定第二操作系统的容器为待启动操作系统的容器;切换模块903还用于:从内存文件系统跳转运行第二操作系统的容器,以运行第二操作系统。
可选地,跳转模块902具体用于:从计算设备的存储介质中获取启动配置参数;启动配置参数用于指示待启动操作系统的容器;基于启动配置参数,确定第二操作系统的容器为待启动操作系统的容器。
可选地,运行模块901具体用于:在计算设备上电的情况下,基于计算设备的ROM引导程序指示所述引导加载程序,加载引导加载程序、内核和内存文件系统,并确定第一操作系统的容器为待启动操作系统的容器;从内存文件系统跳转运行第一操作系统的容器,以运行第一操作系统。
可选地,检测到发生目标事件,包括:检测到系统切换请求,或者,检测到系统升级完成。
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种操作系统切换装置900的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
本申请实施例还提供了一种计算设备,该计算设备包括处理器和存储器,处理器与存储器连接,存储器存储有计算机执行指令,处理器执行该计算机执行指令时实现上述实施例中的操作系统切换方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当该计算机程序在计算设备上运行时,使得该计算设备执行上文提供的任一种计算设备所执行的方法。
关于上述提供的任一种计算机可读存储介质中相关内容的解释及有益效果的描述,均可以参考上述对应的实施例,此处不再赘述。
本申请实施例还提供了一种芯片。该芯片中集成了用于实现上述计算设备的功能的控制电路和一个或者多个端口。可选的,该芯片支持的功能可以参考上文,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可通过程序来指令相关的硬件完成。所述的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可以是只读存储器,随机接入存储器等。上述处理单元或处理器可以是中央处理器,通用处理器、特定集成电路(application specific integrated circuit,ASIC)、微处理器(digital signal processor,DSP),现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
本申请实施例还提供了一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得计算机执行上述实施例中的任意一种方法。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。应注意,本申请实施例提供的上述用于存储计算机指令或者计算机程序的器件,例如但不限于,上述存储器、计算机可读存储介质和通信芯片等,均具有非易失性(non-transitory)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种操作系统切换方法,其特征在于,用于计算设备,所述计算设备包括第一操作系统和第二操作系统,所述第一操作系统包括第一操作系统的容器,所述第二操作系统包括第二操作系统的容器;所述第一操作系统和所述第二操作系统使用的引导加载程序、内核和内存文件系统相同;所述方法包括:
加载所述引导加载程序和所述内核,从而运行所述第一操作系统的容器;
当检测到发生目标事件,从所述第一操作系统的容器跳转运行所述内存文件系统,并确定所述第二操作系统的容器为待启动操作系统的容器;
从所述内存文件系统跳转运行所述第二操作系统的容器,从而运行所述第二操作系统。
2.根据权利要求1所述的方法,其特征在于,所述从所述第一操作系统的容器跳转运行所述内存文件系统,并确定所述第二操作系统的容器为待启动操作系统的容器,包括:
若所述目标事件指示容器切换,从所述第一操作系统的容器跳转运行所述内存文件系统,并确定所述第二操作系统的容器为待启动操作系统的容器;所述容器切换用于指示系统切换过程中加载待启动操作系统的容器。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若目标事件指示了为非容器切换,从所述第一操作系统的容器跳转运行所述内存文件系统,并跳转运行所述计算设备的只读存储器ROM引导程序;所述非容器切换用于指示系统切换过程中加载所述引导加载程序、所述内核以及待启动操作系统的容器;
基于所述ROM引导程序指示所述引导加载程序,加载所述引导加载程序、所述内核和所述内存文件系统,并确定所述第二操作系统的容器为待启动操作系统的容器。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述确定所述第二操作系统的容器为待启动操作系统的容器,包括:
从所述计算设备的存储介质中获取启动配置参数;所述启动配置参数用于指示待启动操作系统的容器;
基于所述启动配置参数,确定所述第二操作系统的容器为待启动操作系统的容器。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述加载所述引导加载程序和所述内核,从而运行所述第一操作系统的容器,包括:
在所述计算设备上电的情况下,基于所述计算设备的ROM引导程序指示所述引导加载程序,加载所述引导加载程序、所述内核和所述内存文件系统,并确定所述第一操作系统的容器为待启动操作系统的容器;
从所述内存文件系统跳转运行所述第一操作系统的容器,从而运行所述第一操作系统。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述检测到发生目标事件,包括:
检测到系统切换请求。
7.根据权利要求1-5中任一项所述的方法,其特征在于,所述检测到发生目标事件,包括:
检测到系统升级完成。
8.根据权利要求1-7中任一项所述的方法,其特征在于,
所述第一操作系统和所述第二操作系统使用的引导加载程序和内核相同,包括:
所述第一操作系统和所述第二操作系统共用同一个引导加载程序和内核;或者,所述第一操作系统的引导加载程序的代码与所述第二操作系统的引导加载程序的代码相同,所述第一操作系统的内核的代码与所述第二操作系统的内核的代码相同。
9.一种芯片,其特征在于,包括:处理器和存储器,所述处理器与存储器连接;所述存储器用于存储计算机执行指令,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述芯片实现如权利要求1-8中任一项所述的方法。
10.一种计算设备,其特征在于,包括:供电电源和如权利要求9所示的芯片,所述供电电源用于为所述芯片供电,所述芯片用于实现如权利要求1-8中任一项所述的方法。
CN202311871774.7A 2023-12-29 操作系统切换方法、芯片及设备 Pending CN118113355A (zh)

Publications (1)

Publication Number Publication Date
CN118113355A true CN118113355A (zh) 2024-05-31

Family

ID=

Similar Documents

Publication Publication Date Title
CN109478135B (zh) 计算机系统和用于重新引导计算机系统的方法
CN105745617B (zh) 用于预启动固件更新的选择性功率管理
US7363484B2 (en) Apparatus and method for selectively mapping proper boot image to processors of heterogeneous computer systems
JP6258940B2 (ja) Bpramを使用したソフトウェア・アプリケーションのレイアウトおよび実行
KR102136906B1 (ko) Bpram을 이용한 운영체제의 레이아웃 및 실행
JP5701259B2 (ja) ホストからのメモリ装置のブーティング
CN109960523B (zh) 一种嵌入式设备的固件升级方法及装置
CN104978231A (zh) 基于内部存储分区的多系统及其加载和切换方法
US9715267B2 (en) Method for switching operating systems and electronic apparatus
WO2022105595A1 (zh) 嵌入式设备的系统升级方法、装置及嵌入式设备
CN107533441B (zh) 创建操作系统卷
US9235426B2 (en) Multicore processor system, computer product, and notification method for updating operating system
US20180095693A1 (en) Information processing apparatus, information processing system, and method for controlling information processing apparatus
CN109413497B (zh) 一种智能电视机及其系统启动方法
US11861349B2 (en) Modular firmware updates in an information handling system
US20200364040A1 (en) System and Method for Restoring a Previously Functional Firmware Image on a Non-Volatile Dual Inline Memory Module
CN118113355A (zh) 操作系统切换方法、芯片及设备
CN117873580A (zh) 操作系统切换方法、芯片及设备
CN117873579A (zh) 操作系统跳转方法、芯片及设备
CN117950733A (zh) 计算设备、操作系统启动方法、运行方法及装置
US20230350755A1 (en) Coordinated operating system rollback
CN117891480A (zh) 操作系统升级方法、芯片及设备
US20240152344A1 (en) Service driven firmware upgrade methodology in bmc
EP2645245B1 (en) Information processing apparatus, apparatus mangement method, and apparatus management program
CN117609009A (zh) 测试方法、服务器、管理设备及测试系统

Legal Events

Date Code Title Description
PB01 Publication