CN117950733A - 计算设备、操作系统启动方法、运行方法及装置 - Google Patents

计算设备、操作系统启动方法、运行方法及装置 Download PDF

Info

Publication number
CN117950733A
CN117950733A CN202311871790.6A CN202311871790A CN117950733A CN 117950733 A CN117950733 A CN 117950733A CN 202311871790 A CN202311871790 A CN 202311871790A CN 117950733 A CN117950733 A CN 117950733A
Authority
CN
China
Prior art keywords
operating system
container
processor
kernel
computing device
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
CN202311871790.6A
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
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202311871790.6A priority Critical patent/CN117950733A/zh
Publication of CN117950733A publication Critical patent/CN117950733A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供了一种计算设备、操作系统启动方法、运行方法及装置,涉及计算机技术领域。该计算设备的存储器中存储有多个操作系统,如:第一操作系统和第二操作系统,第一操作系统和第二操作系统具有共同的引导加载程序和内核,也就是说,第一操作系统和第二操作系统共用同一个引导加载程序和内核,从而实现了减少多个操作系统的引导程序和内核,如:M个操作系统时,至少可以减少M‑1个引导加载程序和M‑1个内核,因此,该计算设备的多个操作系统的架构,不仅能够简化多个操作系统的架构,还能够显著减少多个操作系统占用的存储空间。

Description

计算设备、操作系统启动方法、运行方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种计算设备、操作系统启动方法、运行方法及装置。
背景技术
相关技术中,计算设备配置多个操作系统时,通常是每个操作系统均包括引导加载程序、内核、根文件系统以及多个应用程序等。其中,每个操作系统的引导加载程序、内核、根文件系统以及多个应用程序分别存储在存储器的不同分区中。
由于相关技术中的多操作系统的架构形式比较单一,因此,亟需设计一种新的多操作系统的架构。
发明内容
本申请实施例提供一种计算设备、操作系统启动方法、运行方法及装置,不仅简化了多操作系统的架构,还减少了多操作系统占用的存储空间。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种计算设备,计算设备包括存储器和处理器,存储器用于存储第一操作系统和第二操作系统,第一操作系统包括第一操作系统的容器,第二操作系统包括第二操作系统的容器;第一操作系统和第二操作系统具有共同的引导加载程序和内核;处理器用于运行引导加载程序和内核,从而运行第一操作系统的容器;处理器还用于当检测到目标事件,从第一操作系统的容器切换到第二操作系统的容器。
该方案中,计算设备的存储器中存储有多个操作系统,如:第一操作系统和第二操作系统,第一操作系统和第二操作系统具有共同的引导加载程序和内核,也就是说,第一操作系统和第二操作系统共用同一个引导加载程序和内核,从而实现了减少多个操作系统的引导程序和内核,如:M个操作系统时,至少可以减少M-1个引导加载程序和M-1个内核,因此,该计算设备的多个操作系统的架构,相对于相关技术中的架构形式,不仅能够简化多个操作系统的架构,还能够显著减少多个操作系统占用的存储空间。
此外,由于第一操作系统和第二操作系统具有共同的引导加载程序和内核,因此,若运行第一操作系统的过程中,需要启动第二操作系统,则处理器无需重复运行引导加载程序和内核,而是可以直接运行第二操作系统的容器,这样,能够显著缩短重新启动操作系统所消耗的时间,从而有助于提高操作系统启动效率,进而有助于提高用户的使用体验。
在一种可能的实现方式中,处理器还用于在运行内核的过程中,生成内存文件系统,内存文件系统用于提供操作系统切换功能、操作系统升级功能、跳转功能;第一操作系统和第二操作系统具有共同的内存文件系统。
由于内存文件系统是运行操作系统过程中用于管理文件的系统,因此,在操作系统的整个生命周期都是处于运行状态的,也即,只要操作系统不重启或关闭,内存文件系统便一直存在。基于此,通过设置内存文件系统可以提供操作系统切换功能、操作系统升级功能、跳转功能、切换配置功能、跳转功能等,从而实现运行第一操作系统的过程中,都可以提供操作系统切换功能、操作系统升级功能、跳转功能、切换配置功能、跳转功能等,这样,有助于提高操作系统的功能多样性,进而有助于提高用户的使用体验。
另一种可能的实现方式中,处理器还用于当检测到目标事件,从第一操作系统的容器切换到第二操作系统的容器,包括:处理器还用于当检测到的目标事件指示切换操作系统,从第一操作系统的容器跳转到内存文件系统;处理器还用于确定切换到第二操作系统的容器;处理器还用于从内存文件系统切换到第二操作系统的容器。
该实现方式中,由于第一操作系统和第二操作系统共用相同的内存文件系统,且内存文件系统提供了操作系统切换功能,因此,处理器通过内存文件系统从第一操作系统的容器跳转到第二操作系统的容器,一方面,不必为第二操作系统重新启动内存文件系统,另一方面,充分利用了内存文件系统提供的操作系统切换功能。
另一种可能的实现方式中,处理器用于从内存文件系统切换到第二操作系统的容器,包括:处理器用于在满足第一预设条件的情况下,从内存文件系统切换到第二操作系统的容器。
该实现方式中,通过设置满足第一预设条件时,才直接切换到第二操作系统的容器,这样,通过设置合适的第一预设条件,有助于提高切换到第二操作系统的容器后,第二操作系统的运行稳定性和可靠性。
另一种可能的实现方式中,处理器还用于在不满足第一预设条件的情况下,重新运行引导加载程序和内核,从而运行第二操作系统的容器。
该实现方式中,通过设置不满足第一预设条件时,重新运行引导加载程序和内核,以运行第二操作系统的容器,这样,通过设置合适的第一预设条件,不仅可以为用户提供多种不同的操作系统切换方式,还有助于提高切换到第二操作系统的容器后,第二操作系统的运行稳定性和可靠性。
另一种可能的实现方式中,处理器还用于确定切换到第二操作系统的容器,包括:处理器还用于从计算设备的存储介质中获取启动配置参数;启动配置参数用于指示待切换操作系统的容器;处理器还用于根据启动配置参数确定切换到第二操作系统的容器。
该实现方式中,处理器通过存储介质中的启动配置参数,确定待切换操作系统的容器,不仅有助于提高确定待切换操作系统的容器的便利性,还减轻了用户的工作量,不必由用户指定,进而有助于提高用户的使用体验。
另一种可能的实现方式中,处理器还用于当检测到目标事件,根据第一操作系统的容器的标识,确定启动配置参数;处理器还用于将启动配置参数写入计算设备的存储介质中。
该实现方式中,处理器在检测到目标事件时,将启动配置参数写入存储介质,这样,后续在需要确定待切换操作系统的容器时,处理器便可以直接从存储介质中读取启动配置参数,有助于提高确定待切换操作系统的容器的便利性。
另一种可能的实现方式中,存储介质包括易失性存储介质;处理器还用于将启动配置参数写入计算设备的存储介质中,包括:处理器还用于在满足第一预设条件的情况下,将启动配置参数写入易失性存储介质。
该实现方式中,满足第一预设条件时,计算设备跳转到内存文件系统后,不会继续跳转运行ROM引导程序,因此,计算设备不会下电,基于此,将启动配置参数存储在易失性存储介质中,不仅可以保证能够获取到启动配置参数,还可以在计算设备之后的下电过程中,自动清除启动配置参数,避免启动配置参数长久占用存储空间,影响正常的系统启动流程。
另一种可能的实现方式中,存储介质还包括非易失性存储介质;处理器还用于将启动配置参数写入计算设备的存储介质中,包括:处理器还用于在不满足第一预设条件的情况下,将启动配置参数写入非易失性存储介质。
该实施例中,在不满足第一预设条件时,将启动配置参数存储在非易失性存储介质中,这样,有助于避免跳转运行ROM引导程序时,启动配置参数丢失,进而有助于保证操作系统切换流程的顺利执行。
另一种可能的实现方式中,非易失性存储介质包括计算设备的裸分区或用户闪存UFM。这样,有助于充分利用计算设备上不同存储介质上的存储空间。
另一种可能的实现方式中,处理器还用于当检测到目标事件,根据第一操作系统的容器的标识,确定启动配置参数,包括:处理器还用于当检测到目标事件,根据第一操作系统的容器的标识,确定第一操作系统的容器的标识为启动配置参数。这样,有助于提高启动配置参数的写入效率。
另一种可能的实现方式中,处理器还用于当检测到目标事件,根据第一操作系统的容器的标识,确定启动配置参数,包括:处理器还用于当检测到目标事件,根据第一操作系统的容器的标识,确定第二操作系统的容器的标识为启动配置参数。这样,有助于提高基于启动配置参数进行操作系统切换时的效率。
另一种可能的实现方式中,满足第一预设条件,包括:目标事件指示了容器切换,和/或,第一操作系统的容器中的多个应用程序的关闭操作满足目标条件;容器切换用于指示系统切换过程中切换至待切换操作系统的容器;
该实现方式中,通过设置多个应用程序的关闭操作满足目标条件时,满足第一预设条件,这样,通过设置合适的目标条件,不仅有助于提高当前运行的第一操作系统的稳定性,避免由于多个应用程序崩溃而导致第一操作系统崩溃,还有助于避免第一操作系统的多个应用程序由于关闭不当影响后续启动的第二操作系统的多个应用程序的稳定性和可靠性。
此外,通过设置目标事件指示了容器切换时,才确定满足预设条件,从而实现根据用户指定系统切换类型,确定系统跳转方式,这样,有助于提高用户的使用体验。
另一种可能的实现方式中,多个应用程序的关闭操作满足目标条件,包括:多个应用程序关闭成功,和/或,多个应用程序的关闭顺序与多个应用程序的启动顺序相反。
这样,不仅有助于避免多个应用程序的崩溃而导致第一操作系统崩溃,还有助于避免第一操作系统的多个应用程序,影响后续启动的第二操作系统的多个应用程序的正常运行。
另一种可能的实现方式中,计算设备还用于当前检测到目标事件的情况下,重新运行引导加载程序和内核,从而运行第二操作系统的容器。这样,能够重新启动完成的操作系统,从而有助于保证操作系统启动流程的完整性,以及操作系统重新启动后的稳定性和可靠性。另一种可能的实现方式中,处理器用于运行引导加载程序和内核,包括:处理器用于在处理器上电的情况下,基于计算设备的ROM引导程序指示引导加载程序,运行引导加载程序和内核,并生成内存文件系统;处理器还用于确定启动第一操作系统的容器,以及从内存文件系统切换到第一操作系统的容器。
该实现方式中,处理器上电时启动操作系统的流程,与切换操作系统时,退回ROM引导程序时的系统切换流程相同,这样,有助于简化启动操作的程序。
另一种可能的实现方式中,处理器还用于当检测到的目标事件指示升级操作系统,确定待升级操作系统的容器;处理器还用于对待升级操作系统的容器执行升级操作、且不对待升级操作系统的引导加载程序和/或内核执行升级操作。
该实现方式中,由于不再对待升级操作系统的引导加载程序和/或内核执行升级操作,因此,减少了执行升级操作的分区数量,从而缩短了系统升级所消耗的时间,提高了系统升级的效率,进而提高了用户的使用体验。
另一种可能的实现方式中,处理器还用于当检测到的目标事件指示升级操作系统,确定待升级操作系统的容器,包括:处理器还用于当检测到的目标事件指示升级操作系统,获取根目录路径;根目录路径用于指示当前处于运行状态的容器,根目录路径指示了第一操作系统的容器;处理器还用于根据根目录路径指示了第一操作系统的容器,确定第二操作系统的容器为待升级操作系统的容器。
该实现方式中,在进行系统升级时,处理器根据根目录路径,确定待升级操作系统的容器,这样,不仅有助于提高确定待启动操作系统的容器的便利性,还减轻了用户的工作量,不必再由用户指定待启动操作系统的容器,进而有助于提高用户的使用体验。
另一种可能的实现方式中,处理器还用于当检测到的目标事件指示升级操作系统,确定待升级操作系统的容器,包括:处理器还用于当检测到的目标事件指示升级操作系统,获取根目录路径;根目录路径用于指示当前处于运行状态的容器,根目录路径指示了第一操作系统的容器;处理器还用于根据根目录路径指示了第一操作系统的容器,确定第一操作系统的容器为待升级操作系统的容器。
另一种可能的实现方式中,处理器还用于当检测到的目标事件指示升级操作系统,确定待升级操作系统的容器,包括:处理器还用于当检测到的目标事件指示升级操作系统,根据目标事件指示的容器标识,确定待升级操作系统的容器。
该实现方式中,在进行系统升级时,根据目标事件指示的容器标识,确定待升级操作系统的容器,这样,不仅提高确定待升级操作系统的容器的方式多样性,还有助于提高待升级操作系统的容器与目标事件的关联性,从而有助于确定的待升级操作系统的容器的准确性。
另一种可能的实现方式中,处理器还用于当检测到的目标事件指示升级操作系统,确定待升级操作系统的容器,包括:处理器还用于当检测到的目标事件指示升级操作系统,在满足第二预设条件的情况下,确定待升级操作系统的容器。
该实现方式中,通过设置在满足第二预设条件的情况下,才确定待升级操作系统的容器,以便于仅升级操作系统的容器,这样,通过设置合适的第二预设条件,有助于仅升级容器后,升级后的操作系统的稳定性和可靠性。
另一种可能的实现方式中,处理器还用于当检测到的目标事件指示升级操作系统,在不满足第二预设条件的情况下,确定待升级操作系统;处理器还用于对待升级操作系统的引导加载程序、内核和容器执行升级操作。
该实现方式中,通过设置在不满足第二预设条件时,确定待升级操作系统,并对完整的操作系统进行升级,也即,对引导加载程序、内核和容器进行升级,一方面,可以为用户提供多种不同的系统升级方式,另一方面,通过设置合适的第二预设条件,有助于提高升级后的操作系统的稳定性和可靠性。
另一种可能的实现方式中,满足第二预设条件,包括:目标事件指示了容器升级。
该实现方式中,通过设置目标事件指示容器升级时,才仅升级操作系统的容器,这样,在目标事件为系统升级请求时。有助于根据用户指示的系统升级类型,对操作系统进行升级,从而有助于提高用户的使用体验。
另一种可能的实现方式中,满足第二预设条件,包括:待升级操作系统的版本高于或等于待升级操作系统的升级包的兼容版本。
该实现方式中,通过设置待升级操作系统的版本高于或等于待升级操作系统的升级包的兼容版本时,满足第二预设条件,也即,仅升级操作系统的容器,这样,有助于保证升级后的容器可以与未升级的引导加载程序和内核兼容,进而有助于提高升级后操作系统的稳定性和可靠性。
另一种可能的实现方式中,满足第二预设条件,包括:目标事件指示了容器升级,和/或,待升级操作系统的版本高于或等于待升级操作系统的升级包的兼容版本。
第二方面,提供了一种操作系统运行方法,该方法包括:显示操作系统选择界面,操作系统选择界面用于指示选择启动第一操作系统的容器或第二操作系统的容器;第一操作系统和第二操作系统具有共同的引导加载程序和内核;当接收到针对于操作系统选择界面的第一用户操作,确定运行第一操作系统的容器;当接收到针对于操作系统选择界面的第二用户操作,确定运行第二操作系统的容器。
该方案中,用户使用的终端设备可以显示操作系统选择界面,该界面可以用于指示选择启动第一操作系统的容器或第二操作系统的容器,当用户需要重新启动操作系统时,可以对该界面执行操作,终端设备接收到用户执行的操作后,若是第一用户操作(即用户选中第一操作系统的容器),则终端设备确定运行第一操作系统的容器,若是第二用户操作,则终端设备确定运行第二操作系统的容器。由于终端设备可以根据用户执行的不同操作,确定执行不同操作系统的容器,从而实现了可以由用户确定待启动操作系统的容器,不仅有助于提高用户的使用体验,还可以由用户根据实际场景的不同需求,选择运行不同操作系统的容器。
第三方面,提供了一种操作系统启动方法,用于计算设备,计算设备包括存储器和处理器,存储器用于存储第一操作系统和第二操作系统,第一操作系统包括第一操作系统的容器,第二操作系统包括第二操作系统的容器;第一操作系统和第二操作系统具有共同的引导加载程序和内核;该方法包括:处理器用于运行引导加载程序和内核,从而运行第一操作系统的容器;处理器还用于当检测到目标事件,从第一操作系统的容器切换到第二操作系统的容器。
该方案中,处理器运行存储器中存储的引导加载程序和内核后,运行第一操作系统的容器,从而实现运行第一操作系统。在此基础上,当处理器检测到目标事件,处理器直接从第一操作系统的容器切换到第二操作系统的容器,以运行第二操作系统的容器,从而实现运行第二操作系统。由于第一操作系统和第二操作系统具有共同的引导加载程序和内核,因此,若运行第一操作系统的过程中,需要启动第二操作系统,则处理器无需重复运行引导加载程序和内核,而是可以直接运行第二操作系统的容器,这样,能够显著缩短重新启动操作系统所消耗的时间,从而有助于提高操作系统启动效率,进而有助于提高用户的使用体验。此外,第二操作系统和第二操作系统共用相同的引导加载程序和内核,还有简化操作系统的架构,减少操作系统占用的存储空间。
需要说明的,在第三方面中,处理器还可以用于执行上述第一方面提供的任意一种可能的实现方式。
第四方面,提供了一种操作系统启动装置,该装置包括用于执行第一方面提供的任意一种方法的功能单元,各个功能单元所执行的动作可以通过计算设备实现或通过计算设备执行相应的软件实现。其中,计算设备包括第一操作系统和第二操作系统,第一操作系统包括第一操作系统的容器,第二操作系统包括第二操作系统的容器;第一操作系统和所述第二操作系统具有共同的引导加载程序和所述内核。例如,操作系统启动装置可以运行模块和切换模块。运行模块,用于运行引导加载程序和内核,从而运行第一操作系统的容器;切换模块,用于当检测到目标事件,从第一操作系统的容器切换到第二操作系统的容器。
第五方面,提供了一种芯片,包括:处理器和存储器,处理器和存储器连接;存储器用于存储第一方面中的引导加载程序、内核、第一操作系统的容器和第二操作系统的容器,处理器用于运行存储器存储的引导加载程序、内核、第一操作系统的容器/第二操作系统的容器。
第六方面,提供了一种芯片,芯片包括:处理器和接口电路;接口电路,用于接收上述第一方面中的引导加载程序、内核、第一操作系统的容器,或者,接收上述第一方面中的第二操作系统的容器并传输至处理器;处理器,用于运行接口电路接收到的引导加载程序、内核、第一操作系统的容器,或者,运行接口电路接收到的第二操作系统的容器。
第七方面,提供了一种计算设备,包括:供电电源和上述第五方面至第六方面中任意一个方面提供的芯片,供电电源用于为芯片供电。
第八方面,提供了一种计算设备,包括:包括存储器和处理器,存储器用于存储第一操作系统和第二操作系统,第一操作系统包括第一操作系统的容器,第二操作系统包括第二操作系统的容器;第一操作系统和第二操作系统具有共同的引导加载程序和内核。
第九方面,提供了一种计算机可读存储介质,存储有上述第一方面提供中的引导加载程序、内核、第一操作系统的容器和第二操作系统的容器。计算设备可以运行引导加载程序、内核、第一操作系统的容器时,以运行第一操作系统,计算设备还可以由运行第一操作系统的容器切换为运行第二操作系统的容器时,以运行第一操作系统。
第十方面,提供了一种计算机程序产品,包括:上述第一方面提供中的引导加载程序、内核、第一操作系统的容器和第二操作系统的容器。计算设备可以运行引导加载程序、内核、第一操作系统的容器时,以运行第一操作系统,计算设备还可以由运行第一操作系统的容器切换为运行第二操作系统的容器时,以运行第一操作系统。
第十一方面,提供了一种操作系统,操作系统包括引导加载程序、内核、第一操作系统的容器和第二操作系统的容器;第一操作系统和第二操作系统具有共同的引导加载程序和内核;当引导加载程序和内核用于引导运行第一操作系统的容器,若检测到目标事件,从第一操作系统的容器切换到第二操作系统的容器;当引导加载程序和内核用于引导运行第二操作系统的容器,若检测到目标事件,从第二操作系统的容器切换到第一操作系统的容器。
其中,第三方面至第十一方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种计算设备的示意图;
图2为本申请实施例提供的一种多个操作系统的架构图;
图3为本申请实施例提供的一种操作系统启动后的层级示意图;
图4为本申请实施例提供的一种文件系统的示意图;
图5为本申请实施例提供的一种第一界面及第二界面的示意图;
图6为本申请实施例提供的一种存储介质的示意图;
图7为本申请实施例提供的一种关闭应用程序的示意图;
图8为本申请实施例提供的一种操作系统启动过程的示意图;
图9为本申请实施例提供的一种操作系统切换的原理图;
图10为本申请实施例提供的一种操作系统切换过程的示意图;
图11为本申请实施例提供的另一种文件系统的示意图;
图12为本申请实施例提供的一种第三界面的示意图;
图13为本申请实施例提供的一种操作系统升级的原理图;
图14为本申请实施例提供的操作升级路径的示意图;
图15为本申请实施例提供的一种第三界面的示意图;
图16为本申请实施例提供的一种操作系统升级过程的示意图;
图17为本申请实施例提供的一种操作系统启动方法的流程图;
图18为本申请实施例提供的一种操作系统运行方法的流程图;
图19为本申请实施例提供的一种操作系统选择界面的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
其中,在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,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):是用于启动应用程序、并对各应用程序的启动前后依赖关系进行约束的进程。
应用程序:也可以称为服务,用于实现相对独立的功能,不同应用程序之间可以通过进程间的通信方式进行通信。
以下,对本申请实施例的应用场景进行示例性介绍。
相关技术中,计算设备配置多个操作系统时,通常是每个操作系统均包括引导加载程序、内核、根文件系统以及多个应用程序等。其中,每个操作系统的引导加载程序、内核、根文件系统以及多个应用程序分别存储在存储器的不同分区中。
由于相关技术中多操作系统的架构形式比较单一,因此,亟需设计一种新的多操作系统的架构。
有鉴于此,本申请实施例提供了一种计算设备,计算设备的存储器中存储有多个操作系统,如:第一操作系统和第二操作系统,第一操作系统和第二操作系统具有共同的引导加载程序和内核,也就是说,第一操作系统和第二操作系统共用同一个引导加载程序和内核,从而实现了减少多个操作系统的引导程序和内核,如:M个操作系统时,至少可以减少M-1个引导加载程序和M-1个内核,因此,该计算设备的多个操作系统的架构,相对于相关技术中的架构形式,不仅能够简化多个操作系统的架构,还能够显著减少多个操作系统占用的存储空间。此外,由于第一操作系统和第二操作系统具有共同的引导加载程序和内核,因此,若运行第一操作系统的过程中,需要启动第二操作系统,则处理器无需重复运行引导加载程序和内核,而是可以直接运行第二操作系统的容器,这样,能够显著缩短重新启动操作系统所消耗的时间,从而有助于提高操作系统启动效率,进而有助于提高用户的使用体验。
以下,对本申请实施例提供的计算设备的进行示例性介绍。
图1为本申请实施例提供的一种计算设备的示意图。以下,结合图1,对本申请实施例提供的计算设备进行示例性介绍。
本申请实施例提供的计算设备可以包括至少一个管理单元。至少一个管理单元中的每个管理单元可以包括处理器和存储器。其中,每个管理单元的存储器中存储有多个操作系统。
需要说明的,在本申请实施例中,多个可以是两个,或者,也可以是两个以上,后续不再赘述。
示例性的,如图1所示,至少一个管理单元可以包括第一管理单元和第二管理单元。其中,第一管理单元、第二管理单元均包括处理器和存储器。
示例性的,第一管理单元可以是带内管理单元。带内管理单元是指用于实现带内管理的单元,如:中央管理单元等。其中,带内管理是指计算设备的管理数据和用户的业务数据使用相同的物理通道进行传输。
示例性的,第二管理单元可以是带外管理单元。带外管理单元是指用于实现带外管理的单元,如:基板管理控制器(board management controller,BMC)单元等。其中,带外管理是指计算设备的管理数据和用户的业务数据使用不同的物理通道进行传输。
需要说明的是,不同计算设备对BMC有不同的称呼,例如,一些计算设备称为BMC,一些计算设备称为iLO,另一计算设备称为iDRAC。不论是叫BMC,还是叫iLO或iDRAC,都可以理解为是本发明实施例中的BMC。
本申请实施例中,每个管理单元还可以包括只读存储器。只读存储器中存储有ROM引导程序。ROM引导程序指示了引导加载程序在存储器中的分区地址,基于此,在启动操作系统时,管理单元可以通过ROM引导程序指示的分区地址,跳转运行引导加载程序,并基于引导加载程序指示的内核的分区地址,跳转运行内核,从而实现启动引导加载程序和内核。
示例性的,ROM可以内嵌在处理器上。相同型号的处理器,ROM中的代码可以相同。
需要说明的,图1所示的计算设备仅为可适用于本申请实施例的一种计算设备的结构示意图,其不对本申请实施例所适用的计算设备构成限定。
可选地,计算设备可以包括网络设备或终端设备。
网络设备可以包括服务器等。其中,服务器可以是一个物理或逻辑服务器,也可以是有两个或两个以上分担不同职责的物理或逻辑服务器、相互协同来实现服务器的各项功能。示例性的,服务器可以是刀片服务器、高密服务器、机架服务器或塔式服务器等。
终端设备可以包括增强现实(augmented reality,AR)设备、虚拟现实(virtualreality,VR)设备、个人数字助理(personal digital assistant,PDA)、超级移动个人计算机(ultra-mobile personal computer,UMPC)、平板电脑、笔记本电脑、上网本、台式计算机、一体机等。
需要说明的,本申请实施例对计算设备的形态不做限制,以上仅为示例性说明。
以下,对计算设备配置的多操作系统的架构进行示例性介绍。
本申请实施例提供了一种操作系统,该操作系统包括引导加载程序、内核、第一操作系统的容器和第二操作系统的容器。其中,第一操作系统和第二操作系统具有共同的引导加载程序和内核。
该实施例中,通过设置第一操作系统和第二操作系统具有共同的引导加载程序和内核,从而实现了减少多个操作系统的引导程序和内核,如:M个操作系统时,至少可以减少M-1个引导加载程序和M-1个内核,因此,该多个操作系统的架构,相对于相关技术中的架构形式,不仅简化了多个操作系统的架构,还能够显著减少多个操作系统占用的存储空间。
当引导加载程序和内核用于引导运行第一操作系统的容器,若检测到目标事件,从第一操作系统的容器切换到第二操作系统的容器;当引导加载程序和内核用于引导运行第二操作系统的容器,若检测到目标事件,从第二操作系统的容器切换到第一操作系统的容器。
该实施例中,由于第一操作系统和第二操作系统具有共同的引导加载程序和内核,因此,在通过引导加载程序和内核引导第一操作系统的容器运行后,若检测到目标事件,也即,需要切换操作系统时,则无需通过引导加载程序和内核引导待切换操作系统的容器(即第二操作系统的容器),而是可以直接从第一操作系统的容器切换到第二操作系统的容器,从而实现运行第二操作系统的容器。在此基础上,在运行第二操作系统的容器的过程中,若检测到目标事件,依然无需通过引导加载程序和内核引导待切换操作系统的容器(即第一操作系统的容器),而是可以直接从第二操作系统的容器切换到第一操作系统的容器,从而实现运行第一操作系统的容器。这样,能够显著缩短操作系统运行过程中,切换操作系统所消耗的时间,从而有助于提高操作系统切换效率,进而有助于提高用户的使用体验。
图2为本申请实施例的计算设备配置上述多操作系统时的架构图。
示例性的,多个操作系统可以包括第一操作系统和第二操作系统。以下,以第一操作系统和第二操作系统为例,对多个操作系统的架构进行示例性介绍。
本申请实施例中,第一操作系统和第二操作系统具有共同的引导加载程序和内核。也就是说,第一操作系统和第二操作系统共用同一个引导加载程序和内核。如:图2所示的引导加载程序和内核。
本申请实施例中,第一操作系统包括第一操作系统的容器,如图2所示的第一操作系统的容器。第二操作系统包括第二操作系统的容器,如图2所示的第二操作系统的容器。
如图2所示,第一操作系统的容器包括第一操作系统的根文件系统、系统守护进程和至少一个应用程序。第二操作系统的容器包括第二操作系统的根文件系统、系统守护进程和至少一个应用程序。
需要说明,本申请实施例中,至少一个可以是一个,或,也可以是多个,后续不再赘述。
需要说明的,本申请实施例对每个容器中的应用程序的数量不做限制。此外,不同容器中的应用程序可以相同,或者,也可以不同,本申请实施例对此也不做限制。
该实施例中,通过设置容器包括根文件系统、系统守护进程和至少一个应用程序,一方面,通过将容器单独存储在一个分区中,可以实现将根文件系统、系统守护进程和至少一个应用程序存储在同一个分区中,这样,有助于减少存储器的分区数量,从而减少系统启动过程中的跳转次数。另一方面,通过容器中的根文件系统,可以实现设备操作系统的根目录,在此基础上,可以根据系统守护进程和至少一个应用程序,实现启动操作系统的应用程序,从而实现了通过单个容器可以启动操作系统的应用程序。
本申请实施例中,内核可以包括切换器、切换配置模块、跳转机和升级系统中至少一项。
其中,切换器可以用于提供操作系统切换功能,跳转机可以用于提供跳转功能,切换配置模块可以用于提供切换配置功能,升级系统可以用于提供操作系统升级功能。切换配置功能可以是指设置启动配置参数,启动配置参数用于指示待切换操作系统的容器。
图3为本申请实施例提供一种操作系统启动后的层级示意图。
以下,结合图3,以BMC单元为例,对启动操作系统的过程进行示例性介绍。
如图3所示,BMC单元包括硬件层和软件层,软件层是运行在硬件层上的程序代码。其中,硬件层包括处理器、ROM、存储器等。软件层包括操作系统(如:引导加载程序、内核、文件系统等)。用户侧可以通过软件层中的文件系统使用计算设备运行的应用程序。
需要说明的,在图3中,第一操作系统的容器(以下称为第一容器)为实线,用于表征处于运行状态的容器。第二操作系统的容器(以下称为第二容器)为虚线,用于表征处于非运行状态的容器,或者说,处于休眠状态的容器。
BMC单元上电时,BMC单元的处理器首先运行ROM引导程序,并基于ROM引导程序指示的分区地址(即引导加载程序的分区地址),运行存储器中存储的第一操作系统。其中,运行第一操作系统可以包括以下步骤:
1)运行操作系统的引导加载程序:按照ROM引导程序指示的分区地址,跳转到引导加载程序所在分区,将引导加载程序加载到指定内存地址中运行,指定内存地址可以是出厂时设置的,运行引导加载程序的过程中,可以进行基础输入输出(input output,IO)配置等。
2)运行内核:基于引导加载程序指示的分区地址,跳转到内核所在分区,将内核加载到指定的内存地址中运行。运行内核时,可以进行驱动设备配置和加载、拉起内存文件系统等。
由于本申请实施例中的内核包括切换器、切换配置模块、跳转机和升级系统等,在基础上,基于内核生成内存文件系统时,可以通过切换器、切换配置模块、跳转机和升级系统等,生成内存文件系统,从而使得内存文件系统包括切换器、切换配置模块、跳转机和升级系统等,进而使得内存文件系统可以提供操作系统切换功能、操作系统升级功能、跳转功能、切换配置功能、跳转功能等。
由于内存文件系统是运行操作系统过程中用于管理文件的系统,因此,在操作系统的整个生命周期都是处于运行状态的,也即,只要操作系统不重启或关闭,内存文件系统便一直存在。基于此,通过设置内存文件系统可以提供操作系统切换功能、操作系统升级功能、跳转功能、切换配置功能、跳转功能等,从而实现运行第一操作系统的过程中,都可以提供操作系统切换功能、操作系统升级功能、跳转功能、切换配置功能、跳转功能等,这样,有助于提高操作系统的功能多样性,进而有助于提高用户的使用体验。
3)运行容器:在拉起内存文件系统之后,跳转到第一操作系统的容器所在的分区,挂载第一操作系统的容器所在的分区,并将第一操作系统的容器的初始目录挂载为根目录,也即,将第一容器中的内容加载到指定的内存地址中运行。
4)运行应用程序:通过第一操作系统的容器中的系统守护进程,启动第一操作系统的容器中的至少一个应用程序。
以上,是对本申请实施例提供的计算设备的架构的介绍,如:计算设备配置的多个操作系统的架构。以下,对上述计算设备可以实现的功能进行示例性介绍。
需要说明的,以下,以BMC单元为例,对上述计算设备可以实现的功能进行介绍。
示例性的,第一操作系统和第二操作系统中的一个操作系统可以为BMC架构的操作系统(简称为BMC系统),另一个操作系统可以为OpenBMC架构的操作系统(简称为OpenBMC系统)。以下,以第一操作系统为BMC系统,第二操作系统为OpenBMC系统为例,对本申请实施例进行示例性说明。
本申请实施例中,BMC单元上电后,处理器可以用于基于ROM引导程序指示的分区地址,运行引导加载程序,并基于引导加载程序指示的分区地址,运行内核。在处理器运行内核的过程,处理器可以基于内核生成内存文件系统。之后,处理器还可以用于运行第一操作系统的容器,从而实现运行第一操作系统。
在一种实现方式中,在运行第一操作系统的容器的过程中,处理器可以用于在检测到目标事件的情况下,从第一操作系统的容器切换至对第二操作系统的容器,以运行第二操作系统的容器,从而实现运行第二操作系统。
该实现方式中,由于第一操作系统和第二操作系统具有共同的引导加载程序和内核,因此,若运行第一操作系统的过程中,需要启动第二操作系统,或者说,需要从运行第一操作系统切换为运行第二操作系统,则处理器无需重复启动引导加载程序和内核,而是可以直接运行第二操作系统的容器,这样,能够显著缩短重新启动操作系统所消耗的时间,从而有助于提高操作系统启动效率,进而有助于提高用户的使用体验。
在另一种实现方式中,在运行第一操作系统的容器的过程中,处理器可以用于在检测到目标事件的情况下,重新运行引导加载程序和内核,从而运行第二操作系统的容器。
该实现方式中,在检测到目标事件时,通过重新运行引导加载程序和内核,实现切换到第二操作系统的容器,从而运行第二操作系统的容器。这样,能够重新启动完成的操作系统,从而有助于保证操作系统启动流程的完整性,以及待切换操作系统启动后的稳定性和可靠性。
以下,结合图4-图10,对操作系统可以实现的操作系统切换功能进行示例性介绍。
本申请实施例中,处理器可以用于在检测到目标事件的情况下,从第一操作系统的容器切换到第二操作系统的容器,具体包括:处理器可以用于在检测到的目标事件指示切换操作系统的情况下,从第一操作系统的容器跳转到内存文件系统,并确定切换到第二操作系统的容器。之后,处理器可以用于从内存文件系统切换到第二操作系统的容器。
需要说明的,本申请实施例对“从第一操作系统的容器跳转到内存文件系统”和“确定切换到第二操作系统的容器”的执行顺序不做限制。
本申请实施例中,目标事件可以是系统切换请求。
示例性的,用户需要切换BMC单元运行的操作系统时,通过终端设备向处理器发送系统切换请求,以请求切换BMC单元运行的操作系统。处理器运行第一操作系统的过程中,若接收到系统切换请求,则属于检测到目标事件,该目标事件指示了切换操作系统。
该实施例中,通过设置目标事件可以为系统切换请求,这样,用户便可以通过向BMC单元的处理器发送系统切换请求,实现触发BMC单元进行操作系统切换,不仅有助于提高触发操作系统切换方式的多样性,还有助于提高用户的使用体验。
本申请实施例中,目标事件可以为系统升级完成。
示例性的,在BMC单元的处理器检测到某个操作系统(如:第二操作系统)被执行完升级操作的情况下,也就是说,检测到系统升级完成的情况下,处理器从运行第一操作系统的容器跳转运行内存文件系统,并确定切换到第二操作系统的容器。
在一个示例中,处理器可以在第二操作系统被执行完升级操作之后,立即从运行第一操作系统的容器跳转到第一操作系统的内存文件系统,并确定切换到第二操作系统的容器。
在另一个示例中,处理器可以在第二操作系统被执行完升级操作、且经过预设时长之后,从第一操作系统容器跳转到内存文件系统,并确定切换到第二操作系统的容器。
需要说明的,本申请实施例对预设时长的具体值不做限制。例如,可以是5秒、10秒等。
在又一个示例中,处理器可以在第二操作系统被执行完升级操作之后的指定时间,从第一操作系统的容器跳转运行内存文件系统。
需要说明的,本申请实施例对指定时间的具体时间点不做限制。例如,指定时间可以是次日的0点、1点等。
该实施例中,通过设置目标事件可以为系统升级完成,这样,在操作系统升级完成后,处理器可以自动切换到升级后的操作系统的容器,从而不必由用户手动触发切换操作系统,不仅有助于提高操作系统升级后系统切换的便利性,还有助于提高用户的使用体验。
需要说明的,第二操作系统升级可以是第二操作系统的容器升级,或者,也可以第二操作系统的整个操作系统进行升级,其中,第二操作系统的整个操作系统升级是指同时升级第二操作系统的引导记载程序、内核、容器等,本申请实施例对此不做限制。
示例性的,如图4所示,处理器检测到目标事件后,可以通过调用内存文件系统中的跳转机从第一操作系统的容器跳转到内存文件系统,并通过调用内存文件系统中的切换配置模块确定切换到第二操作系统的容器。之后,处理器可以通过调用内存文件系统中的切换器,从内存文件系统切换到第二操作系统的容器,从而实现运行第二操作系统。
该实施例中,由于待切换的第二操作系统与当前运行的第一操作系统共用同一个引导加载程序、内核和内存文件系统,因此,在需要进行操作系统切换时,BMC单元的处理器可以从内存文件系统直接跳转运行待切换操作系统的容器,不必重新启动引导加载程序和内核,从而实现了快速启动待切换操作系统,这样,能够显著缩短切换操作系统消耗的时间,提高切换操作系统的效率,进而提高用户的使用体验。
本申请实施例中,处理器用于在检测到目标事件的情况下,确定启动配置参数,并将启动配置参数写入计算设备的存储介质中。
其中,启动配置参数用于指示待切换操作系统的容器(以下简称为待切换容器)。
需要说明的,本申请实施例中,待切换操作系统、待切换容器等,是泛指待切换的操作系统、待切换的容器等,并不特指某一个操作系统、容器等。
本申请实施例中,BMC单元的处理器从第一操作系统的容器跳转运行内存文件系统之后,与相关技术中不同的是,不是跳转运行ROM引导程序,而是在运行内存文件系统的过程中,确定启动配置参数,并将启动配置参数写入计算设备的存储介质中,以便于后续可以根据启动配置参数确定待切换操作系统的容器,这样,有助于后续确定待切换操作系统的容器的便利性和准确性。
示例性的,处理器可以调用内存文件系统中的切换配置模块,确定启动配置参数,并将启动配置参数写入计算设备的存储介质中。
本申请实施例中,启动配置参数可以包括容器标识,该容器标识可以用于指示待切换操作系统的容器。或者,启动配置参数可以包括操作系统标识,该操作系统标识可以用于指示待切换操作系统,在此基础上,处理器可以将属于待切换操作系统的容器确定为待切换容器。
需要说明的,本申请实施例对启动配置参数的形式并不做限制,以上仅为示例性说明。以下,以启动配置参数包括容器标识为例,对本申请实施例进行示例性说明。
对于待切换操作系统的容器,包括多种情况,以下通过情况a至情况c,进行示例性介绍。
情况a:待切换操作系统的容器为当前处于非运行状态的容器。
在当前运行的操作系统为第一操作系统时,当前处于运行状态的容器为第一操作系统的容器,基于此,当前处于非运行状态的容器为第二操作系统的容器。也就是说,待切换操作系统的容器为第二操作系统的容器。
示例性的,在情况a中,BMC单元的处理器检测到目标事件后,可以通过启动配置参数,将第二操作系统的容器确定为待切换操作系统的容器。
情况b:待切换操作系统的容器为当前处于运行状态的容器。
在当前运行的操作系统为第一操作系统时,当前处于运行状态的容器为第一操作系统的容器。也就是说,待切换操作系统的容器为第一操作系统的容器。
示例性的,在情况b中,BMC单元的处理器检测到目标事件后,可以通过启动配置参数,将第一操作系统的容器确定为待切换操作系统的容器。
情况c:待切换操作系统的容器为第一操作系统的容器或第二操作系统的容器。
BMC单元预先配置有系统切换策略,该系统切换策略可以包括切换到除当前操作系统之前的其他操作系统或重新启动当前操作系统。
示例性的,用户可以将系统切换策略设置为切换到除当前操作系统之前的其他操作系统或重新启动当前操作系统。这样,BMC检测到目标事件后,便可以根据用户设置的系统切换策略,执行后续操作,如:确定启动配置参数等。
需要说明的,本申请实施例对用户设置系统切换策略的方式不做限制。例如,可以是通过向处理器发送指令,或者,也可以其他方式。
以下,以情况a为例,通过方式1至方式2,对确定启动配置参数的过程进行介绍。
方式1:基于第一操作系统的容器的标识,确定启动配置参数。
本申请实施例中,BMC单元的处理器可以根据获取到的根目录路径,确定第一操作系统的容器的标识。之后,处理器可以根据第一操作系统的容器的标识,确定启动配置参数。
示例性的,根目录路径可以为/mnt/inittramfs/rofs1,其中,rofs1用于指示当前运行操作系统的容器的标识(即第一操作系统的容器的标识)。
可以理解的,由于根目录是唯一的,因此,当前存在的根目录路径也是唯一的。
示例1,处理器可以确定第一操作系统的容器的标识为启动配置参数。这样,在需要确定待切换操作系统的容器时,处理器可以将除启动配置参数指示的容器(即除第一容器)之外的其他容器,确定为待切换操作系统的容器,也即,处理器可以将启动配置参数未指示的容器确定为待切换操作系统的容器。
例如,根目录路径为/mnt/inittramfs/rofs1,则处理器可以确定rofs1为启动配置参数。
该示例中,由于可以将当前运行操作系统的容器的标识,也即,将第一操作系统的容器的标识,直接确定为启动配置参数,因此,有助于提高确定启动配置参数的效率。
示例2,处理器可以确定第二操作系统的容器的标识为启动配置参数,可以将除当前运行容器之外的其他容器,确定为启动配置参数,也即,直接将待切换操作系统的容器的标识确定为启动配置参数。这样,在需要确定待切换操作系统的容器时,计算设备可以将启动配置参数指示的容器,确定为待切换操作系统的容器。
例如,根目录路径为/mnt/inittramfs/rofs1,则BMC单元可以确定rofs2(即第二操作系统的容器的标识)为启动配置参数。
该示例中,由于可以直接确定启动配置参数指示的容器为待切换操作系统的容器,因此,有助于提高确定待切换操作系统的容器的效率。
方式2,基于目标事件,确定启动配置参数。
本申请实施例中,处理器检测到目标事件后,可以根据目标事件,确定启动配置参数。
在一个示例中,目标事件为系统切换请求时,系统切换请求可以包括容器标识(即待切换操作系统的容器的标识)。处理器接收到系统切换请求后,可以基于系统切换请求中容器标识,确定启动配置参数。如:确定系统切换请中的容器标识为启动配置参数。
示例性的,如图5中的(a)所示,用户的终端设备上显示第一界面,第一界面包括第一控件,其中,第一控件用于指示系统切换。用户选中第一控件,并点击第一界面上的下一步控件,如图5中的(b)所示,终端设备响应于用户的操作,显示第二界面,第二界面包括第二控件,第二控件用于指示容器。用户在第二界面上选中第二容器(即待切换操作系统的容器),并点击第二界面上的下一步控件之后,终端设备响应于用户的操作,向BMC单元的处理器发送系统切换请求,该系统切换请求包括第二容器的标识。
需要说明的,本申请实施例对第二控件的数量不做限制,以上仅为示例性说明。示例性的,第二控件的数量可以与计算设备配置的操作系统的数量相同,从而实现通过一个第二控件指示一个操作系统的容器。
在另一个示例中,目标事件为系统升级完成时,处理器可以根据最近时间段内被执行系统升级操作的容器,确定启动配置参数。如:最近时间段内被执行系统升级操作的容器为第二操作系统的容器,基于此,处理器可以将第二操作系统的容器的标识确定为启动配置参数。
需要说明的,方式2的其他相关说明,可以参考上述方式1的说明,此处不再赘述。
本申请实施例中,存储介质包括易失性存储介质;处理器用于将启动配置参数写入计算设备的存储介质中,具体包括:处理器用于在满足第一预设条件的情况下,将启动配置参数写入易失性存储介质。
本申请实施例中,易失性存储介质可以为BMC单元的内存。这样,有助于提高读写启动配置参时的速度,进而有助于提高操作系统切换的效率。
本申请实施例中,在将启动配置参数写入易失性存储介质之后,处理器可以卸载第一操作系统的容器所在的分区,并卸载第一操作系统的根目录,从而为后续运行第二操作系统的容器做准备,如:直接从内存文件系统切换到第二操作系统的容器。
由于满足第一预设条件时,BMC单元跳转到内存文件系统后,不会继续跳转运行ROM引导程序,因此,BMC单元不会下电,基于此,将启动配置参数存储在易失性存储介质中,不仅可以保证能够获取到启动配置参数,还可以在BMC单元之后的下电过程中,自动清除启动配置参数,避免启动配置参数长久占用存储空间、影响正常的系统启动流程。
本申请实施例中,存储介质还包括非易失性存储介质;处理器用于将启动配置参数写入计算设备的存储介质中,具体包括:处理器用于在不满足第一预设条件的情况下,将启动配置参数写入非易失性存储介质。
本申请实施例中,非易失性存储介质可以包括BMC单元的存储设备上的裸分区,或,可编程逻辑器件上的用户闪存(user flash memory,UFM)。
在一个示例中,BMC单元包括存储设备,如:存储设备可以是嵌入式多媒体卡(embedded multi media card,EMMC)、与非型闪存(NANDFLASH)、或非型闪存(NORFLASH)、通用闪存存储器(universal flash storage,UFS)等,BMC单元可以将存储设备的部分储存区域划分为裸分区(也可以称为裸设备(raw device)或原始分区),该裸分区可以无文件系统格式。在此基础上,在需要确定待切换操作系统的容器时,处理器可以通过裸设备的固定偏移地址访问裸设备,以获取启动配置参数。
示例性的,参见图6中的(a),处理器确定待切换操作系统的容器之后,可以将待切换操作系统的容器的标识作为启动配置参数记录在init-options(初始化选项)中,并将init-options写入裸分区中。
在另一个示例中,BMC单元可以包括可编程逻辑器件,如:可编程逻辑器件可以是复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)等。可编辑逻辑中包括UFM存储空间,其中,UFM存储空间是指用户可以使用的闪存存储空间。在此基础上,在需要确定待切换操作系统的容器时,处理器可以通过可编程逻辑器件提供的对外访问接口访问UFM存储空间,以获取启动配置参数。
示例性的,参见图6中的(b),处理器确定待切换操作系统的容器之后,可以将待切换操作系统的容器的标识作为启动配置参数记录在init-options(初始化选项)中,并将init-options写入可编程逻辑器件的UFM存储空间。
该实施例中,在不满足第一预设条件时,将启动配置参数存储在非易失性存储介质中,这样,有助于避免跳转运行ROM引导程序时,启动配置参数丢失,进而有助于保证操作系统切换流程的顺利执行。
本申请实施例中,满足第一预设条件,可以包括:第一操作系统的容器中的多个应用程序的关闭操作满足目标条件,和/或,目标事件指示了容器切换。其中,容器切换用于指示系统切换过程中切换至待切换操作系统的容器。
该实施例中,在多个应用程序的关闭操作满足目标条件时,确定满足第一预设条件,也即,直接从当前运行的内存文件系统切换到第二操作系统的容器,这样,通过设置合适的目标条件,不仅有助于避免多个应用程序崩溃而影响当前运行操作系统的稳定性,还有助于避免第一操作系统的多个应用程序应用后续切的第二操作系统的应用程序。
此外,通过设置目标事件指示容器切换时,确定满足第一预设条件,这样,有助于提高目标事件和系统切换方式的关联性,从而有助于保证系统切换方式的可靠性和准确性。
以下,通过情况a至情况c,对如何确定是否满足第一预设条件示例性介绍。
情况a:基于多个应用程序的关闭操作,确定是否满足第一预设条件。
处理器运行第一操作系统的容器的过程中,若检测到目标事件,则对第一操作系统的容器中的多个应用程序执行关闭操作,以关闭当前运行的多个应用程序。
在此基础上,若多个应用程序的关闭操作满足目标条件,则确定满足第一预设条件。若多个应用程序的关闭操作不满足目标条件,则确定不满足第一预设条件。
该实施例中,通过设置合适的目标条件,不仅有助于避免多个应用程序的崩溃而导致第一操作系统崩溃,还有助于避免第一操作系统的应用程序,影响后续启动的第二操作系统的应用程序的正常运行。
本申请实施例中,多个应用程序的关闭操作满足目标条件,包括:多个应用程序关闭成功,和/或,多个应用程序的关闭顺序与多个应用程序的启动顺序相反。
该实施例中,通过设置多个应用程序中的每个应用程序均关闭成功,可以避免第一操作系统的应用程序,影响后续启动的第二操作系统的应用程序的正常运行,而设置多个应用程序的关闭顺序与多个应用程序的启动顺序相反,有助于避免多个应用程序崩溃而导致第一操作系统崩溃。
其中,多个应用程序的启动顺序是指多个应用程序最近时间段内的启动顺序。
示例性的,在第一时刻,多个应用程序的启动顺序为顺序1,在第二时刻,多个应用程序的启动顺序为顺序2,第二时刻晚于第一时刻,顺序1与顺序2不同,则顺序2为最近时间段内的启动顺序。
以下,结合图7,对多个应用程序关闭过程进行示例性说明。
示例性的,如图7所示,BMC单元的处理器启动第一操作系统时,依次运行第一操作系统的引导加载程序、内核以及内存文件系统等。之后,处理器开始启动第一操作系统的容器中的多个应用程序,在启动第一操作系统的容器中的多个应用程序的过程中,BMC单元会记录多个应用程序的启动顺序,该启动顺序可以用于指示不同应用程序之间的依赖关系。
例如,处理器可以依次启动应用程序1、应用程序2、......、应用程序N。之后,处理器在运行多个应用程序的过程中,可以关闭部分应用程序,也可以重新启动部分应用程序。在重新启动部分应用程序的过程中,处理器可以更新之前记录的多个应用程序的启动顺序。例如,多个应用程序最近时间段内的启动顺序为1、3、......、N、2。
在此基础上,处理器检测到目标事件后,对多个应用程序执行关闭操作,以关闭处于运行状态的多个应用程序。在对多个应用程序执行关闭操作时,若处理器对多个应用程序的关闭顺序为2、N、......、3、1,则多个应用程序的关闭顺序与多个应用程序的启动顺序相反。
示例性的,处理器对一个应用程序执行关闭操作之后,可以接收返回值,该返回值可以用于指示该一个应用程序是否成功关闭。这样,处理器便可以根据返回值,确定应用程序是否关闭成功。
本申请实施例中,处理器在启动运行多个应用程序时,会按照多个应用程序之间的依赖关系从内到外依次启动。比如,应用程序1的运行依赖应用程序2,也就是说,应用程序1无法单独运行,只有在运行应用程序2的情况下,应用程序1才可以正常运行,这种情况,就称为应用程序1与应用程序2具有依赖关系,且是应用程序1依赖应用程序2,其中,应用程序2在依赖关系中处于内,应用程序1在应用关系中处于外。
基于此,在需要启动应用程序1和应用程序2时,处理器先启动应用程序2,再启动应用程序1。而在关闭应用程序1和应用程序2时,先关闭应用程序1,再关闭应用程序2,这样,有助于避免应用程序1崩溃。
在此基础上,处理器在对多个应用程序执行关闭操作时,若多个应用程序的关闭顺序与多个应用程序的启动顺序相反,说明关闭操作是按照多个应用程序之间的依赖关系从外到内依次关闭,这样,有助于避免未关闭的应用程序崩溃。
本申请实施例中,在对多个应用程序执行关闭操作的过程中,相邻两个应用程序的关闭操作的间隔时间大于0。这样,有助于保证不同应用程序能够串行依次关闭。
示例性的,应用程序的关闭顺序包括应用程序1、应用程序2,基于此,处理器在时刻1对应用程序1执行了关闭操作,并在时刻2对应用程序2执行关闭操作,其中,时刻1与时刻2的差值大于0。
情况b:基于目标事件指示的系统切换类型以及多个应用程序的关闭操作,确定是否满足第一预设条件。
本申请实施例中,系统切换类型可以包括容器切换或非容器切换。其中,容器切换也可以称为快速切换,非容器切换也可以称为全量切换或全量分区切换。
其中,容器切换用于指示系统切换过程中运行待切换操作系统的容器,换言之,不重新运行引导加载程序和内核等。示例性的,容器切换的路径为:当前操作系统的容器(即第一操作系统的容器)→内存文件系统→待切换操作系统的容器。
其中,非容器切换用于指示系统切换过程中运行引导加载程序、内核以及待切换操作系统的容器。示例性的,非容器切换的路径为:当前操作系统的容器→内存文件系统→ROM引导程序→引导加载程序→内核→内存文件系统→待切换操作系统的容器。
以下,对目标事件为系统切换请求时,如何确定系统切换类型进行示例性介绍。
示例性的,系统切换请求指示了切换类型,BMC单元可以通过系统切换请求指示的切换类型,确定系统切换类型是否为容器切换。这样,可以按照用户指示的切换类型确定是否为容器切换,有助于提高用户的使用体验。
示例性的,系统切换请求包括切换标识,切换标识指示了切换类型,若切换标识指示了容器切换,则确定系统切换类型为容器切换,若切换标识指示了非容器切换,则确定系统切换类型为非容器切换。
以下,对目标事件为系统升级完成时,如何确定系统切换类型进行示例性介绍。
在一个示例中,若系统升级类型为容器升级,则确定系统切换类型为容器切换。容器升级用于指示系统升级过程中升级操作系统的单个容器,也即,不升级引导加载程序和内核。
需要说明的,BMC单元可以通过日志查看系统升级类型,若日志中记录了最近一次操作系统升级时仅升级了容器,也就是说,未升级引导加载程序和内核,则确定系统升级类型为容器升级。若日志中记录了最近一次操作系统升级时同时升级了引导加载程序、内核和容器,则确定系统升级类型为非容器升级。
在另一个示例中,若目标事件为系统升级完成,则确定系统切换类型为容器切换。也就是说,无论系统升级类型是否为容器升级,只要目标事件为系统升级完成,则确定系统切换类型便为容器切换。
在又一个示例中,若目标事件为系统升级完成,则系统切换类型为非容器切换。
基于上述,本申请实施例中,若目标事件指示的系统切换类型为容器切换、且多个应用程序的关闭操作满足目标条件,则确定满足第一预设条件。若目标事件指示的系统切换类型为非容器切换,或,多个应用程序的关闭操作不满足目标条件,则确定不满足第一预设条件。
需要说明的,情况b的其他相关说明,可以参考上述情况a,此处不再赘述。
情况c:基于目标事件指示的系统切换类型,确定是否满足第一预设条件。
需要说明的,情况c的相关说明,可以参考情况b,此处不再赘述。
以下,通过方式A至方式B,对确定待切换操作系统的容器的过程进行示例性说明。
方式A:基于启动配置参数,确定待切换操作系统的容器。
本申请实施例中,处理器用于确定切换到第二操作系统的容器,包括:处理器用于从存储介质中获取启动配置参数,并根据启动配置参数确定切换到第二操作系统的容器。也即,确定待切换操作系统的容器为第二操作系统的容器。
示例性的,处理器可以基于启动配置参数以及启动对应关系,确定待切换容器(即待切换操作系统的容器)。其中,启动对应关系可以包括启动配置参数和待切换容器的标识之间的对应关系。
示例1,启动对应关系可以包括启动配置参数为第一标识时对应第二标识,也就是说,启动配置参数为第一标识时,确定第二标识所属容器为待切换容器。
示例2,启动对应关系可以包括启动配置参数为第二标识时对应第二标识,也就是说,启动配置参数为第二标识时,确定第二标识所属容器为待切换容器。
示例3,启动对应关系可以包括启动配置参数为空时对应第一标识,也就是说,启动配置参数为空时,确定第一标识所属容器为待切换容器。
本申请实施例中,在确定满足第一预设条件时,处理器可以从易失性存储介质中获取启动配置参数,以确定待切换操作系统的容器。
第一个示例,容器标识为第一容器(即第一操作系统的容器)的标识。处理器获取到启动配置参数(即第一容器的标识)后,可以确定除第一容器之外的另一个容器(即第二操作系统的容器)为待切换操作系统的容器。
第二个示例,容器标识为待切换容器(即待切换操作系统的容器)的标识。处理器获取到启动配置参(即第二容器的标识)之后,便可以直接确定第二容器的标识所属的容器为待切换操作系统的容器,也即,确定第二操作系统的容器为待切换操作系统的容器。
需要说明的,在计算设备的BMC单元仅配置两个操作系统时,可以基于上述第一个示例和第二个示例的方式确定待切换操作系统的容器。在计算设备配置两个以上操作系统时,可以基于上述第二个示例的方式确定待切换操作系统的容器。
该实现方式中,通过预先写入存储介质的启动配置参数,确定待切换操作系统的容器,这样,便不再需要用户指定待切换操作系统的容器,有助于提高用户的使用体验,以及操作系统切换的便利性和自动化程度。
方式B:基于目标事件,确定待切换操作系统的容器。
本申请实施例中,在启动配置参数是根据第一容器的标识确定的情况下,还可以根据目标事件,确定待切换操作系统的容器。
在目标事件为系统切换请求时,系统切换请求可以包括容器标识。基于此,处理器可以确定系统切换请求中的容器标识对应的容器,为待切换操作系统的容器。
需要说明的,基于系统切换请求中的容器标识,确定待切换操作系统的容器的说明,可以参考上述方式1中图5的说明,此处不再赘述。
在目标事件为系统升级完成时,处理器可以确定执行升级操作的容器为待切换操作系统的容器。这样,有助于提高确定待切换操作系统的容器的准确性和效率。
示例性的,第二操作系统执行了升级操作,基于此,BMC单元可以确定第二操作系统的容器为待切换操作系统的容器。
该实现方式中,通过目标事件确定待切换操作系统的容器,这样,有助于提高最终启动的待切换操作系统与目标事件的关联性,从而有助于提高所切换的操作系统的准确性。
本申请实施例中,处理器用于从内存文件系统切换到第二操作系统的容器,包括:处理器用于在满足第一预设条件的情况下,从内存文件系统切换到第二操作系统的容器。
示例性的,处理器通过调用内存文件系统中的跳转机,实现从第一操作系统的容器跳转运行内存文件系统。其中,跳转机包括第一跳转模块和第二跳转模块,第一跳转模块包括从容器跳转至内存文件系统,第二跳转模块包括从容器跳转至内存文件系统以及从内存文件系统跳转至ROM引导程序。
在满足第一预设条件的情况下,处理器调用第一跳转模块,从而实现从第一操作系统的容器跳转至内存文件系统后,不继续向ROM引导程序跳转,而是可以通过调用内存文件系统中的切换器,从内存文件系统切换到第二操作系统的容器。
可以理解的,由于第一跳转模块并不包括从内存文件系统跳转至ROM引导程序的步骤,因此,处理器调用第一跳转模块的情况下,在从第一操作系统的容器跳转至内存文件系统后,不会继续向ROM引导程序跳转,也即,切断原有向ROM跳转的路径。
该实施例中,通过设置在满足第一预设条件时,才从直接内存文件系统切换到待切换操作系统的容器(即第二操作系统的容器),这样,通过设置合适的第一预设条件,有助于提高待切换操作系统启动后的稳定性和可靠性。
本申请实施例中,切换到第二容器(即第二操作系统的容器),可以包括:挂载第二容器所的分区,也即,将第二容器加载到BMC单元的内存中运行。将第二容器的初始目录设置为根目录,也即,设置为第二操作系统的根目录。之后,通过chroot跳转到第二操作系统的根目录,并通过第二容器中的系统守护进程,依次启动第二容器中的多个应用程序。
本申请实施例中,在运行第二操作系统的容器的过程中,处理器可以用于在检测到发生目标事件的情况下,从第二操作系统的容器跳转运行内存文件系统,并确定第一操作系统的容器为待启动操作系统的容器。之后,处理器还可以用于从内存文件系统跳转运行第一操作系统的容器,从而运行第一操作系统。
该实施例中,在运行第二操作系统的过程中,若处理器再次检测到发生目标事件,计算设备可以再次执行操作系统切换操作,以从第二操作系统的容器切换至第一操作系统的容器,从而实现运行第一操作系统。由于可以通过内存文件系统直接从一个操作系统的容器切换至另一个操作系统的容器,因此,显著提高计算设备运行过程中的操作系统切换效率。
本申请实施例中,处理器可以用于在检测到目标事件的情况下,重新运行引导加载程序和内核,从而运行第二操作系统的容器,具体包括:处理器可以用于在不满足第一预设条件的情况下,重新运行引导加载程序和内核,从而运行第二操作系统的容器。
处理器检测到目标事件后,若不满足第一预设条件,则处理器将启动配置参数写入非易失性存储介质,并在从第一操作系统的容器跳转到内存文件系统后,继续从内存文件系统向跳转ROM引导程序,在跳转至ROM引导程序的情况,之前基于内核生成的内存文件系统关闭。之后,处理器基于ROM引导程序依次运行引导加载程序和内核。在运行内核的过程中,处理器基于内核重新生成内存文件系统。
示例性的,若不满足第一预设条件的情况下,处理器调用第二跳转模块,从而实现从第一操作系统的容器跳转至内存文件系统后,继续向ROM引导程序跳转。由于第二跳转模块包括从容器跳转至内存文件系统以及从内存文件系统跳转向ROM引导程序跳转的步骤,因此,处理器调用第二跳转模块的情况下,也可以从内存文件系统跳转ROM引导程序。
在一个示例中,运行内存文件系统的过程中,处理器可以从非易失性存储介质中获取启动配置参数,并基于启动配置参数确定待切换操作系统的容器为第二操作系统的容器。
在另一个示例中,运行内存文件系统的过程中,处理器可以基于用户在操作系统选择界面上选择了第二操作系统的容器,确定待切换操作系统的容器为第二操作系统的容器。
需要说明的,操作系统选择界面将在后续实施例中进行说明,此处暂不细述。具体可以参见图19的相关说明。
在此基础上,确定待切换操作系统的容器为第二操作系统的容器后,处理器从重新生成的内存文件系统切换到第二操作系统的容器,以运行第二操作系统的容器,从而实现运行第二操作系统。
该实施例中,通过设置不满足第一预设条件时,跳转运行ROM引导程序,并重新启动引导加载程序、内核和待切换操作系统的容器,从而实现为用户提供多种不同的系统切换方式,这样,不仅有助于提高操作系统切换方式的多样性,从而实现根据实际场景选择合适的操作系统切换方式进行操作系统切换,还有助于提高待切换操作系统启动后的稳定性和可靠性,进而有助于提高用户的使用体验。
本申请实施例中,处理器用于运行引导加载程序和内核,包括:处理器用于在上电的情况下,基于ROM引导程序指示了引导加载程序,运行引导加载程序和内核,并生成内存文件系统。之后,处理器还用于确定启动第一操作系统的容器,以及从内存文件系统切换到第一操作系统的容器。
以下,结合图8,对BMC单元上电时启动操作系统的过程进行示例性介绍。
如图8所示,该操作系统启动过程可以应用系统初始化场景,也即,BMC单元上电时的操作系统启动场景,如:可以是首次上电,或者,也可以是断电后重新上电。BMC单元交流(alternating current,AC)上电后,处理器基于ROM引导程序指示的分区地址,依次运行引导加载程序、内核和内存文件系统,并挂载不同容器公用的可读写文件系统(read writefile system,rwfs)。
在一个示例中,运行内存文件系统之后,处理器可以从非易失存储中获取启动配置参数,并根据启动配置参数确定待启动操作系统的容器。
示例性的,启动对应关系可以包括启动配置参数为第一容器(即第一操作系统的容器)的标识或为空(NULL)时,第一容器为待启动容器。启动配置参数为第二容器(即第二操作系统的容器)的标识时,第二容器为待启动容器。
由于启动配置参数是在检测到目标事件时写入存储介质中的,因此,在BMC单元首次上电时,或者,断电后重新上电时,启动配置参数未被写入存储介质中,基于此,处理器获取到的启动配置参数为空(NULL)。因此,处理器确定第一容器为待启动操作系统的容器。
该示例中,通过设置上电启动操作系统时,从非易失存储介质中获取启动配置参数,这样,上电时启动操作系统和不满足第一预设条件切换操作系统时,获取启动配置参数的路径相同,从而有助于减少获取启动配置参数的路径,进而有助于简化操作系统启动程序。
在另一个示例中,运行内存文件系统之后,处理器可以确定默认容器为待启动操作系统的容器,或者,确定用户在操作系统选择界面上选择的容器为待启动操作系统的容器。
之后,处理器可以通过chroot跳转根目录环境,如:启动配置参数为空时,跳转到第一容器的初始目录对应的根目录,并通过第一容器中的系统守护进程启动第一容器中的多个应用程序。
本申请实施例中,BMC单元上电时,处理器基于ROM引导程序,依次运行了引导加载程序、内核以及内存文件系统后,确定待启动操作系统的容器,这样,有助于保证计算设备上电时的系统启动流程与系统切换流程的统一性,从而有助于提高系统切换流程的适用范围,使得操作系统切换流程既适用于上电时的系统启动,也适用于操作系统切换时的系统启动。
如图9所示,为本申请实施例提供的一种操作系统切换的原理图。
示例性的,BMC单元上电后,处理器运行ROM引导程序,并基于ROM引导程序指示的分区地址,依次引导加载程序、内核,在运行内核的过程中,拉起内存文件系统。之后,处理器启动一号进程init,并通过chroot运行第一操作系统的容器(即第一容器),如图9中带箭头的实线部分所示。如:运行第一容器可以包括挂载第一容器所在的分区,将第一容器的初始目录设置为根目录,并通过第一容器中的第一系统守护进程运行第一容器中应用程序1、应用程序2、......应用程序M等,其中,M为大于2的正整数。
在此基础上,若处理器检测到目标事件,且满足第一预设条件时,则处理器调用内存文件系统中的跳转机从第一容器跳转到内存文件系统,由于满足第一预设条件时,跳转机中断了向ROM引导程序跳转的步骤,因此,处理器不会跳转运行ROM引导程序,而是通过调用切换配置模块确定切换到第二操作系统的容器(即第二容器)。之后,处理器调用内存文件系统中的切换器从内存文件系统切换至第二容器,并重新启动(reboot)一号进程init,通过chroot运行第二容器,如图9中带箭头的虚线部分所示。如:运行第二容器可以包括挂载第二容器所在的分区,将第二容器的初始目录设置为根目录,并通过第二容器中的第二系统守护进程运行第二容器中的应用程序1、应用程序2、......、应用程序N,其中,N为大于2的正整数。
基于上述,第一操作系统启动之后,需要切换到第二操作系统时,涉及一号进程权限移交的流程可以包括:引导加载程序→内核→init→第一操作系统的容器→rebootinit→第二操作系统的容器。可以看出,整个操作系统切换过程无需重新启动引导加载程序以及内核。
如图10所示,为本申请实施例提供的一种操作系统切换的示意图。以下,结合图10,对本申请实施例提供的操作系统切换过程进行示例性说明。
示例性的,BMC单元的处理器运行第一操作系统的容器(也可以称为原容器)时,用户触发目标事件,如:触发系统升级或系统切换,BMC单元检测到目标事件之后,对第一操作系统的容器中的多个应用程序执行关闭操作,以关闭第一操作系统的容器中的多个应用程序。之后,处理器确定是否满足第一预设条件,若满足,则处理器执行容器启动流程,若不满足,则处理器执行非容器启动流程(即全量启动流程)。
若处理器执行容器启动流程,处理器从第一操作系统的容器跳转运行内存文件系统后,不跳转运行ROM引导程序,而是停留在运行内存文件系统的阶段。在运行内存文件系统的过程中,BMC单元将启动配置参数写入易失性存储介质,并卸载第一操作系统的根目录以及第一操作系统的容器所在的分区。
若执行全量启动流程,处理器从第一操作系统的容器跳转运行内存文件系统,在运行内存文件系统的过程中,将启动配置参数写入非易失性存储介质,并继续跳转至ROM引导程序。然后,基于ROM引导程序指示的分区地址,运行引导加载程序、内核和内存文件系统。
之后,处理器获取启动配置参数,若是容器启动流程,则处理器从易失性存储介质中获取启动配置参数,若是非容器启动流程,则处理器从非易失性存储介质中获取启动配置参数。之后,处理器基于启动配置参数,确定待切换操作系统的容器。
示例性的,若启动配置参数为第一容器的标识或空(NULL),第一容器为待切换操作系统的容器,则挂载第一容器对应的分区,并挂载第一容器的初始目录为根目录。若启动配置参数为第二容器的标识,第二容器为待切换操作系统的容器,则挂载第二容器对应的分区,并挂载第二容器的初始目录为根目录。
之后,处理器通过chroot跳转根目录环境,如:启动配置参数指示了第二容器的标识,则处理器跳转到第二容器的初始目录对应的根目录,并通过第二容器中的系统守护进程启动第二容器中的多个应用程序。
以下,结合图11-图16,对操作系统可以实现的操作系统升级功能进行示例性介绍。
示例性的,用户需要对BMC单元的操作系统进行升级时,可以通过终端设备向BMC单元的处理器发送系统升级请求,以请求对BMC单元的操作系统进行系统升级。处理器运行第一操作系统的过程中,若接收到系统升级请求,则属于检测到目标事件,该目标事件指示了升级操作系统。
示例性的,系统升级请求可以是请求将BMC操作系统升级为OpenBMC操作系统,或者,也可以是请求将当前版本的BMC操作系统升级为新版本的BMC操作系统,或者,还可以是请求将当前版本的OpenBMC操作系统升级为新版本的OpenBMC操作系统,本申请实施例对此不做限制。
本申请实施例中,处理器可以用于在检测到的目标事件指示升级操作系统的情况下,确定待升级操作系统的容器。之后,处理器可以用于对待升级操作系统的容器执行升级操作、且不对引导加载程序和/或内核执行升级操作。
需要说明的,待升级操作系统可以为计算设备当前运行的操作系统(即第一操作系统),或者,也可以为计算设备当前运行的操作系统之外的其他操作系统(即第二操作系统),本申请实施例对此不做限制。
本申请实施例中,处理器对待升级操作系统的容器执行升级操作,可以是对待升级操作系统的容器所在的分区执行升级操作。
示例性的,对待升级操作系统的容器所在的分区执行升级操作,可以是使用待升级操作系统的升级包刷新待升级操作系统的容器(即待升级容器)所在的分区(即待升级分区)。如:刷新待升级容器的根文件系统、系统守护进程和至少一个应用程序等。
示例性的,如图11所示,处理器可以通过调用内存文件系统中的升级系统,对待升级操作系统的容器执行升级操作。
需要说明的,关于待升级操作系统的升级包的获取方式,可以参考相关技术中的获取方式,本申请实施例对此不做限制。
该实施例中,由于操作系统升级过程中,不对待升级操作系统的引导加载程序和/或内核执行升级操作,因此,减少了执行升级操作的分区数量,从而缩短了操作系统升级所消耗的时间,提高了系统升级的效率,进而提高了用户的使用体验。
本申请实施例中,处理器可以用于在检测到的目标事件指示升级操作系统的情况下,确定待升级操作系统的容器,具体包括:处理器可以用于在检测到的目标事件指示升级操作系统的情况下,若满足第二预设条件,确定待升级操作系统的容器。
该实施例中,通过设置满足第二预设条件时,才确定待升级操作系统的容器,从而仅容器待升级操作系统的容器,这样,通过设置合适的第二预设条件,有助于保证升级单个容器后,操作系统的稳定性和可靠性。
本申请实施例中,满足第二预设条件,可以包括:目标事件指示了容器升级、待升级操作系统的版本高于或等于待升级操作系统的升级包的兼容版本、当前运行的引导加载程序和内核的版本为最新版本中的至少一项。
以下,通过方式A至方式C,对于如何确定是否满足第二预设条件进行示例性说明。
方式A:基于系统升级请求指示的升级类型,确定是否满足第二预设条件。
其中,若系统升级请求指示了容器升级,则满足第二预设条件。若系统升级请求指示了非容器升级,则不满足第二预设条件。
本申请实施例中,系统升级类型包括容器升级和非容器升级。其中,容器升级用于指示仅升级操作系统的单个容器,非容器升级用于指示升级操作系统的引导加载程序、内核和容器,也即,升级操作系统的全部分区。
需要说明的,容器升级也可以称为快速升级,非容器升级也可以称为全量升级或全量分区升级等。
本申请实施例中,系统升级请求可以包括类型标识,该类型标识用于指示升级类型。
示例性的,如图12所示,用户的终端设备显示第三界面,第三界面包括第三控件,第三控件用于指示升级类型。用户选中一个第三控件指示的系统升级类型,之后,点击第三界面上的下一步控件,终端设备响应于用户的操作,向处理器发送系统升级请求,该系统升级请求包括类型标识,该类型标识用于指示用户选中的系统升级类型。
示例性的,若用户选中容器升级,则系统升级请求可以包括容器升级的类型标识。若用户选中非容器升级,则系统升级请求可以包括非容器升级的类型标识。
需要说明的,图12的其他相关说明,可以参考图5的说明,此处不再赘述。
方式B:基于待升级操作系统的版本与待升级操作系统的升级包的兼容版本,确定是否满足第二预设条件。
其中,若待升级操作系统的版本高于或等于兼容版本,则确定满足第二预设条件。若待升级操作系统的版本低于兼容版本,则确定不满足第二预设条件。
本申请实施例中,BMC单元的处理器接收到系统升级请求之后,确定待升级操作系统的容器,之后,确定待升级操作系统的升级包指示的兼容版本,其中,升级包指示的兼容版本可以认为升级后的操作系统可以兼容的操作系统版本。若待升级操作系统的版本高于或等于升级包指示的兼容版本,则确定满足第二预设条件,这样,升级后的操作系统可以兼容BMC单元的引导加载程序和内核,因此,可以仅升级操作系统的容器。
示例性的,若升级包指示的兼容版本为版本5,待升级操作系统的版本为版本5或高于版本5(如:版本6、版本7等)时,待升级操作系统的版本高于升级包指示的兼容版本。
需要说明的,关于如何确定升级包指示的兼容版本以及当前运行的操作系统的版本,可以参考相关技术中的方式,本申请实施例对此不做限制。
需要说明的,一个操作系统兼容另一个操作系统,可以认为是一个操作系统的代码包括了另一个操作系统的代码。
本申请实施例,上述方式A和方式B可以结合使用。在方式A和方式B结合使用时,若系统升级请求指示了容器升级、且待升级操作系统的版本高于或等于升级包指示的兼容版本,则确定满足第二预设条件。若系统升级请求指示了非容器升级,或,待升级操作系统的版本低于升级包指示的兼容版本,则确定不满足第二预设条件。
方式C:基于当前运行的引导加载程序和内核,确定是否满足第二预设条件。
示例1,若当前运行引导加载程序和内核为最新版本(也可以称为最高版本),确定满足第二预设条件。若当前运行的引导加载程序和/或内核非最新版本,确定不满足第二预设条件。
示例性的,BMC单元可以通过比对当前运行操作系统的版本和升级包的版本,确定当前运行的引导加载程序和内核是否为最新版本。若当前运行操作系统的版本和升级包的版本相同,则可以确定当前运行的引导加载程序和内核为最新版本,反之,则可以确定当前运行的引导加载程序和内核不是最新版本。
示例2,若当前运行的引导加载程序和内核的版本高于或等于升级包的版本,则确定满足第二预设条件。若当前运行的引导加载程序和内核的版本低于升级包的版本,则确定不满足第二预设条件。
需要说明的,示例2的相关说明,可以参考上述示例1的说明,此处不再赘述。
该方式中,在多个操作系统共用同一个引导加载程序和内核时,通过确定当前运行的引导记载程序和内核为最新版本时,满足第二预设条件,从而实现仅对待升级操作系统的容器进行升级,这样,有助于保证升级后的容器可以兼容当前运行的引导加载程序和内核,从而有助于保证升级后的操作系统的稳定性和可靠性。
需要说明的,上述方式A至方式C可以单独使用,或者,也可以结合使用,本申请实施例对此不做限制。
如图13所示,为本申请实施例提供的一种操作系统升级的原理图。
示例性的,BMC单元上电后,处理器运行ROM引导程序,并基于ROM引导程序指示的分区地址,依次引导加载程序、内核,在运行内核的过程中,拉起内存文件系统。之后,BMC单元启动一号进程init,并通过chroot运行第一容器(即第一操作系统的容器),参见图13中带箭头的实线部分。如:运行第一容器可以包括挂载第一容器所在的分区,将第一容器的初始目录设置为根目录,并通过第一容器中的系统守护进程运行第一容器中应用程序1、应用程序2、......升级应用等。
在此基础上,若用户需要升级操作系统,如:用户通过终端设备向处理器发送系统升级请求,并指示系统升级类型为容器升级,处理器接收到系统升级请求之后,确定第二容器(即第二操作系统的容器)为待升级操作系统的容器,并调用内存文件系统中的升级系统,通过第一容器中的升级应用,基于容器升级路径,对第二容器执行升级操作,参见图13中的“①”。
在对第二容器执行升级操作之后,处理器可以重新启动升级后的第二容器,具体地,BMC单元可以调用内存文件系统中的切换器从内存文件系统直接切换至第二操作系统的容器,并重新启动(reboot)一号进程init,通过chroot运行第二容器,参见图13中的“②和③,以及第二容器中的虚线部分”。如:运行第二容器可以包括挂载第二容器所在的分区,将第二容器的初始目录设置为根目录,并通过第二容器中的系统守护进程运行第二容器中的应用程序1、应用程序2、......、应用程序N,其中,N为大于2的正整数。
基于上述,操作系统启动之后,进行操作系统升级时,涉及一号进程权限移交的流程可以包括:引导加载程序→内核→init→第一操作系统的容器→reboot init→第二操作系统的容器。可以看出,整个操作系统升级以及升级后的操作系统启动过程,既不会升级引导加载程序以及内核,也不会重启引导加载程序和内核。
以下,对确定待升级操作系统的容器的多种实现方式进行示例性介绍。
本申请实施例中,BMC单元可以配置第一系统升级策略或第二系统升级策略,第一系统升级策略包括对当前处于非运行状态的容器进行升级,第二系统升级策略包括对当前处于运行状态的容器进行升级。
需要说明的,可以是BMC固定使用第一系统升级策略或二系统升级策略。或者,也可以是BMC单元使用用户指定的第一系统升级策略或二系统升级策略,本申请实施例对此不做限制。此外,对于用户指定系统升级策略方式,本申请实施例也不做限制,如:可以通过向BMC单元的处理器发送指令实现。
在一种实现方式中,处理器可以用于获取根目录路径,并根据根目录路径确定待启动操作系统的容器。其中,根目录路径用于指示当前处于运行状态的容器。
该实现方式中,处理器可以通过获取到的根目录路径,自动确定待升级操作系统的容器,这样,不仅有助于提高确定待升级容器的便利性和准确性,还有助于提高用户的使用体验。
示例性的,若根目录路径为/mnt/inittramfs/rofs1,由于rofs1指示第一容器(即第一操作系统的容器)的标识,则当前运行的容器为第一容器。若根目录路径为/mnt/inittramfs/rofs2,由于rofs2指示第二容器(即第二操作系统的容器)的标识,则当前运行的容器为第二容器。
可以理解的,由于根目录是唯一的,因此,根目录路径也是唯一的。
在一个示例中,根目录路径指示了第一操作系统的容器,处理器可以用于根据根目录路径指示了第一操作系统的容器,确定第二操作系统的容器为待升级操作系统的容器。
示例性的,根目录路径为/mnt/inittramfs/rofs1,处理器当前运行的是第一操作系统的容器,也即,当前处于运行状态的容器是第一操作系统的容器,基于上述第一系统升级策略,处理器获取到根目录路径后,可以确定第二操作系统的容器为待升级操作系统的容器。
该示例中,BMC单元通过采用第一策略,从而实现对对当前处于非运行状态的容器进行升级。这样,在进行操作系统升级时,有助于避免影响当前处于运行状态的容器中的应用程序,进而有助于降低操作系统升级对当前运行的应用程序的影响。
在另一个示例中,根目录路径指示了第一操作系统的容器,处理器还可以用于根据根目录路径指示了第一操作系统的容器,确定第一操作系统的容器为待升级操作系统的容器。示例性的,根目录路径为/mnt/inittramfs/rofs1,说明处理器当前运行的是第一操作系统的容器,也即,当前处于运行状态的容器是第一操作系统的容器,基于上述第二系统升级策略,处理器获取到根目录路径后,可以确定第二操作系统的容器为待升级操作系统的容器。
该示例中,BMC单元通过采用第二策略,从而实现对当前处于运行状态的容器进行升级。一方面,提高了待升级操作系统的选择多样性,从而有助于提高用户的使用体验。另一方面,在BMC单元仅配置一个操作系统时,处理器也可以仅对操作系统的容器进行升级。
在另一种实现方式中,根据目标事件指示的容器标识,确定待升级操作系统的容器。
示例性的,处理器可以将容器标识所属容器,确定为待升级操作系统的容器。
需要说明的,容器标识指示的容器可以是处于运行状态的容器,或者,也可以是处于非运行状态的容器,本申请实施例对此不做限制。
示例性的,如图14中的(a)所示,用户的终端设备上显示第四界面,第四界面包括第四控件,其中,第四控件用于指示升级类型,例如,升级类型包括容器升级。用户选中第四控件指示的容器升级后,点击第四界面上的下一步控件。如图14中的(b)所示,终端设备响应于用户的操作,显示第五界面,第五界面包括第五控件,第五控件用于指示待升级操作系统的容器。用户在第五界面上选中第二容器,并点击第五界面上的下一步控件后,终端设备响应于用户的操作,向处理器发送系统升级请求,该系统升级请求包括第二容器的标识。
需要说明的,图14的其他相关说明,可以参考图5的说明,此处不再赘述。
在此基础上,处理器检测到目标事件,也即,接收到系统升级请求后,可以基于升级请求指示的容器标识,确定待升级操作系统的容器。
该实现方式中,通过设置系统升级请求包括容器标识,也即,包括待升级操作系统的容器的标识,从而实现在检测到系统升级请求之后,处理器可以基于容器标识指示的容器,确定待升级操作系统的容器,这样,不仅有助于提高确定待升级操作系统的容器的效率,还可以对用户指定的容器进行升级,从而提高用户的使用体验。
本申请实施例中,处理器可以用于在检测到的目标事件指示升级操作系统的情况下,若不满足第二预设条件,确定待升级操作系统,并对引导加载程序、内核和待升级操作系统的容器执行升级操作。
示例性的,处理器对引导加载程序、内核和待升级操作系统的容器进行升级,也即,对待升级操作系统的全量分区进行升级。如:对引导加载程序、内核以及待升级操作系统的容器等所在的分区执行升级操作。
示例性的,存储器中存储有操作系统的分区表,该分区表指示了操作系统的引导加载程序、内核、容器等所在的分区,处理器可以通过操作系统的分区表,实现对待升级操作系统的全量分区进行系统升级。
如图15所示,为本申请实施例提供的一种操作系统升级路径的示意图。
示例性的,如图15所示,BMC单元的内存文件系统可以包括第一升级路径和第二升级路径。其中,第一升级路径为容器升级路径,第二升级路径为非容器升级路径,也可以称为全量升级路径。容器升级路径用于指示仅升级操作系统的单个容器,如图15所示,容器升级路径仅包括路径(1)。全量升级路径用于指示升级操作系统的全量分区,如图15所示,全量升级路径包括路径①、路径②、路径③。
在此基础上,若处理器确定满足第二预设条件,则通过容器升级路径进行操作系统升级,若处理器确定不满足第二预设条件,则通过全量升级路径进行操作系统升级。这样,便可以为用户提供了多种操作系统升级方式,如:容器升级和全量升级,进而可以根据实际场景选择合适的升级方式,还有助于提高升级后的操作系统的稳定性和可靠性。
该实施例中,通过设置不满足第二预设条件时,确定待升级操作系统,并对引导加载程序、内核和待升级操作系统的容器执行升级操作,这样,通过设置合适的第二预设条件,便可以引导计算设备对整个操作系统进行升级,从而可以实现为用户提供多种操作系统升级方式,进而有助于提高用户的使用体验。
如图16所示,为本申请实施例提供的一种操作系统升级方法的示意图。
以下,结合图16对本申请实施例提供的一种具体的操作系统升级方法进行示例性说明。
BMC单元的处理器运行第一操作系统的容器(即原容器)的过程中,用户触发操作系统升级,计算设备接收到系统升级请求后,确定是否满足第二预设条件,若确定结果为是,则处理器采用容器升级路径对待升级操作系统进行升级,也就是:读取当前存在的路径(即根目录路径),基于根目录路径确定待升级操作系统的容器(即待升级容器),之后,对待升级容器所在的分区进行升级。若确定结果为否,则处理器采用全量升级路径对待升级操作系统进行升级,也就是:对待升级操作系统的全量分区进行升级,换言之,对待引导加载程序、内核、升级操作系统的容器所在的分区进行升级。
若处理器采用容器升级路径进行操作系统升级,在升级完成后,处理器跳转运行内存文件系统,并卸载第一操作系统的根目录(即当前根目录)以及第一操作系统的容器所在的分区,之后,计算设备跳转运行升级后的容器,以启动容器中的应用程序,从而实现启动升级后的操作系统。
若处理器采用全量升级路径进行操作系统升级,在升级完成后,处理器跳转运行内存文件系统后,继续跳转运行ROM引导程序,并基于ROM引导程序依次运行升级后的引导加载程序、内核、容器等,并启动容器中的应用程序,从而实现启动升级后的操作系统。
图17是根据一示例性实施例示出的一种操作系统启动方法的流程图。示例性的,该操作系统启动方法可以包括以下S1701-S1702。
需要说明的,以下,以BMC单元为例,对图17所示的操作系统启动方法进行示例性说明。其中,下述的处理器、存储器、ROM、操作系统均属于BMC单元,后续不再赘述。
S1701:处理器运行引导加载程序和内核,从而运行第一操作系统的容器。
本申请实施例中,BMC单元上电后,处理器基于ROM引导程序,运行引导加载程序和内核,并在运行内核的过程中,基于内核生成内存文件系统。在此基础上,处理器运行第一操作系统的容器,从而实现运行第一操作系统。
S1702:当处理器检测到目标事件,处理器从第一操作系统的容器切换到第二操作系统的容器。
本申请实施例中,处理器运行第一操作系统的容器的过程中,若检测到目标事件,则处理器从第一操作系统的容器切换到第二操作系统的容器,从而实现运行第二操作系统。
需要说明的,S1701-S1702的其他相关说明,参见上述实施例中介绍的处理器所执行的操作,此处不再赘述。
上述实施例中,处理器运行存储器中存储的引导加载程序和内核后,运行第一操作系统的容器,从而实现运行第一操作系统。在此基础上,当处理器检测到目标事件,处理器直接从第一操作系统的容器切换到第二操作系统的容器,以运行第二操作系统的容器,从而实现运行第二操作系统。由于第一操作系统和第二操作系统具有共同的引导加载程序和内核,因此,若运行第一操作系统的过程中,需要启动第二操作系统,则处理器无需重复运行引导加载程序和内核,而是可以直接运行第二操作系统的容器,这样,能够显著缩短重新启动操作系统所消耗的时间,从而有助于提高操作系统启动效率,进而有助于提高用户的使用体验。
图18是根据一示例性实施例示出的一种操作系统运行方法的流程图。示例性的,该操作系统运行方法可以包括以下S1801-S1803。
需要说明的,图18所示的操作系统运行方法可以由终端设备执行。其中,终端设备可以与上述计算设备通信。这样,用户便可以通过终端设备控制计算设备所运行的操作系统,如:从运行第一操作系统切换为运行第二操作系统,进而有助于提高用户的使用体验。
示例性的,终端设备可以包括手机、平板电脑、手持计算机、PC、蜂窝电话、个人数字助理(personal digital assistant,PDA)、可穿戴式设备(如智能手表、智能手环等)、智能家居设备(如电视机等)、车机(如车载电脑等)、智慧屏、游戏机、耳机、AI音响、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、笔记本电脑、上网本、台式计算机或一体机等。
需要说明的,本申请实施例对终端设备的设备形态不做限制,以上仅为示例性说明。
S1801:终端设备显示操作系统选择界面,操作系统选择界面用于指示选择启动第一操作系统的容器或第二操作系统的容器。
示例性的,如图19所示,终端设备显示操作系统选择界面,该操作系统选择界面包括第六控件和第七控件,其中,第六控件指示了第一操作系统的容器,第七控件指示了第二操作系统的容器。
在一个示例中,终端设备可以计算设备上电时,显示操作系统选择界面。这样,便可以在计算设备上电时,由用户选择启动的操作系统的容器。
在另一个示例中,终端设备可以在计算设备运行第一操作系统的过程中,显示操作系统选择界面。这样,便可以在计算设备运行过程中,由用户选择重新启动的操作系统的容器,也即,由用户选择待切换操作系统的容器。
S1802:当终端设备接收到针对于操作系统选择界面的第二用户操作,终端设备确定运行第二操作系统的容器。
如图19所示,若用户对操作系统选择界面执行了第二用户操作,也即选中第一操作系统的容器,终端设备接收到用户针对于操作系统选择界面的第二用户操作后,确定运行第二操作系统的容器。
在一个示例中,若终端设备在计算设备上电时,显示操作系统选择界面,则终端设备可以向计算设备发送系统启动请求,该系统启动请求可以包括第二操作系统的容器的标识,这样,计算设备接收到系统启动请求后,基于系统启动请求中的容器标识(即第二操作系统的容器的标识),启动第二操作系统的容器。
在另一个示例中,终端设备可以在计算设备运行第一操作系统的过程中,显示操作系统选择界面,则终端设备可以向计算设备发送系统切换请求,该系统切换请求可以包括第二操作系统的容器的标识,这样,计算设备接收到系统切换请求后,基于系统切换请求中的容器标识(即第二操作系统的容器的标识),启动第二操作系统的容器。
S1803:当终端设备接收到针对于操作系统选择界面的第一用户操作,终端设备确定运行第一操作系统的容器。
需要说明的,S1803的其他相关说明,可以参考S1802,此处不再赘述。
上述实施例中,用户使用的终端设备可以显示操作系统选择界面,界面可以用于指示选择启动第一操作系统的容器或第二操作系统的容器,当用户需要重新启动操作系统时,可以对界面执行操作,终端设备接收到用户执行的操作后,若是第一用户操作(即用户选中第一操作系统的容器),则终端设备确定运行第一操作系统的容器,若是第二用户操作,则终端设备确定运行第二操作系统的容器。由于终端设备可以根据用户执行的不同操作,确定执行不同操作系统的容器,从而实现了可以由用户确定待启动操作系统的容器,不仅有助于提高用户的使用体验,还可以由用户根据实际场景的不同需求,选择运行不同操作系统的容器。
本申请实施例还提供了一种芯片,包括:处理器和存储器,处理器和存储器连接;存储器用于存储上述第一方面中的引导加载程序、内核、第一操作系统的容器和第二操作系统的容器,处理器用于运行存储器存储的引导加载程序、内核、第一操作系统的容器/第二操作系统的容器。
本申请实施例还提供了一种芯片,芯片包括:处理器和接口电路;接口电路,用于接收上述第一方面中的引导加载程序、内核、第一操作系统的容器,或者,接收上述第一方面中的第二操作系统的容器并传输至处理器;处理器,用于运行接口电路接收到的引导加载程序、内核、第一操作系统的容器,或者,运行接口电路接收到的第二操作系统的容器。
本申请实施例还提供了一种芯片中集成了用于实现上述计算备的功能的控制电路和一个或者多个端口。可选的,该芯片支持的功能可以参考上文,此处不再赘述。
本申请实施例还提供了一种计算设备,包括:供电电源和上述第五方面至第六方面中任意一个方面提供的芯片,供电电源用于为芯片供电。
本申请实施例还提供了一种计算设备,包括:包括存储器和处理器,存储器用于存储第一操作系统和第二操作系统,第一操作系统包括第一操作系统的容器,第二操作系统包括第二操作系统的容器;第一操作系统和第二操作系统具有共同的引导加载程序和内核。
本申请实施例还提供了一种计算机可读存储介质,存储有引导加载程序、内核、第一操作系统的容器和第二操作系统的容器。计算设备可以运行引导加载程序、内核、第一操作系统的容器时,以运行第一操作系统,计算设备还可以由运行第一操作系统的容器切换为运行第二操作系统的容器时,以运行第一操作系统。
关于上述提供的任一种计算机可读存储介质中相关内容的解释及有益效果的描述,均可以参考上述对应的实施例,此处不再赘述。
本申请实施例还提供了一种计算机程序产品,包括:上述的引导加载程序、内核、第一操作系统的容器和第二操作系统的容器。计算设备可以运行引导加载程序、内核、第一操作系统的容器时,以运行第一操作系统,计算设备还可以由运行第一操作系统的容器切换为运行第二操作系统的容器时,以运行第一操作系统。
应注意,本申请实施例提供的上述用于存储操作系统的器件,例如但不限于,上述存储器、计算机可读存储介质和通信芯片等,均具有非易失性(non-transitory)。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可通过程序来指令相关的硬件完成。所述的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可以是只读存储器,随机接入存储器等。上述处理单元或处理器可以是中央处理器,通用处理器、特定集成电路(application specific integrated circuit,ASIC)、微处理器(digital signal processor,DSP),现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
上述实施例中的多个操作系统可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,操作系统可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。
尽管结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但并不表示这些措施不能组合起来产生良好的效果。

Claims (16)

1.一种计算设备,其特征在于,所述计算设备包括存储器和处理器,所述存储器用于存储第一操作系统和第二操作系统,所述第一操作系统包括第一操作系统的容器,所述第二操作系统包括第二操作系统的容器;所述第一操作系统和所述第二操作系统具有共同的引导加载程序和内核;
所述处理器用于运行所述引导加载程序和所述内核,从而运行所述第一操作系统的容器;
所述处理器还用于当检测到目标事件,从所述第一操作系统的容器切换到所述第二操作系统的容器。
2.根据权利要求1所述的计算设备,其特征在于,
所述处理器还用于在运行所述内核的过程中,生成内存文件系统,所述内存文件系统用于提供操作系统切换功能、操作系统升级功能、跳转功能;所述第一操作系统和所述第二操作系统具有共同的所述内存文件系统。
3.根据权利要求2所述的计算设备,其特征在于,所述处理器还用于当检测到目标事件,从所述第一操作系统的容器切换到所述第二操作系统的容器,包括:
所述处理器还用于当检测到的目标事件指示切换操作系统,从所述第一操作系统的容器跳转到所述内存文件系统;
所述处理器还用于确定切换到所述第二操作系统的容器,从所述内存文件系统切换到所述第二操作系统的容器。
4.根据权利要求3所述的计算设备,其特征在于,所述处理器还用于从所述内存文件系统切换到所述第二操作系统的容器,包括:
所述处理器还用于在满足第一预设条件的情况下,从所述内存文件系统切换到所述第二操作系统的容器;
所述处理器还用于在不满足所述第一预设条件的情况下,重新运行所述引导加载程序和所述内核,从而运行所述第二操作系统的容器。
5.根据权利要求3或4所述的计算设备,其特征在于,所述处理器还用于确定切换到所述第二操作系统的容器,包括:
所述处理器还用于从所述计算设备的存储介质中获取启动配置参数;所述启动配置参数用于指示待切换操作系统的容器;
所述处理器还用于根据所述启动配置参数确定切换到所述第二操作系统的容器。
6.根据权利要求5所述的计算设备,其特征在于,
所述处理器还用于当检测到目标事件,根据所述第一操作系统的容器的标识,确定所述启动配置参数;
所述处理器还用于将所述启动配置参数写入所述计算设备的存储介质中。
7.根据权利要求6所述的计算设备,其特征在于,
所述存储介质包括易失性存储介质;所述处理器还用于将所述启动配置参数写入所述计算设备的存储介质中,包括:所述处理器还用于在满足第一预设条件的情况下,将所述启动配置参数写入所述易失性存储介质;或者,
所述存储介质还包括非易失性存储介质;所述处理器还用于将所述启动配置参数写入所述计算设备的存储介质中,包括:所述处理器还用于在不满足所述第一预设条件的情况下,将所述启动配置参数写入所述非易失性存储介质。
8.根据权利要求2所述的计算设备,其特征在于,
所述计算设备还用于当前检测到目标事件的情况下,重新运行所述引导加载程序和所述内核,从而运行所述第二操作系统的容器。
9.根据权利要求2所述的计算设备,其特征在于,
所述处理器还用于当检测到的目标事件指示升级操作系统,确定待升级操作系统的容器;
所述处理器还用于对待升级操作系统的容器执行升级操作、且不对待升级操作系统的引导加载程序和/或内核执行升级操作。
10.根据权利要求9所述的计算设备,其特征在于,所述处理器还用于当检测到的目标事件指示升级操作系统,确定待升级操作系统的容器,包括:
所述处理器还用于当检测到的目标事件指示升级操作系统,获取根目录路径;所述根目录路径用于指示当前处于运行状态的容器,所述根目录路径指示了所述第一操作系统的容器;
所述处理器还用于根据所述根目录路径指示了所述第一操作系统的容器,确定所述第二操作系统的容器为待升级操作系统的容器;或者,所述处理器还用于根据所述根目录路径指示了所述第一操作系统的容器,确定所述第一操作系统的容器为待升级操作系统的容器。
11.根据权利要求9所述的计算设备,其特征在于,所述处理器还用于当检测到的目标事件指示升级操作系统,确定待升级操作系统的容器,包括:
所述处理器还用于当检测到的目标事件指示升级操作系统,根据目标事件指示的容器标识,确定待升级操作系统的容器。
12.根据权利要求9-11中任一项所述的计算设备,其特征在于,
所述处理器还用于当检测到的目标事件指示升级操作系统,确定待升级操作系统的容器,包括:所述处理器还用于当检测到的目标事件指示升级操作系统,在满足第二预设条件的情况下,确定待升级操作系统的容器;
所述处理器还用于当检测到的目标事件指示升级操作系统,在不满足所述第二预设条件的情况下,确定待升级操作系统;
所述处理器还用于对待升级操作系统的引导加载程序、内核和容器执行升级操作。
13.一种操作系统启动方法,其特征在于,用于计算设备,所述计算设备包括存储器和处理器,所述存储器用于存储第一操作系统和第二操作系统,所述第一操作系统包括第一操作系统的容器,所述第二操作系统包括第二操作系统的容器;所述第一操作系统和所述第二操作系统具有共同的所述引导加载程序和所述内核;所述方法包括:
所述处理器运行所述引导加载程序和所述内核,从而运行所述第一操作系统的容器;
当所述处理器检测到目标事件,所述处理器从所述第一操作系统的容器切换到所述第二操作系统的容器。
14.一种操作系统运行方法,其特征在于,所述方法包括:
显示操作系统选择界面,所述操作系统选择界面用于指示选择启动第一操作系统的容器或第二操作系统的容器;所述第一操作系统和所述第二操作系统具有共同的引导加载程序和内核;
当接收到针对于所述操作系统选择界面的第一用户操作,确定运行所述第一操作系统的容器;
当接收到针对于所述操作系统选择界面的第二用户操作,确定运行所述第二操作系统的容器。
15.一种操作系统启动装置,其特征在于,包括:
运行模块,用于运行引导加载程序和内核,从而运行第一操作系统的容器;
切换模块,用于当检测到目标事件,从所述第一操作系统的容器切换到第二操作系统的容器;所述第一操作系统和所述第二操作系统具有共同的所述引导加载程序和所述内核。
16.一种操作系统,其特征在于,所述操作系统包括引导加载程序、内核、第一操作系统的容器和第二操作系统的容器;所述第一操作系统和所述第二操作系统具有共同的所述引导加载程序和内核;
当所述引导加载程序和所述内核用于引导运行所述第一操作系统的容器,若检测到目标事件,从所述第一操作系统的容器切换到所述第二操作系统的容器;
当所述引导加载程序和所述内核用于引导运行所述第二操作系统的容器,若检测到目标事件,从所述第二操作系统的容器切换到所述第一操作系统的容器。
CN202311871790.6A 2023-12-29 2023-12-29 计算设备、操作系统启动方法、运行方法及装置 Pending CN117950733A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311871790.6A CN117950733A (zh) 2023-12-29 2023-12-29 计算设备、操作系统启动方法、运行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311871790.6A CN117950733A (zh) 2023-12-29 2023-12-29 计算设备、操作系统启动方法、运行方法及装置

Publications (1)

Publication Number Publication Date
CN117950733A true CN117950733A (zh) 2024-04-30

Family

ID=90804157

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311871790.6A Pending CN117950733A (zh) 2023-12-29 2023-12-29 计算设备、操作系统启动方法、运行方法及装置

Country Status (1)

Country Link
CN (1) CN117950733A (zh)

Similar Documents

Publication Publication Date Title
CN109478135B (zh) 计算机系统和用于重新引导计算机系统的方法
KR101702700B1 (ko) 고속 컴퓨터 시동
US20090037722A1 (en) Integration Model for Instant-On Environment
US8281116B2 (en) System and method for utilizing a protected/hidden region of semiconductor based memory/storage
CN104978231A (zh) 基于内部存储分区的多系统及其加载和切换方法
US20080098381A1 (en) Systems and methods for firmware update in a data processing device
CN103761088A (zh) 一种适用于arm架构移动设备的多操作系统切换方法
KR20150052107A (ko) Bpram을 이용한 운영체제의 레이아웃 및 실행
CN102467404A (zh) 一种基于物理内存实现软件快速切换的方法及装置
US9235426B2 (en) Multicore processor system, computer product, and notification method for updating operating system
US20110246759A1 (en) Method for boosting an electronic device with multiple processing units, and electronic device for implementing the same
CN112631625B (zh) 嵌入式设备的系统升级方法、装置及嵌入式设备
CN116643778B (zh) 一种应用程序优化方法及电子设备
CN110825419A (zh) 一种固件刷新方法、装置及电子设备和存储介质
CN102135923A (zh) 将操作系统集成到bios芯片的方法及启动该操作系统的方法
CN109634782B (zh) 一种系统健壮性的检测方法、装置、存储介质及终端
CN117950733A (zh) 计算设备、操作系统启动方法、运行方法及装置
CN117873580A (zh) 操作系统切换方法、芯片及设备
CN118113355A (zh) 操作系统切换方法、芯片及设备
CN117873579A (zh) 操作系统跳转方法、芯片及设备
Sun et al. Supporting Multiple OSes with OS Switching.
KR101420026B1 (ko) 부팅 프로세스 중에 파일들을 로딩하기 위한 방법, 장치 및 컴퓨터 판독가능 저장 매체
CN101739262A (zh) 固件更新方法及应用其的电子装置
CN117891480A (zh) 操作系统升级方法、芯片及设备
US20230350755A1 (en) Coordinated operating system rollback

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