内存文件系统加载方法及装置的制作方法

文档序号:6333018阅读:140来源:国知局
专利名称:内存文件系统加载方法及装置的制作方法
技术领域
本发明实施例涉及计算机技术,尤其涉及一种内存文件系统加载方法及装置。
背景技术
Initrd内存文件系统是一种用于Linux引导系统启动的根文件系统,包含各种可 执行程序和设备驱动程序。hitrd内存文件系统可通过gzip格式和cpio格式双重打包。 Initrd内存文件系统可与操作系统内核绑定在一起,作为内核的一部分进行加载。对于一 些没有硬盘、flash等的存储介质或者某些有特殊要求的应用场景中,会要求使用内存文件 系统引导系统启动。^itrd内存文件系统以其优越性被通常被Iinux嵌入式操作系统选作 此功能。系统在启动过程中,引导加载程序bootlader将gzip格式的hitrd内存文件系 统镜像加载到内存中,并且向操作系统的内核(Kernel)传递hitrd内存文件系统镜像在 内存中的位置和大小。Kernel启动时根据这些信息读取hitrd内存文件系统镜像并进行 解压缩,将解压缩后的^itrd内存文件系统镜像挂载为根文件系统。然而,内核kernel在加载hitrd内存文件系统镜像时,将hitrd内存文件系统 镜像中所有的节点都解压到内存,导致内核的启动速度相对较慢,而且系统占用内存空间 较大,因此现有的内存文件系统加载过程效率较低。

发明内容
本发明实施例提供一种内存文件系统加载方法及装置,提高了内核启动速度,减 少了内存空间的占用。本发明实施例提供一种内存文件系统加载方法,包括根据内存文件系统在内存中的信息从所述内存读取所述内存文件系统;所述内存 文件系统包括启动文件和高压缩比的应用数据文件;解压所述内存文件系统后,将所述内存文件系统挂载为根文件系统;在解压所述 内存文件系统的过程中不对所述内存文件系统中包括的高压缩比的应用数据文件进行解 压;将所述内存文件系统中高压缩比的应用数据文件挂载到所述根文件系统的应用 数据文件目录。本发明实施例提供一种内存文件系统加载装置,包括读取模块,用于根据内存文件系统在内存中的信息从所述内存读取所述内存文件 系统;所述内存文件系统包括启动文件和高压缩比的应用数据文件;解压模块,用于解压所述内存文件系统,在解压所述内存文件系统的过程中不对 所述内存文件系统中包括的高压缩比的应用数据文件进行解压;根系统挂载模块,用于将所述内存文件系统挂载为根文件系统;应用数据文件挂载模块,用于将所述内存文件系统中高压缩比的应用数据文件挂载到所述根文件系统的应用数据文件目录。本发明实施例内存文件系统加载方法及装置,在操作系统启动挂载根文件系统过 程中只解压了内存文件系统中启动时必要的启动文件,没有对包含在内存文件系统中的高 压缩比应用数据文件进行解压。因此,提高了操作系统内核的启动速度,减少了系统内存的 占用率,从而提高了内存文件系统的加载效率。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中 所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施 例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图 获得其他的附图。图IA为本发明提供的内存文件系统加载方法实施例一流程图;图IB为本发明提供的内存文件系统加载方法实施例一中内存文件系统的目录结 构和制作过程示意图;图2为本发明提供的内存文件系统加载方法实施例二流程图;图3A为本发明提供的内存文件系统加载方法实施例三流程图;图;3B为本发明提供的内存文件系统加载方法实施例三中内存文件系统的目录结 构和制作过程示意图;图4为本发明提供的内存文件系统加载装置实施例一结构示意图;图5为本发明提供的内存文件系统加载装置实施例二结构示意图;图6为本发明提供的内存文件系统加载装置实施例三结构示意图;图7为本发明提供的内存文件系统加载装置实施例四结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图IA为本发明提供的内存文件系统加载方法实施例一流程图,图IB为本发明提 供的内存文件系统加载方法实施例一中内存文件系统的目录结构和制作过程示意图。本发 明实施例,内存文件系统启动时必须的启动文件和不影响内存文件系统系统启动的应用数 据文件分别挂载在不同的目录中,其中,应用数据文件被制作成高压缩比的文件系统(例 如Squash文件系统,Cramfs文件系统)挂载在在根目录下的应用数据文件目录中。如图 IB 所示,根目录下包括 bin、etc、init、lib、proc、home、root、sys、dev 禾口 APP 等目录,bin、 etc、init、lib、proc、home、root、sys和dev等目录下的文件为启动文件。在本实施例中, 将Squash文件系统挂载在/APP目录下,即/APP目录下包括应用数据文件app. img(本实施 例中应用数据文件制作成的Squash文件系统的镜像文件为app. img)。将上述目录文件一 起打包后形成内存文件系统(如图IB所示,制作成的内存文件系统的镜像文件为initrd. img)。如图IA所示,本实施例包括
步骤11 操作系统内核根据内存文件系统在内存中的信息从内存读取内存文件 系统。Bootloader将内存文件系统拷贝到系统内存并进行校验。在校验通过后, Bootloader引导操作系统内核启动并将内存文件系统在内存的信息,例如在系统内存的位 置和大小等信息,发送给操作系统内核。操作系统内核启动时,根据Bootloader发送的有 关内存文件系统的信息,从内存读取内存文件系统。步骤12 解压内存文件系统后,操作系统内核将内存文件系统挂载为根文件系 统,在解压内存文件系统的过程中不对内存文件系统中包括的高压缩比的应用数据文件解压。操作系统内核读取内存文件系统后对以压缩包形式存在的内存文件系统进行解 压,解压时不对内存文件系统中包括的高压缩比的应用数据文件进行解压。高压缩比的文 件系统的特点是压缩比率高,在使用时可只对使用的文件和所在目录进行解压,而不需对 整个高压缩比文件系统进行解压。操作系统将解压后的内存文件系统挂载为根文件系统。 在操作系统挂载根文件系统过程中,内存文件系统中的应用数据文件仍以高压缩比的文件 形式存在。由于Bootloader已对内存文件系统进行过校验,可以保证内存文件系统的正确 性。因此,操作系统在加载内存文件系统过程中,对内存文件系统不进行校验。通过步骤11和步骤12,操作系统启动过程中的内存文件系统加载已结束。在上述 加载过程中,只解压了与系统启动相关的启动文件,没有对内存文件系统中与具体应用相 关的应用数据文件(例如app. img)进行解压,因此,占用系统内存空间较小,同时系统的启 动速度也得到了提高。步骤13 操作系统将内存文件系统中高压缩比的应用数据文件挂载到根文件系 统的应用数据文件目录。操作系统启动完成后,引导用户级进程hit运行。hit进程通过Loop设备方法 将内存文件系统中的应用数据文件(例如,/APP/app. img)挂载到根文件系统的应用数据 文件目录。hit进程挂载内存文件系统中的应用数据文件后,根文件系统中即可呈现出应 用数据文件。后续使用到应用数据文件中数据时,再对需要使用的数据进行解压,即边使用边 解压。如图2所示,在步骤13之后,还包括步骤14 操作系统读取并解压需要使用的应用数据文件中的数据并启动该应用 数据文件的相应进程。内存文件系统中的应用数据文件以高压缩比文件系统形式存在,由于高压缩比文 件系统的特性,在调用高压缩比文件系统中某一应用数据文件时可以只对使用到的应用数 据文件中数据进行解压,而不对整个高压缩比文件数据进行解压,因而系统过程中占用的 空间也相对较小。本实施例内存文件系统加载方法,在操作系统挂载根文件系统过程中只解压了内 存文件系统中与启动相关的启动文件,没有对包含在内存文件系统中的高压缩比应用数据 文件进行解压。因此,提高了操作系统的启动速度,减少了系统内存的占用率,从而提高了 内存文件系统的加载效率。进一步,操作系统在使用内存文件系统中的应用数据时,只对使 用到的应用数据文件中数据进行解压,并不对内存文件系统中所有的应用数据进行解压,因而减少了系统运行过程中内存空间的占用率。图3A为本发明提供的内存文件系统加载方法实施例三流程图,图:3B为本发明提 供的内存文件系统加载方法实施例三中内存文件系统的目录结构和制作过程示意图。本实 施例与实施例一、实施例二的区别在于本实施例以采用NDS (condition access,为一家专 门从事数据安全加密的认证机构)安全规范的Iinux系统和^iitrd内存文件系统为例,说 明本发明内存文件系统的制作过程和加载方法的技术方案。采用本发明实施例加载内存文件系统之前,需对内存文件系统的目录结构和文件 进行处理。按照NDS规范裁减mini型root目录文件,如图所示,在root目录下建立 bin、etc、init、lib、proc、home、root、sys、dev和NDS等目录。其中,与内存文件系统启动 相关的启动文件挂载在bin、etc、init、lib、proc、home、root、sys和dev等目录中;NDS目 录用于挂载不影响内存文件系统启动的应用数据文件。将不影响内存文件系统启动的(与 具体应用相关,例如中间件)应用数据文件形成目录树后,使用工具将目录树制作成高压 缩比文件系统,例如Squash文件系统,之后将高压缩比文件系统拷贝至root目录文件的/ NDS目录中。最后将root目录文件打包制作成hitrd内存文件系统(如图所示,制作 成的hitrd内存文件系统的镜像文件为initrd. img)烧至FLASH中。如图3A所示,本实施例包括步骤31 =FGDL将hitrd内存文件系统拷贝到系统内存。FGDL (Foregroud Down Loader)为 NDS 的弓丨导力口载程序 Bootloader。步骤32 =FGDL引导Kernel启动,并将hitrd内存文件系统在内存的信息发送给 Kernel οFGDL将^iitrd内存文件系统拷贝到系统内存中检验通过后,引导Kernel启动。步骤33 =Kernel根据hitrd内存文件系统在内存中的信息从内存读取hitrd内 存文件系统。步骤34 =Kernel解压hitrd内存文件系统后,将hitrd内存文件系统挂载为根 文件系统。Kernel在解压^itrd内存文件系统的过程中不对其中包括的高压缩比的应用 数据文件进行解压。Kernel将hitrd内存文件系统挂载为root文件系统。步骤35 =Init进程将内存文件系统中的/NDS/nds. img挂载到根文件系统的/NDS 目录。hit进程使用脚本,利用Iinux的loop设备方法/NDS/nds. img挂载到/NDS。Loop 设备是一种设备驱动程序,通过Loop设备可将文件作为块设备挂载在系统中,使系统可识 别文件。步骤36 操作系统读取并解压/NDS目录下需要使用的应用数据文件中数据后,启 动该应用数据文件的进程。在启动一应用数据文件的进程时,只解压启动该应用数据文件的进程所使用到的 数据。后续使用到该应征文件中其它数据时,再对需要使用的数据进行解压。对于高压缩 比文件系统,采用边使用边解压的方式调用其中的应用数据,从而节省了系统内存。本实施例内存文件系统加载方法,在Kernel挂载根文件系统过程中只解压了 Initrd内存文件系统中与启动相关的启动文件,没有对包含在^iitrd内存文件系统中的高压缩比文件系统/NDS/nds. img进行解压。因此,提高了操Kernel的启动速度,减少了系 统内存的占用率,从而提高了 ^itrd内存文件系统的加载效率。图4为本发明提供的内存文件系统加载装置实施例一结构示意图。如图4所示,本 实施例包括读取模块41、解压模块42、根系统挂载模块43和应用数据文件挂载模块44。读取模块41,用于根据内存文件系统在内存中的信息从内存读取内存文件系统; 内存文件系统包括启动文件和高压缩比的应用数据文件。解压模块42,用于解压内存文件系统,在解压内存文件系统的过程中不对内存文 件系统中包括的高压缩比的应用数据文件进行解压。根系统挂载模块43,用于将内存文件系统挂载为根文件系统。应用数据文件挂载模块44,用于将内存文件系统中高压缩比的应用数据文件挂载 到根文件系统的应用数据文件目录。具体地,读取模块41用于根据内存文件系统在内存中的信息从内存读取内存文 件系统。解压模块42用于解压读取模块41读取的内存文件系统,在解压内存文件系统的 过程中不对内存文件系统中包括的高压缩比的应用数据文件进行解压。根系统挂载模块43 用于将解压模块42解压后的内存文件系统挂载为根文件系统。应用数据文件挂载模块44, 用于将解压模块42解压后的内存文件系统中的应用数据文件挂载到根文件系统的应用数 据文件目录。如图5所示,在图4的基础上还包括接收模块45。接收模块45,用于接收引导加载程序发送的内存文件系统在内存中的信息。上述各模块的工作机理参见图IA对应实施例中描述,在此不赘述。如图6所示,在图5的基础上还包括应用数据文件解压模块46。应用数据文件解压模块46,用于读取并解压需要使用的应用数据文件中的数据, 并启动应用数据文件的相应进程。上述各模块的工作机理参见图2、图3A和和图;3B对应实施例中描述,在此不赘述。本实施例内存文件系统加载装置,在操作系统内核挂载根文件系统过程中解压模 块42只解压了内存文件系统中与启动相关的启动文件,没有对包含在内存文件系统中的 高压缩比应用数据文件进行解压。因此,提高了操作系统内核的启动速度,减少了系统内存 的占用率,从而提高了内存文件系统的加载效率。进一步,操作系统在使用内存文件系统中 的应用数据时,应用数据文件解压模块46只对使用到的应用数据文件中数据进行解压,并 不对内存文件系统中所有的应用数据进行解压,因而减少了系统运行过程中内存空间的占 用率。图7为本发明提供的内存文件系统加载装置实施例四结构示意图。如图7所示, 在图6基础上,本实施例还包括高压模块61和打包模块62、高压模块61,用于将具有目录树结构的应用数据文件进行高压比压缩后,拷贝到 内存文件系统的应用数据文件目录中。打包模块62,用于将启动文件与经高压比压缩的应用数据文件打包成内存文件系 统。上述各模块的工作机理参见图3A和图;3B对应实施例中描述,在此不赘述。本实施例内存文件系统加载装置,通过高压模块61将内存文件系统的应用数据文件进行高压比压缩后,再通过打包模块62将启动文件与经高压比压缩的应用数据文件 打包成内存文件系统,使启动文件和应用数据文件分别存储在不同的目录中,有利于后续 内存文件系统挂载过程中提高操作系统启动速度。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者 光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
1.一种内存文件系统加载方法,其特征在于,包括根据内存文件系统在内存中的信息从所述内存读取所述内存文件系统,所述内存文件 系统包括启动文件和高压缩比的应用数据文件;解压所述内存文件系统后,将所述内存文件系统挂载为根文件系统;在解压所述内存 文件系统的过程中不对所述内存文件系统中包括的高压缩比的应用数据文件进行解压;将所述内存文件系统中高压缩比的应用数据文件挂载到所述根文件系统的应用数据 文件目录。
2.根据权利要求1所述内存文件系统加载方法,其特征在于,还包括读取并解压需要使用的应用数据文件中的数据,并启动所述应用数据文件的相应进程。
3.根据权利要求1所述内存文件系统加载方法,其特征在于,在所述根据内存文件系 统在内存中的信息从所述内存读取所述内存文件系统之前,还包括将具有目录树结构的所述应用数据文件进行高压比压缩后,拷贝到所述内存文件系统 的应用数据文件目录中;将所述启动文件与经高压比压缩的所述应用数据文件打包成所述内存文件系统。
4.根据权利要求1、2或3所述内存文件系统加载方法,其特征在于,在根据内存文件系 统在内存中的信息从所述内存读取所述内存文件系统之前,还包括接收引导加载程序发送的所述内存文件系统在内存中的信息。
5.一种内存文件系统加载装置,其特征在于,包括读取模块,用于根据内存文件系统在内存中的信息从所述内存读取所述内存文件系 统;所述内存文件系统包括启动文件和高压缩比的应用数据文件;解压模块,用于解压所述内存文件系统,在解压所述内存文件系统的过程中不对所述 内存文件系统中包括的高压缩比的应用数据文件进行解压;根系统挂载模块,用于将所述内存文件系统挂载为根文件系统; 应用数据文件挂载模块,用于将所述内存文件系统中高压缩比的应用数据文件挂载到 所述根文件系统的应用数据文件目录。
6.根据权利要求5所述内存文件系统加载装置,其特征在于,还包括应用数据文件解压模块,用于读取并解压需要使用的应用数据文件中的数据,并启动 所述应用数据文件的相应进程。
7 根据权利要求6所述内存文件系统加载装置,其特征在于,还包括高压模块,用于将具有目录树结构的所述应用数据文件进行高压比压缩后,拷贝到所 述内存文件系统的应用数据文件目录中;打包模块,用于将所述启动文件与经高压比压缩的所述应用数据文件打包成所述内存 文件系统。
8.根据权利要求7所述内存文件系统加载装置,其特征在于,还包括接收模块,用于接收引导加载程序发送的所述内存文件系统在内存中的信息。
全文摘要
本发明实施例提供一种内存文件系统加载方法及装置。该方法包括根据内存文件系统在内存中的信息从内存读取内存文件系统;内存文件系统包括启动文件和高压缩比的应用数据文件;解压内存文件系统后,将内存文件系统挂载为根文件系统;在解压内存文件系统的过程中不对内存文件系统中包括的高压缩比的应用数据文件进行解压;将内存文件系统的应用数据文件挂载到根文件系统的应用数据文件目录;读取并解压需要使用的应用数据文件中的数据,并启动应用数据文件的相应进程。本发明实施例提高了操作系统内核的启动速度,减少了系统内存的占用率。
文档编号G06F9/445GK102141923SQ20101029670
公开日2011年8月3日 申请日期2010年9月28日 优先权日2010年9月28日
发明者秦绍天 申请人:华为终端有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1