CN114756296A - 可读写挂载启动方法、装置、存储介质及电子设备 - Google Patents

可读写挂载启动方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN114756296A
CN114756296A CN202210411712.7A CN202210411712A CN114756296A CN 114756296 A CN114756296 A CN 114756296A CN 202210411712 A CN202210411712 A CN 202210411712A CN 114756296 A CN114756296 A CN 114756296A
Authority
CN
China
Prior art keywords
mounting
preset
read
file
partition
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
CN202210411712.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.)
Spreadtrum Communications Shanghai Co Ltd
Original Assignee
Spreadtrum Communications Shanghai 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 Spreadtrum Communications Shanghai Co Ltd filed Critical Spreadtrum Communications Shanghai Co Ltd
Priority to CN202210411712.7A priority Critical patent/CN114756296A/zh
Publication of CN114756296A publication Critical patent/CN114756296A/zh
Pending legal-status Critical Current

Links

Images

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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • 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
    • G06F9/4451User profiles; Roaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提出了一种可读写挂载启动方法、装置、存储介质及电子设备,所述方法包括:解析预设的静态信息文件获取到挂载信息,根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令以及将需要挂载的分区在指定挂载点挂载;运行只读检查程序完成挂载。所述方法利用系统原生特性和OverlayFS功能,使呈现的文件系统既满足读写需求,又保证了数据安全,避免了对系统启动性能的影响。

Description

可读写挂载启动方法、装置、存储介质及电子设备
【技术领域】
本申请实施例涉及系统管理技术领域,尤其涉及一种可读写挂载启动方法、装置、存储介质及电子设备。
【背景技术】
在嵌入式设备中,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统,其主要负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取和删除等。根据读写权限的不同,文件系统可划分为只读文件系统和可读写文件系统,只读文件系统的文件只能被读取而不能被修改,可读写文件系统的文件可以被读取和修改。为了确保重要数据不被篡改,通常分区挂载只读文件系统来限制操作系统的读写权限。但是在只读文件系统中存在某些文件,如配置文件、日志文件和存放在/var目录下的一些软连接文件,都会要求在系统启动中有可写权限来保存系统实时数据。一般的处理方式是在系统启动后将只读文件加载到内存中,在内存中修改这些文件。但是设备掉电后,内存中的数据会丢失,二次开机后需要重新加载。如果文件占用空间很大,也会对开机性能造成影响,增加系统启动时间并造成内存空间浪费。
因此,提供一种既能保障用户权限与数据安全,又能省去在内存中搬运文件、避免对启动性能造成影响的技术方案,是本领域技术人员亟需解决的问题。
【发明内容】
本申请实施例提供了一种可读写挂载启动方法,以实现文件系统既满足读写需求,又保证数据安全,还避免对启动性能的影响,以及整个文件系统的鲁棒性。
第一方面,本申请实施例提供一种可读写挂载启动方法,应用于电子设备,包括:系统启动后解析预设的静态信息文件获取到挂载信息,根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,以及将需要挂载的分区在指定挂载点挂载;运行只读检查程序对所需读写分区进行只读检查,若确定所述所需读写分区为只读状态,则根据系统默认配置完成挂载。
第一方面的有益效果,所述方法利用系统原生特性和OverlayFS功能,使呈现的文件系统既满足读写需求,又保证了数据安全,避免了对系统启动性能的影响。
在一种可能的实现方式中,所述根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,包括:将所述电子设备中只读文件系统的原始数据目录挂载为只读分区,并定义为下层文件系统;在所述电子设备中挂载可读写分区,并在所述可读写分区里创建与所述原始数据目录对应的用户目录,并定义为上层文件系统;通过OverlayFS将所述下层文件系统和所述上层文件系统相融合,以使对所述原始数据目录的写操作自动映射到所述用户目录中。
在一种可能的实现方式中,在所述运行只读检查程序对所需读写分区进行只读检查步骤前,还包括:运行预设的挂载点检查程序检查所述需要挂载的分区是否挂载成功,若未挂载成功,则根据预设的挂载配置信息重新挂载。
在一种可能的实现方式中,当所述电子设备采用busybox或者sysvinit启动方式时,所述预设的挂载点检查程序为预设的挂载点检查脚本;当所述电子设备采用systemd启动方式时,所述预设的挂载点检查程序为预设的挂载点检查服务。
在一种可能的实现方式中,所述预设的挂载点检查程序提供所述重新挂载所需的挂载点目录接口、源目录接口和目标目录接口,以及提供检查挂载接口、检查大小接口和复位接口。
在一种可能的实现方式中,所述预设的静态信息文件的生成流程包括:编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;所述编译器调用预设的第一编译规则文件,根据所述预设的第一编译规则文件和所述编译变量值进行系统分区挂载点组合关系的填充,生成静态信息文件软件包,将所述静态信息文件软件包安装到根文件系统中,得到预设的静态信息文件,其中所述预设的静态信息文件集成有额外文件系统分区的创建挂载点命令和只读目录OverlayFS挂载命令。
在一种可能的实现方式中,所述预设的挂载点检查程序和预设的挂载配置信息的生成流程包括:编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;所述编译器调用预设的第二编译规则文件,根据所述预设的第二编译规则文件和所述编译变量值,将预设的挂载点检查程序、所述编译变量中申明的启动服务、以及所述启动服务所需要的预设的挂载配置信息安装到根文件系统中。
在一种可能的实现方式中,所述根据所述预设的第一编译规则文件和所述编译变量值进行系统分区挂载点组合关系的填充,包括:通过启动方式、硬件设备参数、存储设备类型、文件系统类型四个方面对所述填充的过程划分颗粒度。
在一种可能的实现方式中,所述预先定义的编译变量包括通配符和通用变量,所述编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值的步骤前,还包括:所述编译器根据所述电子设备的系统特性对所述通配符和所述通用变量进行重定义。
第二方面,本申请实施例提供一种可读写挂载启动装置,应用于电子设备,包括:分区挂载模块,用于系统启动后解析预设的静态信息文件获取到挂载信息,根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,以及将需要挂载的分区在指定挂载点挂载;只读检查模块,用于运行只读检查程序对所需读写分区进行只读检查,若确定所述所需读写分区为只读状态,则根据系统默认配置完成挂载。
在一种可能的实现方式中,所述分区挂载模块包括联合挂载子模块,所述联合挂载子模块用于根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,所述联合挂载子模块包括:只读分区单元,用于将所述电子设备中只读文件系统的原始数据目录挂载为只读分区,并定义为下层文件系统;读写分区单元,用于在所述电子设备中挂载可读写分区,并在所述可读写分区里创建与所述原始数据目录对应的用户目录,并定义为上层文件系统;融合处理单元,用于通过OverlayFS将所述下层文件系统和所述上层文件系统相融合,以使对所述原始数据目录的写操作自动映射到所述用户目录中。
在一种可能的实现方式中,所述装置还包括:挂载检查模块,用于运行预设的挂载点检查程序检查所述需要挂载的分区是否挂载成功,若未挂载成功,则根据预设的挂载配置信息重新挂载。
在一种可能的实现方式中,所述装置还包括:第一软件编译模块,用于生成所述预设的静态信息文件;所述第一软件编译模块包括:第一获取模块,用于编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;第二获取模块,用于所述编译器调用预设的第一编译规则文件,根据所述预设的第一编译规则文件和所述编译变量值进行系统分区挂载点组合关系的填充,生成静态信息文件软件包,将所述静态信息文件软件包安装到根文件系统中,得到预设的静态信息文件,其中所述预设的静态信息文件集成有额外文件系统分区的创建挂载点命令和只读目录OverlayFS挂载命令。
在一种可能的实现方式中,所述装置还包括:第二软件编译模块,用于生成所述预设的挂载点检查程序和预设的挂载配置信息;所述第二软件编译模块包括:第一获取模块,用于编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;第三获取模块,用于所述编译器调用预设的第二编译规则文件,根据所述预设的第二编译规则文件和所述编译变量值,将预设的挂载点检查程序、所述编译变量值中申明的启动服务、以及所述启动服务所需要的预设的挂载配置信息安装到根文件系统中。
第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面提供的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面提供的方法。
应当理解的是,本申请实施例的第二~四方面与本申请实施例的第一方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
【附图说明】
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种可读写挂载启动方法的流程示意图;
图2为本申请实施例提供的一种执行只读目录OverlayFS挂载命令的方法流程示意图;
图3为本申请实施例提供的一种OverlayFS目录结构的示意图;
图4为本申请实施例提供的另一种可读写挂载启动方法的流程示意图;
图5为本申请实施例提供的一种软件编译方法的流程示意图;
图6为本申请实施例提供的另一种软件编译方法的流程示意图;
图7为本申请实施例提供的一种可读写挂载启动装置的结构示意图;
图8为本申请实施例提供一种电子设备的结构示意图。
【具体实施方式】
为了更好的理解本说明书的技术方案,下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本说明书保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
为便于本领域技术人员对本申请的技术方案进行理解,下面对本申请所涉及的技术术语进行说明。
(1)嵌入式设备:应用于对可靠性、实时性有较高要求场景,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的定制化设备。
(2)OverlayFS:Linux操作系统提供的一种联合文件系统,其实现了两个不同文件路径的合并,分别作为只读的底层文件系统和可读写的上层文件系统,在最终呈现的对象中,上层文件内容优先,并可通过标记的方式使得通过OverlayFS挂载的对象表现为被标记内容被删除,而实际内容不变。
(3)/etc/fstab:是用来存放文件系统的静态信息文件,当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。
(4)只读文件系统:为了保护分区中已有数据内容不被破坏,通常Linux在挂载文件系统时就采用read-only只读方式挂载,以此来达到保护数据功能。
(5)Yocto:是一个开源的软件生态。它提供模板,工具和方法来帮助开发人员创建基于Linux的定制系统,这些系统专为嵌入式产品而设计。
(6)bb/bbappend:是编译控制文件,定义从哪获取软件源码、如何配置、如何编译、如何安装到文件系统等。
现有相关技术中,随着人工智能物联网AIOT的兴起,越来越多的嵌入式设备融入人们的日常生活。随着使用人数和设备种类的增多,对于设备稳定性和数据安全性提出了更多的要求。为了保护linux系统的一些重要数据,linux系统通常选用只读文件系统来确保关键数据的稳定性并保证不被篡改。但是在只读文件系统中的某些文件,如配置文件、日志文件和存放在/var目录下的一些软连接文件,都会在linux系统启动中要求有可写权限。所以,通常的做法是在系统开后将需要有读写权限的文件加载到内存中,在内存中修改这些文件。但是掉电后,内存中的数据会丢失,二次开机后需要重新加载。如果是文件特别大,也会对开机性能造成影响,增加系统启动时间。
为了解决只读文件系统中部分目录和文件要求可读可写权限问题以及通用方案造成的启动较慢问题,本申请实施例基于容器化方案提供了一种可读写但不改变安全策略的可读写挂载启动方法,保障了用户权限与数据安全,同时也省去在内存中搬运文件,避免了对启动性能的影响。
图1为本申请实施例提供的一种可读写挂载启动方法的流程示意图,所述可读写挂载启动方法可以应用于电子设备,如图1所示,所述可读写挂载启动方法可以包括:
步骤101:系统启动后解析预设的静态信息文件获取到挂载信息,根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,以及将需要挂载的分区在指定挂载点挂载。
需要说明的是,当系统启动的时候,系统会自动的从静态信息文件读取信息,并且会自动将静态信息文件中指定的文件系统挂载到指定的目录。基于系统开机后根据静态信息文件配置自动完成分区挂载的特性,这里的预设的静态信息文件是在软件编译阶段进行增量修改后的静态信息文件,集成了只读目录OverlayFS挂载命令。
其中,OverlayFS是一种联合文件系统,可以将多个目录的内容叠加到另一个目录上。OverlayFS并不直接涉及磁盘空间结构,看起来像是将多个目录的文件按照规则合并到同一个目录,且对多个源目录具体使用文件系统类型没有要求,即使各个源目录的文件系统类型不同也不影响使用。利用OverlayFS功能,可以实现只读的底层文件系统和可读写的上层文件系统合并,最终呈现的文件系统既满足读写需求,也保证了数据安全。
步骤102:运行系统的只读检查程序对所需读写分区进行只读检查,若确定所述所需读写分区为只读状态,则根据系统默认配置完成挂载。
需要说明的是,系统的只读检查程序是系统启动流程中原生的程序,通过只读检查程序检查确定所需读写分区是否是只读状态,若为只读状态则根据系统默认配置完成挂载,保证系统可以正常开机运行。
本申请实施例提供的可读写挂载启动方法,利用系统原生特性和OverlayFS功能,使呈现的文件系统既满足读写需求,又保证了数据安全,同时还省去在内存中搬运文件,避免了对系统启动性能的影响。
进一步的,图2为本申请实施例提供的一种执行只读目录OverlayFS挂载命令的方法流程示意图,如图2所示,基于容器化方案,所述根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,可以包括:
步骤201:将所述电子设备中只读文件系统的原始数据目录挂载为只读分区,并定义为下层文件系统;
步骤202:在所述电子设备中挂载可读写分区,并在所述可读写分区里创建与所述原始数据目录对应的用户目录,并定义为上层文件系统;
步骤203:通过OverlayFS将所述下层文件系统和所述上层文件系统相融合,以使对所述原始数据目录的写操作自动映射到所述用户目录中。
需要说明的是,上述采用的只读目录OverlayFS挂载方式在保持只读文件系统分区中原始数据副本唯一并且只读属性的前提下,在可读写分区内例如userdata分区创建上层文件系统upperdir的可读可写目录结构,利用OverlayFS的联合挂载系统,实现只读文件系统分区目录和可读可写分区目录合并,分别作为只读的底层文件系统和可读写的上层文件系统。在最终呈现的对象中,上层文件内容优先,并可通过标记的方式使得通过OverlayFS挂载的对象表现为被标记内容被删除,而实际内容不变,从而保障了用户权限与数据安全;同时,也省去在内存中搬运文件,避免了对启动性能的影响。
示例性的,对只读文件系统中需要可读写权限的文件在挂载中做如下处理:将所述电子设备中只读文件系统原始数据/var/lib、/var/cache、/var/spool、/home等映射到只读分区或被挂载为只读分区,在所述电子设备中挂载一个userdata分区即数据文件可读可写分区,并在所述userdata分区里面建立用户目录,即/mnt/userdata/var/lib、mnt/userdata/var/cache、mnt/userdata/var/spool、mnt/userdata/home等,所述OverlayFS文件系统将所述原/var/lib、/var/cache、/var/spool、/home和所述/mnt/userdata/var/lib、mnt/userdata/var/cache、mnt/userdata/var/spool、mnt/userdata/home相融合,完成融合挂载点挂载。对于最终文件系统或用户来说,对操作系统中文件融合后的目录结构不感知,还是保持对/var/lib、/var/cache、/var/spool、/home等目录的访问,此时所有系统或用户的写操作都将自动映射到/mnt/userdata/var/lib、mnt/userdata/var/cache、mnt/userdata/var/spool、mnt/userdata/home中,从而体现为原本只读的下层文件系统变成了可读写的文件系统从而避免了系统原生访问路径的破坏。当需要对电子设备实现userdata分区恢复时,只需要将所述/mnt/userdata/var/lib、mnt/userdata/var/cache、mnt/userdata/var/spool、mnt/userdata/home目录删除即可,既能保证快速恢复userdata分区,又能保留原只读分区的内容。
可以理解的是,其他基于Linux特性采用OverlayFS方式实现可读分区的可读写挂载的方法也是可以的,本申请实施例对采用OverlayFS的方式不作限定。
图3为本申请实施例提供的一种OverlayFS目录结构的示意图,如图3所示,在根文件系统tmpfs提供只读的原始共享数据,此时电子设备可用只读方式读取共享数据,将该根文件系统定义为下层文件系统(Lower Dir)。然后定义电子设备具有完整读写权限的空间作为上层文件系统(Upper Dir)。最后通过OverlayFS联合挂载为仅用户可见的OverlayFS挂载对象(Merge Dir)。此时电子设备对该OverlayFS挂载对象具有完整的可读写权限,且OverlayFS挂载对象具备上层文件系统优先的特性:(1)若同一数据可在上层文件系统中获取,则实际访问上层文件系统,上层文件系统无数据时再实际访问下层文件系统;(2)新增数据保存在上层文件系统中,若底层文件系统更新了相同数据,则按照(1)的原则,不会实际访问下层文件系统;(3)删除数据时在上层文件系统中做相应标记,被标记内容在联合挂载对象中体现为被删除,而实际下层文件系统内容保持不变。使用户对唯一只读数据可读写,并且不增加原始数据空间占用,不产生额外的安全问题。同时,不需要在可读写区域对原始只读数据进行复制、压缩和解压,避免了对系统性能的影响。同时,由于所述方法是基于linux系统原生特性,因此不会引入新的组件或流程来增加启动时间。
可以理解的是,本实施例适用对象包括但不限于支持只读文件系统文件可读写挂载启动方法的终端设备、linux设备和服务器等。对于终端设备等采用liunx系统启动的设备,本申请实施例所提出的只读目录OverlayFS挂载方法均适用,即可满足对于只读文件的可写需求,也不会降低系统性能。同时对设备多用户环境的存储空间需求降低,可快速复制新的用户环境,并且保持对原始共享数据访问的一致性。对于服务器等采用linux系统的设备,本申请实施例所提出的只读目录OverlayFS挂载方法也可以衍生为多用户对服务器的唯一只读数据安全读写方案。在服务器上采用此方法部署既保持了原始共享数据的唯一性和数据安全,最大程度降低了空间占用,又不影响各用户对数据的写入访问,同时容器共享宿主机内核空间的特性,保证了容器内部署服务与容器外部署的一致性。
在一些实施例中,在采用了OverlayFS方案后,为了确保需要挂载的分区都能成功挂载,可以增加挂载点检查的步骤。
图4为本申请实施例提供的另一种可读写挂载启动方法的流程示意图,如图4所示,在图1所示实施例的基础上,所述步骤101和步骤102之间还可以包括步骤301:
步骤301:运行预设的挂载点检查程序检查所述需要挂载的分区是否挂载成功,若未挂载成功,则根据预设的挂载配置信息重新挂载。
需要说明的是,为了确保需要挂载的分区都挂载成功,在系统启动流程中增加了挂载点检查程序,用于检查所需要挂载的分区是否挂载成功。在采用了OverlayFS挂载方式后,如果因为OverlayFS方案异常导致挂载失败,系统可以通过预设的挂载点检查程序和预设挂载配置信息重新挂载分区,不影响系统正常启动。通过在系统中预置挂载点检查程序,开机后检查静态信息文件中的挂载点是否被成功挂载,确保了整个文件系统的鲁棒性。
在一些实施例中,所述电子设备的系统启动方式可以包括busybox/sysvinit/systemd等启动方式,以下针对各启动方式的启动流程进行介绍。
示例性的,针对Linux系统的busybox/sysvinit启动方式,系统的可读写挂载启动步骤可以包括:(1)首先linux系统启动后会解析/etc/fstab静态信息文件获取到挂载信息,根据获取的挂载信息系统会逐条执行mount–a命令,将fstab静态信息文件中所需要挂载的分区在指定挂载点挂载;(2)启动进程会调用新增的checkmount.sh挂载点检查脚本,根据编译时生成的uni-mount.conf挂载配置信息来再次检查需要挂载的分区是否成功挂载,如果没有挂载的话,那么checkmount.sh挂载点检查脚本会根据uni-mount.conf挂载配置信息对未挂载的分区进行重新挂载,确保所需分区被正确挂载;(3)检查完成后,busybox/sysvinit启动服务会执行原生的read-only-rootfs-hook.sh只读检查脚本来进行只读检查,如果发现所需读写分区只读,那么会根据系统默认配置完成挂载,保证系统可以正常开机运行。
示例性的,针对Linux系统的systemd启动方式,系统的可读写挂载启动步骤包括:(1)首先linux系统启动后会解析/etc/fstab静态信息文件获取到挂载信息,systemd-fstab-generator程序根据获取的挂载信息完成systemd启动所需挂载信息单元生成,然后systemd会根据这些挂载信息单元完成对fstab静态信息文件中所需要挂载的分区在指定挂载点挂载;(2)由于systemd启动具有程序服务并行执行的功能,所以在上述流程完成后,systemd运行编译时生成的checkmount-*.service挂载点检查服务来再次检查需要挂载的分区是否成功挂载。如果没有挂载的话,那么checkmount-*.service会根据编译时生成的挂载配置信息对未挂载的分区进行重新挂载,确保所需分区被正确挂载;(3)检查完成后,systemd启动服务会执行原生的var-volatile-*.service只读检查服务来进行只读检查,如果发现所需读写分区只读,那么会根据系统默认配置完成挂载,保证系统可以正常开机运行。
需要说明的是,本申请所提到的可读写挂载启动方法针对busybox/sysvinit/systemd不同的启动方式均有很好的兼容性。
在一些实施例中,步骤301中所述预设的挂载点检查程序可以提供所述重新挂载所需的挂载点目录接口、源目录接口和目标目录接口,以及提供检查挂载接口、检查大小接口和复位接口。
需要说明的是,所述预设的挂载点检查程序可以提供bind-mount重新挂载的挂载点目录接口part-dir、源目录接口source-dir和目标目录接口dest-dir,将source-dir以bind的方式mount挂载至dest-dir,part-dir为source-dir所在的分区的挂载点。由于bind选项需要两个目录在初始时保持一致;因此需要在第一次mount挂载时,将dest-dir中的内容拷贝至source-dir,拷贝完成后将在part-dir下创建隐藏的标志文件,避免重复拷贝。所述预设的挂载点检查程序还可以提供check检查挂载接口,用于检查/etc/fstab静态信息文件中各条目的挂载是否成功;所述预设的挂载点检查程序还可以提供checksize检查大小接口,用于检查非存储分区中,文件系统的可用大小是否与分区大小匹配;所述预设的挂载点检查程序还可以提供reset复位接口,供恢复出厂设置服务调用,在对userdata进行擦除后,需要根据uni-mount.conf挂载配置信息中的item条目进行一些初始化工作。
在一些实施例中,yocto开源社区对软件功能要求可货架化和软件包化,即以软件包为单位做到单独发布和应用。但是目前只读文件系统分区挂载为可读写的方案,对于软件的修改均为侵入式修改或无法拓展的代码,无法满足社区货架化和包化需求。
为了解决只读文件系统的可读写挂载启动方法中软件修改无法货架化和包化的问题,本申请实施例基于linux系统开机后根据/etc/fstab静态信息文件配置自动完成分区挂载的特性,在软件编译阶段对/etc/fstab静态信息文件内容进行增量修改。
图5为本申请实施例提供的一种软件编译方法的流程示意图,用于生成预设的静态信息文件,所述方法可以包括:
步骤401:编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;
步骤402:所述编译器调用预设的第一编译规则文件,根据所述预设的第一编译规则文件和所述编译变量值进行系统分区挂载点组合关系的填充,生成静态信息文件软件包,将所述静态信息文件软件包安装到根文件系统中,得到预设的静态信息文件,其中所述预设的静态信息文件集成有额外文件系统分区的创建挂载点命令和只读目录OverlayFS挂载命令。
需要说明的是,在启动编译后,编译器解析预设的默认配置文件unisoc-storage.inc和设备差异性配置文件machine.conf取得项目预先定义的编译变量的编译变量值。然后编译器调用静态信息文件fstab对应的预设第一编译规则文件base-files.bbapend,根据上述编译器解析获得的编译变量值进行系统分区挂载点组合关系的填充,并生成最终项目定义的fstab静态信息文件软件包并安装到rootfs根文件系统中。
进一步的,当在所述运行只读检查程序对所需读写分区进行只读检查的步骤前,还包括:运行预设的挂载点检查程序检查所述需要挂载的分区是否挂载成功,若未挂载成功,则根据预设的挂载配置信息重新挂载的步骤时,还需要生成预设的挂载点检查程序和预设的挂载配置信息。
图6为本申请实施例提供的另一种软件编译方法的流程示意图,用于生成预设的挂载点检查程序和预设的挂载配置信息,在图5所示实施例的基础上,所述方法还可以包括:
步骤403:所述编译器调用预设的第二编译规则文件,根据所述预设的第二编译规则文件和所述编译变量值,将预设的挂载点检查程序、所述编译变量值中申明的启动服务、以及所述启动服务所需要的预设的挂载配置信息安装到所述根文件系统中。
需要说明的是,由于在步骤401已经执行了编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值的步骤,因此编译器调用第二编译规则文件non-volatile-mounts.bb,根据上述编译变量值,将用于检查的预设的挂载点检查程序和编译变量中申明的启动服务(busybox\sysvinit\systemd)以及生成的启动服务所需要的预设的挂载配置信息文件安装到rootfs根文件系统中,整个编译流程结束。
需要说明的是,fstab静态信息文件中包含的字段有:file systems挂载分区、dir挂载点、type挂载设备或分区的文件系统类型、options挂载时使用参数、dump是否备份、pass文件系统检查顺序,上述6个字段构成了fstab完整内容。所以在编译过程中,本申请实施例提供的编译过程会根据不同电子设备6个字段的预置参数来最终生成填充好所需挂载字段信息的fstab静态信息文件软件包。同时,也将OverlayFS挂载时所需字段按照要求填充的到fstab静态信息文件中。由于通常kernel支持OverlayFS挂载,所以linux系统根据/etc/fstab静态信息文件,无需额外流程即可实现分区挂载。可以理解的是,其他填充fstab静态信息文件字段的方法也是可以的,本申请实施例对填充静态信息文件字段的方法不作限定。
进一步的,为了实现编译流程和编译产物的货架化,本申请实施例定义了如下编译变量:BASE_FS_TYPE即根文件系统的系统类型,如BASE_FS_TYPE??="ext4";PARTITION_LABEL即带文件系统的非易失存储分区名,如PARTITION_LABEL?="userdata";BASE_FS_TYPE_*即带文件系统的非易失存储分区的文件系统类型,如BASE_FS_TYPE_USERDATA?="ext4";PARTITION_MOUNTPOINT_*即带文件系统的非易失存储分区挂载点,如PARTITION_MOUNTPOINT_userdata?="/mnt/userdata";PARTITION_MOUNTOPTION_*即带文件系统的非易失存储分区挂载选项,如PARTITION_MOUNTOPTION_userdata?="";NON_VOLATILE_OVERLAY即非易失存储与rootfs根文件系统目录之间overlay的对应关系。在设备差异性配置machine.conf中均可对上述变量做override重写,从而实现了多种关系的组合,同时可以适配多种非易失存储设备和文件系统类型。
可以理解的是,针对货架化本申请实施例定义的fstab静态信息文件生成流程中,加入了通配符和通用变量,可以根据电子设备特性对通配符和通用变量进行重定义,从而实现了base-files.bbapend文件的通用性,可以满足busybox/sysvinit/systemd多种启动方式,实现了软件的货架化要求。
进一步的,本申请实施例对于最终的fstab静态信息文件,对完成所需字段填充过程进行约束,可以以启动方式、硬件设备参数、存储设备类型、文件系统类型四个方面对填充过程划分颗粒度,尽可能抽象每个方面的配置参数,使得编译填充流程可以通过修改约定好的参数来完成各种组合关系下的fstab静态信息文件需求,从而实现了fstab静态信息文件生成的货架化。可以理解的是,其他颗粒化配置实现fstab静态信息文件字段填充的方法也是可以的,本申请实施例对颗粒化配置的方法不作限定。
进一步的,本申请实施例可以基于yocto编译平台,通过base-files.bbappend文件来生成特定设备的fstab静态信息文件,同时为userdata/prodnv等额外文件系统分区创建挂载点,并将只读目录OverlayFS挂载命令集成到fstab静态信息文件中,从而实现包化。其中基于yocto的MACHINE_ARCH定义和包生成文件bb的定义,采用bbappend编译控制文件对base-files.bb进行增量式修改,避免侵入式修改,从而实现配置信息文件的包化。
本申请实施例基于linux系统开机后根据/etc/fstab静态信息文件配置自动完成分区挂载的特性,在软件编译阶段对/etc/fstab静态信息文件内容进行增量修改,利用添加的base-files.bbapend文件生成特定设备的fstab静态信息文件,实现了货架化要求和包化。
本申请实施例还提供一种可读写挂载启动装置,图7为本申请实施例提供的一种可读写挂载启动装置的结构示意图,应用于电子设备,如图7所示,所述装置包括:分区挂载模块501和只读检查模块502;其中,分区挂载模块501,用于系统启动后解析预设的静态信息文件获取到挂载信息,根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,以及将需要挂载的分区在指定挂载点挂载;只读检查模块502,用于运行只读检查程序对所需读写分区进行只读检查,若确定所述所需读写分区为只读状态,则根据系统默认配置完成挂载。
在一种可能的实现方式中,所述分区挂载模块501包括联合挂载子模块,所述联合挂载子模块用于根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,所述联合挂载子模块包括:只读分区单元,用于将所述电子设备中只读文件系统的原始数据目录挂载为只读分区,并定义为下层文件系统;读写分区单元,用于在所述电子设备中挂载可读写分区,并在所述可读写分区里创建与所述原始数据目录对应的用户目录,并定义为上层文件系统;融合处理单元,用于通过OverlayFS将所述下层文件系统和所述上层文件系统相融合,以使对所述原始数据目录的写操作自动映射到所述用户目录中。
在一种可能的实现方式中,所述装置还包括:挂载检查模块,用于运行预设的挂载点检查程序检查所述需要挂载的分区是否挂载成功,若未挂载成功,则根据预设的挂载配置信息重新挂载。
在一种可能的实现方式中,所述装置还包括:第一软件编译模块,用于生成所述预设的静态信息文件;所述第一软件编译模块包括:第一获取模块,用于编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;第二获取模块,用于所述编译器调用预设的第一编译规则文件,根据所述预设的第一编译规则文件和所述编译变量值进行系统分区挂载点组合关系的填充,生成静态信息文件软件包,将所述静态信息文件软件包安装到根文件系统中,得到预设的静态信息文件,其中所述预设的静态信息文件集成有额外文件系统分区的创建挂载点命令和只读目录OverlayFS挂载命令。
在一种可能的实现方式中,所述装置还包括:第二软件编译模块,用于生成预设的挂载点检查程序和预设的挂载配置信息;所述第二软件编译模块包括:第一获取模块,用于编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;第三获取模块,用于所述编译器调用预设的第二编译规则文件,根据所述预设的第二编译规则文件和所述编译变量值,将预设的挂载点检查程序、所述编译变量值中申明的启动服务、以及所述启动服务所需要的预设的挂载配置信息安装到所述根文件系统中。
图7所示实施例提供的可读写挂载启动装置可用于执行本说明书图1所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
本申请实施例还提供一种电子设备,图8为本申请实施例提供一种电子设备的结构示意图,该电子设备可以为应用本申请实施例提供的可读写挂载启动方法的设备,如图8所示,所述电子设备可以包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如图1-图6所示实施例提供的可读写挂载启动方法。
示例性的,图8示出了电子设备100的结构示意图。如图8所示,电子设备100可以包括:处理器110、存储器120和外围设备130等部件。可以理解的是,本申请实施例示意的电子设备100的结构并不构成对电子设备100的限定,本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。这些部件可通过一根或多根总线140或信号线进行通信,总线可以分为地址总线、数据总线、控制总线等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
外围设备130可以包括显示器、输出组件,输入组件等器件。
存储器120,用于存储电子设备100的系统所包括的代码和数据,例如应用程序和操作系统对应的代码。存储器120可以包括内存、外部存储器以及寄存器,内存可以用于存储操作系统以及处于运行状态的应用程序对应的代码,外部存储器以及寄存器可以用于存储处于运行状态的应用程序在运行过程中产生的数据,外部存储器还可以用于存储其他未运行的应用程序对应的代码。处理器110可将外部存储器中存储的代码或者数据调存到内存中,以实现该代码定义的功能。例如,处理器110可以在电子设备100开机时,将操作系统对应的代码调存到内存中,从而在电子设备100上实现操作系统的各种功能;处理器110也可以根据用户需求,将其他应用程序对应的代码调存到内存中,从而在电子设备100上实现该应用程序的各种功能。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本说明书图1-图6所示实施例提供的可读写挂载启动方法。
上述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(read onlymemory,ROM)、可擦式可编程只读存储器(erasable programmable read only memory,EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、射频(radio frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本说明书操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(localarea network,LAN)或广域网(wide area network,WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本发明实施例的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本说明书的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程示意图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本说明书的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本说明书的实施例所属技术领域的技术人员所理解。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
需要说明的是,本申请实施例中所涉及的终端可以包括但不限于个人计算机(personal computer,PC)、个人数字助理(personal digital assistant,PDA)、无线手持设备、平板电脑(tablet computer)、手机、MP3播放器、MP4播放器等。
在本说明书所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本说明书各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(processor)执行本说明书各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (16)

1.一种可读写挂载启动方法,其特征在于,应用于电子设备,包括:
系统启动后解析预设的静态信息文件获取到挂载信息,根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,以及将需要挂载的分区在指定挂载点挂载;
运行只读检查程序对所需读写分区进行只读检查,若确定所述所需读写分区为只读状态,则根据系统默认配置完成挂载。
2.根据权利要求1所述的方法,其特征在于,根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,包括:
将所述电子设备中只读文件系统的原始数据目录挂载为只读分区,并定义为下层文件系统;
在所述电子设备中挂载可读写分区,并在所述可读写分区里创建与所述原始数据目录对应的用户目录,并定义为上层文件系统;
通过OverlayFS将所述下层文件系统和所述上层文件系统相融合,以使对所述原始数据目录的写操作自动映射到所述用户目录中。
3.根据权利要求1所述的方法,其特征在于,在所述运行只读检查程序对所需读写分区进行只读检查步骤前,还包括:
运行预设的挂载点检查程序检查所述需要挂载的分区是否挂载成功,若未挂载成功,则根据预设的挂载配置信息重新挂载。
4.根据权利要求3所述的方法,其特征在于,当所述电子设备采用busybox或者sysvinit启动方式时,所述预设的挂载点检查程序为预设的挂载点检查脚本;当所述电子设备采用systemd启动方式时,所述预设的挂载点检查程序为预设的挂载点检查服务。
5.根据权利要求3所述的方法,其特征在于,所述预设的挂载点检查程序提供所述重新挂载所需的挂载点目录接口、源目录接口和目标目录接口,以及提供检查挂载接口、检查大小接口和复位接口。
6.根据权利要求1所述的方法,其特征在于,所述预设的静态信息文件的生成流程包括:
编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;
所述编译器调用预设的第一编译规则文件,根据所述预设的第一编译规则文件和所述编译变量值进行系统分区挂载点组合关系的填充,生成静态信息文件软件包,将所述静态信息文件软件包安装到根文件系统中,得到预设的静态信息文件,其中所述预设的静态信息文件集成有额外文件系统分区的创建挂载点命令和只读目录OverlayFS挂载命令。
7.根据权利要求3所述的方法,其特征在于,所述预设的挂载点检查程序和预设的挂载配置信息的生成流程包括:
编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;
所述编译器调用预设的第二编译规则文件,根据所述预设的第二编译规则文件和所述编译变量值,将预设的挂载点检查程序、所述编译变量中申明的启动服务、以及所述启动服务所需要的预设的挂载配置信息安装到根文件系统中。
8.根据权利要求6所述的方法,其特征在于,所述根据所述预设的第一编译规则文件和所述编译变量值进行系统分区挂载点组合关系的填充,包括:
通过启动方式、硬件设备参数、存储设备类型、文件系统类型四个方面对所述填充的过程划分颗粒度。
9.根据权利要求6或7所述的方法,其特征在于,所述预先定义的编译变量包括通配符和通用变量,所述编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值的步骤前,还包括:
所述编译器根据所述电子设备的系统特性对所述通配符和所述通用变量进行重定义。
10.一种可读写挂载启动装置,其特征在于,应用于电子设备,包括:
分区挂载模块,用于系统启动后解析预设的静态信息文件获取到挂载信息,根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,以及将需要挂载的分区在指定挂载点挂载;
只读检查模块,用于运行只读检查程序对所需读写分区进行只读检查,若确定所述所需读写分区为只读状态,则根据系统默认配置完成挂载。
11.根据权利要求10所述的装置,其特征在于,所述分区挂载模块包括联合挂载子模块,所述联合挂载子模块用于根据所述挂载信息执行只读目录联合文件系统OverlayFS挂载命令,所述联合挂载子模块包括:
只读分区单元,用于将所述电子设备中只读文件系统的原始数据目录挂载为只读分区,并定义为下层文件系统;
读写分区单元,用于在所述电子设备中挂载可读写分区,并在所述可读写分区里创建与所述原始数据目录对应的用户目录,并定义为上层文件系统;
融合处理单元,用于通过OverlayFS将所述下层文件系统和所述上层文件系统相融合,以使对所述原始数据目录的写操作自动映射到所述用户目录中。
12.根据权利要求10所述的装置,其特征在于,还包括:
挂载检查模块,用于运行预设的挂载点检查程序检查所述需要挂载的分区是否挂载成功,若未挂载成功,则根据预设的挂载配置信息重新挂载。
13.根据权利要求10所述的装置,其特征在于,还包括:第一软件编译模块,用于生成所述预设的静态信息文件;所述第一软件编译模块包括:
第一获取模块,用于编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;
第二获取模块,用于所述编译器调用预设的第一编译规则文件,根据所述预设的第一编译规则文件和所述编译变量值进行系统分区挂载点组合关系的填充,生成静态信息文件软件包,将所述静态信息文件软件包安装到根文件系统中,得到预设的静态信息文件,其中所述预设的静态信息文件集成有额外文件系统分区的创建挂载点命令和只读目录OverlayFS挂载命令。
14.根据权利要求12所述的装置,其特征在于,还包括:第二软件编译模块,用于生成预设的挂载点检查程序和预设的挂载配置信息;所述第二软件编译模块包括:
第一获取模块,用于编译器解析预设的默认配置文件和预设的设备差异性配置文件取得预先定义的编译变量的编译变量值;
第三获取模块,用于所述编译器调用预设的第二编译规则文件,根据所述预设的第二编译规则文件和所述编译变量值,将预设的挂载点检查程序、所述编译变量值中申明的启动服务、以及所述启动服务所需要的预设的挂载配置信息安装到根文件系统中。
15.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至9任一所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至9任一所述的方法。
CN202210411712.7A 2022-04-19 2022-04-19 可读写挂载启动方法、装置、存储介质及电子设备 Pending CN114756296A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210411712.7A CN114756296A (zh) 2022-04-19 2022-04-19 可读写挂载启动方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210411712.7A CN114756296A (zh) 2022-04-19 2022-04-19 可读写挂载启动方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN114756296A true CN114756296A (zh) 2022-07-15

Family

ID=82331855

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210411712.7A Pending CN114756296A (zh) 2022-04-19 2022-04-19 可读写挂载启动方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN114756296A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700740A (zh) * 2022-09-29 2023-09-05 荣耀终端有限公司 软件修复方法和相关装置
CN117076005A (zh) * 2023-10-16 2023-11-17 龙芯中科技术股份有限公司 一种应用运行方法、装置、电子设备及存储介质
CN116700740B (zh) * 2022-09-29 2024-06-04 荣耀终端有限公司 软件修复方法和相关装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700740A (zh) * 2022-09-29 2023-09-05 荣耀终端有限公司 软件修复方法和相关装置
CN116700740B (zh) * 2022-09-29 2024-06-04 荣耀终端有限公司 软件修复方法和相关装置
CN117076005A (zh) * 2023-10-16 2023-11-17 龙芯中科技术股份有限公司 一种应用运行方法、装置、电子设备及存储介质
CN117076005B (zh) * 2023-10-16 2024-03-01 龙芯中科技术股份有限公司 一种应用运行方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US6876996B2 (en) Method and apparatus for using a shared library mechanism to facilitate sharing of metadata
JP3550151B2 (ja) ロード・リンキング装置および方法
US7409694B2 (en) Highly componentized system architecture with loadable virtual memory manager
US8434099B2 (en) Efficient linking and loading for late binding and platform retargeting
US7565665B2 (en) Efficient linking and loading for late binding and platform retargeting
US7143421B2 (en) Highly componentized system architecture with a demand-loading namespace and programming model
US8370835B2 (en) Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US7181610B2 (en) Method and system to encapsulate a driver written for an operating system (OS) runtime environment in an OS independent environment firmware extension
JP4608580B2 (ja) ソフトウェア・モジュールを実行する方法及び計算システム
US6728963B1 (en) Highly componentized system architecture with a loadable interprocess communication manager
US8176142B2 (en) Shared JAVA jar files
CN107807839B (zh) 一种修改虚拟机内存数据的方法、装置及电子设备
US20060064576A1 (en) Boot systems and methods
JPH0836488A (ja) ダイナミック・パッチングを使用するランタイム・エラー・チェック方法と装置
US10228993B2 (en) Data dump for a memory in a data processing system
US20090133042A1 (en) Efficient linking and loading for late binding and platform retargeting
Tang et al. Exploring control flow guard in windows 10
US7340719B1 (en) Methods and apparatus to preserve software modifications
CN114756296A (zh) 可读写挂载启动方法、装置、存储介质及电子设备
CN113867768A (zh) 操作系统处理方法、装置、电子设备及存储介质
US7159222B1 (en) Highly componentized system architecture with object mutation
US7178139B2 (en) Executable file system for an embedded computer
KR101140522B1 (ko) 객체 관리 시스템 및 방법
CN106897588B (zh) 一种标签函数的处理方法及装置
CN117075960B (zh) 程序重构方法、应用跨平台迁移方法、装置与计算设备

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