CN117667234A - 系统引导方法、装置、电子设备和存储介质 - Google Patents
系统引导方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117667234A CN117667234A CN202311641879.3A CN202311641879A CN117667234A CN 117667234 A CN117667234 A CN 117667234A CN 202311641879 A CN202311641879 A CN 202311641879A CN 117667234 A CN117667234 A CN 117667234A
- Authority
- CN
- China
- Prior art keywords
- partition
- android
- sub
- linux
- file system
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000003860 storage Methods 0.000 title claims abstract description 65
- 238000005192 partition Methods 0.000 claims abstract description 315
- 230000004044 response Effects 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims description 35
- 230000015654 memory Effects 0.000 claims description 22
- 238000013500 data storage Methods 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 12
- 238000012423 maintenance Methods 0.000 abstract description 8
- 238000012545 processing Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 15
- 238000007726 management method Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 238000013508 migration Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000011664 nicotinic acid Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000306 component Substances 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012783 upstream development Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请的实施方式提供了一种系统引导方法、装置、电子设备和存储介质。该系统引导方法包括:响应于用户输入的系统启动指令,加载初始化文件系统;通过初始化文件系统解析动态分区,并基于动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息;将系统选项信息发送给用户,并接收用户反馈的系统选择结果;以及根据系统选择结果确定挂载子分区,并基于挂载子分区启动挂载子分区对应的系统。利用本申请的技术方案,能够在融合Android和Linux两个系统的情况下,按照用户需求来选择启动Android系统或Linux系统,提升系统选择灵活性的同时,降低开发维护的成本。
Description
技术领域
本申请的实施方式涉及计算机领域,更具体地,本申请的实施方式涉及系统引导方法、装置、电子设备和存储介质。
背景技术
本部分旨在为权利要求书中陈述的本申请的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
Android和Linux作为强大的操作系统,在各自的领域有广泛的应用,其中,Android更加偏向娱乐和轻度办公,而Linux则更偏向提供丰富的开发工具,在办公和开发领域更合适。Android和Linux两者的关系比较密切,Android采用Linux作为内核,对Linux内核做了一定修改,使其适应移动设备上的应用。可以说,Android继承于Linux,为用户提供的核心系统服务包括安全、内存管理、进程管理、网络组和驱动模型等内容,发展至今Android已经独立成了一套完善的操作系统。
既然Android和Linux都具有各自的优点,那么如果能够在同一个嵌入式设备上支持Android和Linux双系统,就能够同时兼顾Android和Linux的各自优点,可以给用户带来更大的灵活性和定制性,提供更丰富的业务内容,满足用户的不同需求,从而提高生产力。
有鉴于此,亟需提出一种系统引导方法,以便在融合Android和Linux两个系统的情况下,能够按照用户需求来选择启动Android系统或Linux系统,提升系统选择灵活性的同时,降低开发维护的成本。
发明内容
为克服相关技术中存在的问题,本申请的实施方式期望提供一种系统引导方法、装置、电子设备和存储介质。该系统引导方法能够在融合Android和Linux两个系统的情况下,按照用户需求来选择启动Android系统或Linux系统,提升系统选择灵活性的同时,降低开发维护的成本。
在本申请实施方式的第一方面中,提供了一种系统引导方法,包括:响应于用户输入的系统启动指令,加载初始化文件系统;通过初始化文件系统解析动态分区,并基于动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息;将系统选项信息发送给用户,并接收用户反馈的系统选择结果;以及根据系统选择结果确定挂载子分区,并基于挂载子分区启动挂载子分区对应的系统。
在本申请的一个实施例中,在响应于用户输入的系统启动指令,加载初始化文件系统之前,系统引导方法还包括:将引导加载程序存放分区、内核存放分区和用户数据存放分区确定为Android系统和Linux系统的共用分区;以及将Linux根文件系统子分区加入至动态分区。
在本申请的一个实施例中,将Linux根文件系统子分区加入至动态分区包括:基于Linux根文件系统子分区的子分区容量配置动态分区的分区容量;以及将Linux根文件系统子分区添加至动态分区的分区列表中。
在本申请的一个实施例中,响应于用户输入的系统启动指令,加载初始化文件系统包括:响应于系统启动指令,执行引导加载程序;以及响应于引导加载程序,引导系统内核加载初始化文件系统。
在本申请的一个实施例中,通过初始化文件系统解析动态分区包括:将初始化文件系统确定为临时根文件系统;挂载临时根文件系统,并通过临时根文件系统加载物理存储驱动程序和动态分区驱动程序;以及通过物理存储驱动程序访问系统的物理存储设备,并通过动态分区驱动程序解析动态分区的分区结构。
在本申请的一个实施例中,在通过初始化文件系统解析动态分区之后,系统引导方法还包括:将系统根目录从临时根文件系统中切换至物理存储设备的文件系统中。
在本申请的一个实施例中,若挂载子分区为Android系统子分区,则基于挂载子分区启动挂载子分区对应的系统包括:加载Android系统子分区中的Android根文件系统;通过系统内核启动Android根文件系统中的Android用户空间进程;以及通过Android用户空间进程启动Android应用运行时间环境和Android系统服务。
在本申请的一个实施例中,若挂载子分区为Linux根文件系统子分区,则基于挂载子分区启动挂载子分区对应的系统包括:加载Linux根文件系统子分区中的Linux根文件系统;通过系统内核启动Linux根文件系统中的Linux用户空间进程;以及通过Linux用户空间进程启动Linux系统服务。
在本申请实施方式的第二方面中,提供了一种系统引导装置,用于执行如第一方面中任一项所述的系统引导方法,包括:文件系统加载模块,用于响应于用户输入的系统启动指令加载初始化文件系统;分区解析模块,用于通过初始化文件系统解析动态分区,并基于动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息;系统选择模块,用于将系统选项信息发送给用户,并接收用户反馈的系统选择结果;以及系统启动模块,用于根据系统选择结果确定挂载子分区,并基于挂载子分区启动挂载子分区对应的系统。
在本申请的一个实施例中,系统引导装置还包括分区处理模块,分区处理模块用于:将引导加载程序存放分区、内核存放分区和用户数据存放分区确定为Android系统和Linux系统的共用分区;以及将Linux根文件系统子分区加入至动态分区。
在本申请的一个实施例中,分区处理模块用于:基于Linux根文件系统子分区的子分区容量配置动态分区的分区容量;以及将Linux根文件系统子分区添加至动态分区的分区列表中。
在本申请的一个实施例中,文件系统加载模块用于:响应于系统启动指令,执行引导加载程序;以及响应于引导加载程序,引导系统内核加载初始化文件系统。
在本申请的一个实施例中,分区解析模块用于:将初始化文件系统确定为临时根文件系统;挂载临时根文件系统,并通过临时根文件系统加载物理存储驱动程序和动态分区驱动程序;以及通过物理存储驱动程序访问系统的物理存储设备,并通过动态分区驱动程序解析动态分区的分区结构。
在本申请的一个实施例中,系统引导装置还包括根目录切换模块,根目录切换模块用于:将系统根目录从临时根文件系统中切换至物理存储设备的文件系统中。
在本申请的一个实施例中,若挂载子分区为Android系统子分区,则系统启动模块用于:加载Android系统子分区中的Android根文件系统;通过系统内核启动Android根文件系统中的Android用户空间进程;以及通过Android用户空间进程启动Android应用运行时间环境和Android系统服务。
在本申请的一个实施例中,若挂载子分区为Linux根文件系统子分区,则系统启动模块用于:加载Linux根文件系统子分区中的Linux根文件系统;通过系统内核启动Linux根文件系统中的Linux用户空间进程;以及通过Linux用户空间进程启动Linux系统服务。
本申请第三方面提供一种电子设备,包括:处理器;以及存储器,其上存储有用于系统引导的可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。
本申请第四方面提供一种非暂时性机器可读存储介质,其上存储有用于系统引导的可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的方法。
本申请实施方式提供的技术方案具有以下有益效果:
本申请实施方式提供的系统引导方法、装置、电子设备和存储介质,通过响应于用户输入的系统启动指令,加载初始化文件系统,进而通过初始化文件系统解析动态分区,并基于动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息,将系统选项信息发送给用户,并接收用户反馈的系统选择结果,从而能够让用户按照使用需求进行系统选择操作,达到同时兼顾Android和Linux的各自优点的效果,可以给用户带来更大的灵活性和定制性。
进一步地,本申请能够根据系统选择结果确定挂载子分区,并基于挂载子分区启动挂载子分区对应的系统,从而在融合Android和Linux两个系统的情况下,能够分别正常地独立运行Android系统和Linux系统,避免系统间相互影响的状况,提升系统运行稳定性。
总的来说,本申请能够在融合Android和Linux两个系统的情况下,按照用户需求来选择启动Android系统或Linux系统,提升系统选择灵活性的同时,降低开发维护的成本。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
图1示意性地示出了适于实现本申请实施方式的示例性计算系统100的框图;
图2示意性地示出了根据本申请一实施例的系统引导方法的流程示意图;
图3示意性地示出了根据本申请又一实施例的系统引导方法的流程示意图;
图4示意性地示出了根据本申请再一实施例的系统引导方法的流程示意图;
图5示意性地示出了根据本申请一实施例的系统引导装置的结构示意图;
图6示意性地示出了根据本申请实施例的电子设备的示意框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于实现本申请实施方式的示例性计算系统100的框图。如图1所示,计算系统100可以包括:中央处理单元(CPU)101、随机存取存储器(RAM)102、只读存储器(ROM)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本申请范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
本领域技术人员知道,本申请的实施方式可以实现为一种系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本申请还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本申请实施例的方法的流程图和设备(或系统)的框图描述本申请的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
根据本申请的实施方式,提出了一种系统引导方法和设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本申请的若干代表性实施方式,详细阐释本申请的原理和精神。
发明概述
本申请人发现,Android和Linux两者的关系比较密切,Android采用Linux作为内核,对Linux内核做了一定修改,使其适应移动设备上的应用。可以说,Android继承于Linux,为用户提供的核心系统服务包括安全、内存管理、进程管理、网络组和驱动模型等内容,发展至今Android已经独立成了一套完善的操作系统。既然Android和Linux都具有各自的优点,那么如果能够在同一个嵌入式设备上支持Android和Linux双系统,就能够同时兼顾Android和Linux的各自优点,可以给用户带来更大的灵活性和定制性,提供更丰富的业务内容,满足用户的不同需求,从而提高生产力。
基于此,本申请技术方案通过响应于用户输入的系统启动指令,加载初始化文件系统,进而通过初始化文件系统解析动态分区,并基于动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息,将系统选项信息发送给用户,并接收用户反馈的系统选择结果,从而能够让用户按照使用需求进行系统选择操作,达到同时兼顾Android和Linux的各自优点的效果,可以给用户带来更大的灵活性和定制性。
进一步地,本申请能够根据系统选择结果确定挂载子分区,并基于挂载子分区启动挂载子分区对应的系统,从而在融合Android和Linux两个系统的情况下,能够分别正常地独立运行Android系统和Linux系统,避免系统间相互影响的状况,提升系统运行稳定性。
总的来说,本申请能够在融合Android和Linux两个系统的情况下,按照用户需求来选择启动Android系统或Linux系统,提升系统选择灵活性的同时,降低开发维护的成本。
在介绍了本申请的基本原理之后,下面具体介绍本申请的各种非限制性实施方式。
应用场景总览
本申请实施方式的系统引导方法适用于需要兼顾运行Android系统和Linux系统的嵌入式设备中,例如词典笔或者听力训练设备等等,示例性地,可以在用户日常使用嵌入式设备时运行Android系统,而在嵌入式设备开发升级的过程中运行Linux系统。利用本申请实施方式的系统引导方法能够在融合Android和Linux两个系统的情况下,按照用户需求来选择启动Android系统或Linux系统,提升系统选择灵活性的同时,降低开发维护的成本。
示例性方法
下面参考图2来描述根据本申请示例性实施方式的系统引导方法。需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
在步骤S201中,响应于用户输入的系统启动指令,加载初始化文件系统。前述的系统启动指令可以是系统上电时所输入的指令。前述的初始化文件系统即initramfs,initramfs可以将一个通过cpio压缩的包含有根文件系统的文件、目录、节点的描述包直接释放到预先分配的虚拟rootfs(根文件系统)的内存区域中,当系统内核引导到挂载根文件系统这一步时,initramfs可以作为系统的根文件系统使用,此时无需物理存储设备参与。
initramfs可以在操作系统内核编译时一同构建,并与系统内核一起打包在一个镜像文件boot.img中。制作initramfs时可以对一个通用的rootfs(根文件系统)进行裁剪,只保持/usr/bin,/usr/lib/,/etc/,/inittab等等关键系统文件,然后将当前rootfs目录下的所有文件通过cpio-H newc-o添加压缩到rootfs.cpio中。示例性地,将文件添加压缩到rootfs.cpio中可以通过“find.|cpio-H newc-o>../rootfs.cpio”来实现。
进一步地,通过gzip将rootfs.cpio进行压缩,示例性地,通过gzip将rootfs.cpio进行压缩可以通过“gzip../rootfs.cpio”来实现。压缩后所生成的rootfs.cpio.gz就是initramfs使用的镜像。然后编译系统内核时,需要在系统内核的配置中打开如下宏:
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="<path_to>/rootfs.cpio.gz"
可以理解的是,initramfs的构建方式可以是多样的,在实际应用中,需根据实际应用情况来确定initramfs的构建方式,本申请在此方面不作任何限制。
在步骤S202中,通过初始化文件系统解析动态分区,并基于动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息。当初始化文件系统完成加载后,接下来的操作都可以在内存中完成,从而能够通过加载合适的驱动程序来访问物理储存设备,并且能够解析物理储存设备中的动态分区。在本申请实施例中,动态分区可以是指Android系统分区中的super分区。
进一步地,上述的系统选项信息可以是通过初始化文件系统进行实现。其中,系统选项信息可以是对用户展示的系统选择UI界面,在该系统选择UI界面中可以布局有Android系统选项和Linux系统选项以供用户进行选择。系统选项信息也可以是提供给用户的操作说明,通过检测用户的操作来确定系统选择结果,例如是告知用户在嵌入式设备上电启动过程中按下嵌入式设备中的某个按键则进入Linux系统,若不按该按键则进入Android系统。
在步骤S203中,将系统选项信息发送给用户,并接收用户反馈的系统选择结果。假若系统选项信息为系统选择UI界面,则在设备上电后生成该UI画面展示给用户,并且接收用户通过点击、触碰等方式确定系统选择UI界面中的选项后反馈的系统选择结果。
假若系统选项信息为操作说明,该操作说明可以通过通知的形式在设备上电后展示给用户,也可以在设备说明书中进行告知。进而在设备上电过程中检测用户的操作动作,进而根据用户的操作动作来确定系统选择结果。
可以理解的是,系统选项信息的形式可以是多样的,在实际应用中,可以根据实际应用情况来确定系统选项信息的形式,本申请在此方面不作任何限制。
在步骤S204中,根据系统选择结果确定挂载子分区,并基于挂载子分区启动挂载子分区对应的系统。前述的挂载子分区是指根据系统选择结果而确定需要进行挂载的子分区,其中,挂载子分区可以为Android system子分区或Linux rootfs子分区。可以理解的是,当挂载子分区为Android system子分区时,则启动Android系统;而当挂载子分区为Linux rootfs子分区时,则启动Linux系统。
本申请通过响应于用户输入的系统启动指令,加载初始化文件系统,进而通过初始化文件系统解析动态分区,并基于动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息,将系统选项信息发送给用户,并接收用户反馈的系统选择结果,从而能够让用户按照使用需求进行系统选择操作,达到同时兼顾Android和Linux的各自优点的效果,可以给用户带来更大的灵活性和定制性。进一步地,本申请能够根据系统选择结果确定挂载子分区,并基于挂载子分区启动挂载子分区对应的系统,从而在融合Android和Linux两个系统的情况下,能够分别正常地独立运行Android系统和Linux系统,避免系统间相互影响的状况,提升系统运行稳定性。总的来说,本申请能够在融合Android和Linux两个系统的情况下,按照用户需求来选择启动Android系统或Linux系统,提升系统选择灵活性的同时,降低开发维护的成本。
在一些实施例中,在系统启动之前需要对Android系统和Linux系统的系统内核和分区布局进行处理,以便能够对Android系统和Linux系统进行融合。下文将结合图3来对此进行详细说明。图3示意性地示出了根据本申请又一实施例的系统引导方法的流程示意图,请参阅图3,本申请实施例示出的系统引导方法可以包括:
在步骤S301中,将引导加载程序存放分区、内核存放分区和用户数据存放分区确定为Android系统和Linux系统的共用分区。Android系统尽管使用了Linux内核,但Android系统通常会使用经过定制的版本,包含了一些Android系统特定的修改和功能,包括对电源管理、内存管理和其他硬件相关功能。另外,Android系统和传统的Linux系统之间的主要区别在于用户空间上。从最基本的libc库就有了区别,Android系统使用Bionic libc,而Linux系统通常采用glibc,这样的区别让两者的系统库、服务和应用都无法兼容,而且Android系统拥有的用户界面和应用框架是基于Android Runtime(ART)或Dalvik虚拟机构筑的JAVA运行环境,这使得Android系统上层的实现跟Linux系统更加大相径庭。
具体地,Android系统的系统架构由下层至上层主要包含硬件平台、Android系统内核及设备驱动程序、硬件抽象层、本地库、Android运行时环境、Java API框架和应用APP。其中,硬件平台即hardware,可以包含有CPU、GPU、Camera、屏幕和传感器等等。Android系统内核及设备驱动程序即kernel&Device Driver,其为Android系统的底层部分,基于Linux内核构建的。该Android系统内核负责管理硬件资源,如处理器、内存、驱动程序支持等。设备驱动程序则负责与设备的底层硬件通信,以便应用程序和操作系统能够与硬件进行交互。硬件抽象层即是Android HAL(Hardware Abstraction Layer),HAL是位于Android系统和设备驱动程序之间的抽象层,其提供一个标准接口,使Android系统能够与各种硬件设备进行通信,而不需要了解底层硬件的具体细节。本地库即是Native Lib,通常被称为NativeLibraries,其为Android使用C/C++编写的本地库,该本地库提供了底层功能,例如图形渲染、音频处理和硬件访问。开发人员可以在需要更高性能的情况下使用本地库,以获得更好的性能。Android运行时环境即是Android Runtime(ART),ART是一种AOT(Ahead-of-Time)编译器,可以提高应用程序的性能和效率,负责执行Android应用程序的字节码。Java API框架即是Java API Framework,Java API框架包括了许多库和类,用于构建Android应用程序,包括用户界面、网络通信、数据存储、多媒体处理等等。应用APP是Android系统中的最高层,是由开发人员创建的软件,每个应用都运行在自己的独立进程中,具有自己的用户界面和功能。应用可以通过Java API框架与系统和硬件进行交互,并使用本地库来获得更高性能。由launcher提供的桌面环境提供给用户使用。
另外,Linux系统的系统架构相较于Android系统的系统架构要简单,但多数的架构概念都很相似。Linux系统的系统架构由下层至上层主要包含硬件平台,Linux系统内核及设备驱动程序、硬件抽象层、Linux系统服务和应用APP。其中,Linux的硬件平台和Android的硬件平台都是指hardware,可以包含有CPU、GPU、Camera、屏幕和传感器等等。Linux系统内核及设备驱动程序是Linux操作系统的底层部分,Linux系统内核负责管理硬件资源,如处理器、内存、驱动程序支持等。Linux的硬件抽象层即Linux HAL(HardwareAbstraction Layer),HAL是位于Linux系统和设备驱动程序之间的抽象层,其提供了一个标准接口,使Linux系统能够与各种硬件设备进行通信,而不需要了解底层硬件的具体细节。Linux系统服务即是Linux Services,Linux上存在很多系统服务,这些系统服务提供了底层功能,例如网络支持,音频处理,图像显示。Linux的应用APP与Android的应用APP一样,均是由开发人员创建的软件。每个应用都运行在自己的独立进程中,具有自己的用户界面和功能。由一个桌面程序作为入口提供给用户使用。
传统的双系统方案就是不对原有的Android和Linux系统架构做任何修改,仍然保持原貌。而在本申请实施例中,可以将Android系统内核和Linux系统内核进行统一合并,形成通用系统内核。Android和Linux系出同源,上层差异性大,但底层差异性小。其中,就相同点来说,Android系统内核由Linux系统内核派生而出,两者的进程管理、内存管理、文件系统和设备驱动程序等核心组件都是相同的。对于系统内核的功能特性,两者都采用了模块化设计,这意味着它们可以将不必要的模块删除或禁用,以减少系统的复杂性和大小,或者可以比较容易的启用一些模块,来添加指定的特性。
另外,就不同点来说,Android系统内核进行了一些独立的演进,比如Android系统的目标是移动设备,非常注重电源管理,Android系统内核增加了wakelock机制来辅助功耗管理。又比如为了让Android系统上的应用开发更容易,引入了binder实现IPC通信。再比如为了增强安全性,启用了selinux来做安全管理,实现应用沙箱机制。但是,Android系统内核独立演进的特性其实完全可以在Linux系统内核上使用,而且Linux系统内核的主线上也会吸收Android的一些优秀设计理念,在Linux系统内核上支持相关的特性。
由此可见,若在同一个硬件平台上,由于外围硬件相同,因此完全可以使用一个通用系统内核来支持Android系统和Linux系统,使得两个系统相互融合度更高。在Android系统内核与Linux系统内核的演进中,由于每个内核版本变更较多,基于Linux的设备在升级到新版本内核时可能会遇到问题。因此,SoC供应商采用LTS(长期稳定)版本标准化设备,可直接获取Linux内核社区的错误修复和安全更新。Android系统也使用LTS内核更新设备。AOSP(Android Open Source Project,Android开放源代码项目)通用内核是kernel.org内核的下游,包含Android社区相关但未合并到主线或LTS内核的补丁,包括向后移植的上游功能、上游开发阶段的Android设备功能和对其他合作伙伴有用的OEM功能。
其中,android-mainline是Android功能的主要开发分支,定期合并LinuxMainline内核。AOSP通用内核由android-mainline分支出,以递增方式构建,避免大规模向前移植和测试。当上游声明新的LTS时,AOSP通用内核从android-mainline分支出。由于AOSP通用内核源自android-mainline,从而可以在上游声明LTS版本前启动项目,并可轻松切换到新分支。
综上所述,Android系统内核的mainline是基于新的Linux稳定版内核发布后,再合并了Android的修改,其中包含了Linux系统内核。因此,在本申请实施例中,通用系统内核可以以Android系统内核为基础。进一步地,在同一SoC芯片平台上,SoC供应商会在芯片上完成相关的内核移植,在使用时,只需按照具体需求,通过开启或关闭内核相关配置开关即可完成内核切换。
在另一方面,Linux系统的分区布局主要包含引导加载程序存放分区(BL分区)、内核存放分区(boot分区)、rootfs分区和用户数据存放分区(userdata分区)。其中,BL分区用于存放bootloader;boot分区用于存放Linux系统内核;rootfs分区用于存放根文件系统,该根文件系统中包含着Linux系统服务、linux应用APP和运行Linux应用APP所需要的系统库;userdata分区用于存放Linux应用APP数据和用户数据。
Android系统的分区布局主要包含引导加载程序存放分区、内核存放分区、recovery分区、metadata和vbmeta分区、Super分区(动态分区)和用户数据存放分区。其中,引导加载程序存放分区也是用于存放bootloader;内核存放分区用于存放Android系统内核;recovery分区用于存放一份小Linux系统,用于Android系统的异常恢复;metadata和vbmeta分区用于存储加密所需的key、证书、签名等;userdata分区用于存放Android应用APP数据和用户数据;Super分区是个动态分区,其内部还有若干个子分区,包含super.metadata、super.system、super.vendor和super.product,具体地,super.metadata是存储着动态分区的分区表,用于标识各动态分区的位置、大小、组合关系;super.system存贮着Andorid的系统库、系统服务、框架和核心应用,相当于是Linux的rootfs;super.vendor和super.product是当前硬件平台专属的一些系统库以及核心应用。
在本申请实施例中,由于Linux系统的引导加载程序存放分区、内核存放分区以及用户数据存放分区和Android系统的引导加载程序存放分区、内核存放分区以及userdata分区作用基本相同,因此可以将引导加载程序存放分区、内核存放分区和用户数据存放分区确定为Android系统和Linux系统的共用分区。另外,Android系统的recovery分区、metadata和vbmeta分区依然保持由Android系统使用。
在步骤S302中,将Linux根文件系统子分区加入至动态分区。Android系统的Super分区(即动态分区)采用的是Linux的device-mapper技术,相对于Linux系统的静态分区,动态分区可以在OTA(在线升级)过程中,动态的调整super.system、super.vendor和super.product的大小,不用为了升级预留出固定的空间,空间灵活变更,提高了存储器的使用率。
在本申请实施例中,可以将Linux根文件系统子分区(rootfs分区)加入至动态分区中作为动态分区中的一个子分区。动态分区中的super.metadata、super.system、super.vendor和super.product仍由Android系统使用。
具体地,首先可以基于Linux根文件系统子分区的子分区容量配置动态分区的分区容量。可以在Android编译时,通过配置将Linux rootfs作为Super分区中增加的一个子分区。由于需要增加Linux rootfs子分区,因此整个Super分区的容量需要扩张,可以在BoardConfig.mk中通过“BOARD_SUPER_PARTITION_SIZE:=<size-in-bytes>”进行修改,以配置Super分区的容量。然后,可以将Linux根文件系统子分区添加至动态分区的分区列表中。在一些应用场景中,对于使用更新组的设备,可以在BOARD_SUPER_PARTITION_GROUPS变量中列出这些组,每个组名称都有一个BOARD_group_SIZE和BOARD_group_PARTITION_LIST变量。进而可以将系统放入group_sys,将linux rootfs和super.vendor和super.product等Android分区放入group_oem,示例性地,可以采用如下代码实现:
BOARD_SUPER_PARTITION_GROUPS:=group_sys group_oem
BOARD_GROUP_SYS_SIZE:=4831838208
BOARD_GROUP_SYS_PARTITION_LIST:=system
BOARD_GROUP_OEM_SIZE:=6610612736
BOARD_GROUP_OEM_PARTITION_LIST:=vendor product linux_rootfs
Andorid的super分区使用的是device-mapper的liner类型的虚拟盘类型。device-mapper是Linux内核映射块设备的一种技术框架,提供的一种从逻辑设备(虚拟设备)到物理设备的映射框架机制。liner类型用于将多个物理devices连接成一个大的逻辑区,或者将几个物理设备重新组合为新的几个逻辑分区。在Linux中增加device-mapper支持,需要做一些修改,其中可以包含如下几项:
+CONFIG_MD=y
+CONFIG_DAX=y
+CONFIG_BLK_DEV_DM=y
+CONFIG_LDM_PARTITION=y
启动运行后可以看到/sys/class/misc/device-mapper新节点,以及/proc/devices里新增的block设备253device-mapper,表示驱动已经添加成功。而Linux应用部分需要编译LVM2这个包,在buildroot的配置文件中增加如下package,编译到linux的根文件系统中。
BR2_PACKAGE_LVM2
BR2_PACKAGE_LVM2_STANDARD_INSTALL
BR2_PACKAGE_LVM2_APP_LIBRARY
编译后,在usr/sbin下可以看到dmsetup工具、lvm工具、man-generator工具和liblvm2cmd.so。由于Super分区使用的是device-mapper的liner类型的虚拟盘类型,因此可以通过dmsetup工具直接管理,但Android的Super分区跟标准的Linux DM分区稍微有一点区别,主要是Super分区前面存在一个metadata分区,用于描述后面DM分区组织形式。解析metadata分区可以将Andorid下的lpdump工具集在Linux下重新编译,然后可以借助编译出来liblp.so和libsparse.so提供的相关函数解析了metadata的信息。根据获取的metadata信息内的device-mapper liner组织信息,Linux即可以用Linux下的dmsetup工具,按照Andorid Spuer分区里的所有子分区的组织形式,用dmsetup来挂载为DM分区,从而实现Linux对Super分区的访问。
在步骤S303中,响应于用户输入的系统启动指令,加载初始化文件系统。具体地,首先可以响应于系统启动指令,执行引导加载程序(bootloader,bootloader是设备上的低级程序,负责初始化核心硬件和加载操作系统),然后可以响应于引导加载程序,引导系统内核加载初始化文件系统。
在步骤S304中,通过初始化文件系统解析动态分区。在本申请实施例中,首先可以将初始化文件系统确定为临时根文件系统。initramfs采用的是通过cpio压缩的包含了根文件系统的文件、目录、节点的描述语言包,该cpio格式压缩的文件会被链接进入通用系统内核中特殊的数据段.init.ramfs上,其中全局变量_initramfs_start和_initramfs_end分别指向这个数据段的起始地址和结束地址。通用系统内核启动时会对.init.ramfs段中的数据进行解压,然后使用其作为临时的根文件系统。
然后,可以挂载临时根文件系统,并通过临时根文件系统加载物理存储驱动程序和动态分区驱动程序。在initramfs作为临时根文件系统挂载后,所有的操作都可以在内存中完成,因此可以轻松加载物理存储驱动程序和动态分区驱动程序,在物理存储驱动程序和动态分区驱动程序加载后,就可以通过物理存储驱动程序访问系统的物理存储设备,并通过动态分区驱动程序解析动态分区的分区结构。
在步骤S305中,将系统根目录从临时根文件系统中切换至物理存储设备的文件系统中。由此一来即可根据用户选择的系统,选择切换到Linux的根文件系统或者Android的根文件系统,进而启动Linux或Android系统。
在一些实施例中,可以根据用户的系统选择结果来运行Android系统的启动程序或Linux系统的启动程序。下文将结合图4来对Android系统的启动程序和Linux系统的启动程序进行详细描述。图4示意性地示出了根据本申请再一实施例的系统引导方法的流程示意图,请参阅图4,本申请实施例示出的系统引导方法可以包括:
在步骤S401中,将系统选项信息发送给用户,并接收用户反馈的系统选择结果。在本申请实施例中,步骤S401的内容与步骤S203的内容实质相同,此处不再进行赘述。
在步骤S402中,根据系统选择结果确定挂载子分区。可以理解的是,若用户选择了Android系统选项或执行了选择Android系统的操作,那么可以确定挂载子分区为Super分区中的Android系统(Android system)子分区。若用户选择了Linux系统选项或执行了选择Linux系统的操作,那么可以确定挂载子分区为Super分区中的Linux根文件系统(Linuxrootfs)子分区。
在步骤S403中,若挂载子分区为Android系统子分区,则基于Android系统子分区启动Android系统。具体地,首先可以加载Android系统子分区中的Android根文件系统(Android rootfs),为Android引导启动提供根文件系统,创建核心目录结构,使系统能够尽早加载和执行程序。然后可以通过通用系统内核启动Android根文件系统中的Android用户空间进程。其中,该Android用户空间进程是指Android rootfs中名为init的第一个用户空间进程,其用于负责启动和管理其他用户空间进程。接着,可以通过Android用户空间进程启动Android应用运行时间环境和Android系统服务,Android系统服务可以包含电池管理、网络管理、界面管理等。之后Android系统服务中的启动器(Launcher)开始运行,显示用户的主屏幕和应用程序列表。
在步骤S404中,若挂载子分区为Linux根文件系统子分区,则基于Linux根文件系统子分区启动Linux系统。具体地,首先可以加载Linux根文件系统子分区中的Linux根文件系统,为Linux引导启动提供根文件系统,创建核心目录结构,使系统能够尽早加载和执行程序。然后,可以通过系统内核启动Linux根文件系统中的Linux用户空间进程,Linux用户空间进程是指Linux rootfs中名为init的第一个用户空间进程,其负责启动和管理其他用户空间进程。接着,可以通过Linux用户空间进程启动Linux系统服务,之后桌面程序开始运行,显示用户的主屏幕和应用程序列表。
示例性设备
在介绍了本申请示例性实施方式的方法之后,接下来,参考图5和图6对本申请示例性实施方式的系统引导方法的相关产品进行描述。
图5示意性地示出了根据本申请一实施例的系统引导装置的结构示意图,请参阅图5,本申请实施例示出的系统引导装置可以包括:
文件系统加载模块501,用于响应于用户输入的系统启动指令加载初始化文件系统;
分区解析模块502,用于通过初始化文件系统解析动态分区,并基于动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息;
系统选择模块503,用于将系统选项信息发送给用户,并接收用户反馈的系统选择结果;以及
系统启动模块504,用于根据系统选择结果确定挂载子分区,并基于挂载子分区启动挂载子分区对应的系统。
本申请示出的系统引导装置,通过响应于用户输入的系统启动指令,加载初始化文件系统,进而通过初始化文件系统解析动态分区,并基于动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息,将系统选项信息发送给用户,并接收用户反馈的系统选择结果,从而能够让用户按照使用需求进行系统选择操作,达到同时兼顾Android和Linux的各自优点的效果,可以给用户带来更大的灵活性和定制性。进一步地,本申请能够根据系统选择结果确定挂载子分区,并基于挂载子分区启动挂载子分区对应的系统,从而在融合Android和Linux两个系统的情况下,能够分别正常地独立运行Android系统和Linux系统,避免系统间相互影响的状况,提升系统运行稳定性。总的来说,本申请能够在融合Android和Linux两个系统的情况下,按照用户需求来选择启动Android系统或Linux系统,提升系统选择灵活性的同时,降低开发维护的成本。
在一个实施例中,系统引导装置还包括分区处理模块,分区处理模块用于:将引导加载程序存放分区、内核存放分区和用户数据存放分区确定为Android系统和Linux系统的共用分区;以及将Linux根文件系统子分区加入至动态分区。
在一个实施例中,分区处理模块用于:基于Linux根文件系统子分区的子分区容量配置动态分区的分区容量;以及将Linux根文件系统子分区添加至动态分区的分区列表中。
在一个实施例中,文件系统加载模块用于:响应于系统启动指令,执行引导加载程序;以及响应于引导加载程序,引导系统内核加载初始化文件系统。
在一个实施例中,分区解析模块用于:将初始化文件系统确定为临时根文件系统;挂载临时根文件系统,并通过临时根文件系统加载物理存储驱动程序和动态分区驱动程序;以及通过物理存储驱动程序访问系统的物理存储设备,并通过动态分区驱动程序解析动态分区的分区结构。
在一个实施例中,系统引导装置还包括根目录切换模块,根目录切换模块用于:将系统根目录从临时根文件系统中切换至物理存储设备的文件系统中。
在一个实施例中,若挂载子分区为Android系统子分区,则系统启动模块用于:加载Android系统子分区中的Android根文件系统;通过系统内核启动Android根文件系统中的Android用户空间进程;以及通过Android用户空间进程启动Android应用运行时间环境和Android系统服务。
在一个实施例中,若挂载子分区为Linux根文件系统子分区,则系统启动模块用于:加载Linux根文件系统子分区中的Linux根文件系统;通过系统内核启动Linux根文件系统中的Linux用户空间进程;以及通过Linux用户空间进程启动Linux系统服务。
图6示意性地示出了根据本申请实施例的电子设备的示意框图。请参阅图6,电子设备600可以包括处理器601。进一步,该电子设备还可以包括存储器602,其存储有计算机指令,当所述计算机指令由所述处理器601运行时,使得所述电子设备600执行根据前文多个实施例或实施方式所述的方法。
在一些实施场景中,电子设备600可以包括服务器或者终端设备,例如物理服务器、云端服务器、服务器集群、数据处理装置、应用测试机器人、电脑终端、智能终端、PC设备和物联网终端等等。
根据不同的实施场景,上文的处理器601可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
基于上文,本申请还公开了一种计算机可读存储介质,包含程序指令,当所述程序指令由处理器执行时,使得实现根据前文多个实施例或实施方式所述的方法。
在一些实施场景中,上述计算机可读存储介质可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(StaticRandom-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic RandomAccess Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(HybridMemory Cube)等等,或者可以用于存储所需信息并且可以由应用程序、模块或两者访问的任何其他介质。任何这样的计算机存储介质可以是设备的一部分或可访问或可连接到设备。本发明描述的任何应用或模块可以使用可以由这样的计算机可读介质存储或以其他方式保持的计算机可读/可执行指令来实现。
应当注意,尽管在上文详细描述中提及了系统引导装置的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本申请的精神和原理,但是应该理解,本申请并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本申请旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (10)
1.一种系统引导方法,其特征在于,包括:
响应于用户输入的系统启动指令,加载初始化文件系统;
通过所述初始化文件系统解析动态分区,并基于所述动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息;
将所述系统选项信息发送给所述用户,并接收所述用户反馈的系统选择结果;以及
根据所述系统选择结果确定挂载子分区,并基于所述挂载子分区启动所述挂载子分区对应的系统。
2.根据权利要求1所述的系统引导方法,其特征在于,在所述响应于用户输入的系统启动指令,加载初始化文件系统之前,所述系统引导方法还包括:
将引导加载程序存放分区、内核存放分区和用户数据存放分区确定为Android系统和Linux系统的共用分区;以及
将所述Linux根文件系统子分区加入至所述动态分区。
3.根据权利要求2所述的系统引导方法,其特征在于,所述将所述Linux根文件系统子分区加入至所述动态分区包括:
基于所述Linux根文件系统子分区的子分区容量配置所述动态分区的分区容量;以及
将所述Linux根文件系统子分区添加至所述动态分区的分区列表中。
4.根据权利要求1所述的系统引导方法,其特征在于,所述响应于用户输入的系统启动指令,加载初始化文件系统包括:
响应于所述系统启动指令,执行引导加载程序;以及
响应于所述引导加载程序,引导系统内核加载所述初始化文件系统。
5.根据权利要求1所述的系统引导方法,其特征在于,所述通过所述初始化文件系统解析动态分区包括:
将所述初始化文件系统确定为临时根文件系统;
挂载所述临时根文件系统,并通过所述临时根文件系统加载物理存储驱动程序和动态分区驱动程序;以及
通过所述物理存储驱动程序访问系统的物理存储设备,并通过所述动态分区驱动程序解析所述动态分区的分区结构。
6.根据权利要求5所述的系统引导方法,其特征在于,在所述通过所述初始化文件系统解析动态分区之后,所述系统引导方法还包括:
将系统根目录从所述临时根文件系统中切换至所述物理存储设备的文件系统中。
7.根据权利要求4所述的系统引导方法,其特征在于,若所述挂载子分区为所述Android系统子分区,则所述基于所述挂载子分区启动所述挂载子分区对应的系统包括:
加载所述Android系统子分区中的Android根文件系统;
通过所述系统内核启动所述Android根文件系统中的Android用户空间进程;以及
通过所述Android用户空间进程启动Android应用运行时间环境和Android系统服务。
8.一种系统引导装置,其特征在于,用于执行如权利要求1-7中任一项所述的系统引导方法,包括:
文件系统加载模块,用于响应于用户输入的系统启动指令加载初始化文件系统;
分区解析模块,用于通过所述初始化文件系统解析动态分区,并基于所述动态分区中的Android系统子分区和Linux根文件系统子分区生成系统选项信息;
系统选择模块,用于将所述系统选项信息发送给所述用户,并接收所述用户反馈的系统选择结果;以及
系统启动模块,用于根据所述系统选择结果确定挂载子分区,并基于所述挂载子分区启动所述挂载子分区对应的系统。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,其上存储有用于系统引导的可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的方法。
10.一种非暂时性机器可读存储介质,其上存储有用于系统引导的可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311641879.3A CN117667234A (zh) | 2023-12-01 | 2023-12-01 | 系统引导方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311641879.3A CN117667234A (zh) | 2023-12-01 | 2023-12-01 | 系统引导方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667234A true CN117667234A (zh) | 2024-03-08 |
Family
ID=90085823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311641879.3A Pending CN117667234A (zh) | 2023-12-01 | 2023-12-01 | 系统引导方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667234A (zh) |
-
2023
- 2023-12-01 CN CN202311641879.3A patent/CN117667234A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227579B (zh) | 一种Docker容器构建方法及Docker管理控制台 | |
CN101470621B (zh) | 虚拟机配置系统 | |
CN112416524A (zh) | 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置 | |
US20080028401A1 (en) | Software executables having virtual hardware, operating systems, and networks | |
US20070067769A1 (en) | Method and apparatus for providing cross-platform hardware support for computer platforms | |
US20070050765A1 (en) | Programming language abstractions for creating and controlling virtual computers, operating systems and networks | |
US20070074192A1 (en) | Computing platform having transparent access to resources of a host platform | |
US20070283324A1 (en) | System and method for creating programs that comprise several execution layers | |
US20070050770A1 (en) | Method and apparatus for uniformly integrating operating system resources | |
CN103345406A (zh) | 一种实现智能移动终端的云端虚拟移动终端的系统和方法 | |
CN103530156A (zh) | 动态加载和调用程序的方法及装置 | |
WO2019079080A1 (en) | USE OF SEMANTIC ANNOTATIONS TO ORDER COMPATIBILITY BEHAVIORS | |
CN115629971A (zh) | 一种应用的开发系统和开发方法 | |
CN104866324A (zh) | 一种便携操作系统构建方法及便携存储器 | |
US9110758B2 (en) | Cross-platform software framework for embedded systems on data storage device | |
CN114461182A (zh) | 流水线构建的方法、装置、电子设备及计算机可读存储介质 | |
CN116685946A (zh) | 在不停止应用的执行的情况下的更新的共享库的重新加载 | |
CN113656040A (zh) | 程序组件调试更新方法及其相应的装置、设备、介质 | |
WO2014145147A1 (en) | Web services provided from software framework | |
CN117667234A (zh) | 系统引导方法、装置、电子设备和存储介质 | |
WO2021093442A1 (zh) | 一种边缘辅助部署第三方应用到微控制器方法及系统 | |
CN113961232A (zh) | 提供集成开发环境的终端、方法和平台服务器 | |
CN112306539A (zh) | 一种单片机应用层开发方法、系统、终端及介质 | |
AFREEN | Mobile Applications Development | |
Al-Bokhaiti et al. | Customization and Optimization of Android Operating System for Custom Board with the Implementation of an Administrative Tool |
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 |