系统启动方法、装置、计算机装置及存储介质与流程

文档序号:17078960发布日期:2019-03-09 00:01阅读:148来源:国知局
系统启动方法、装置、计算机装置及存储介质与流程

本发明涉及操作系统技术领域,尤其涉及一种系统启动方法、装置、计算机装置及存储介质。



背景技术:

随着技术的发展,linux系统的应用越来越广泛,linux系统在启动时需要挂载linux根文件系统(即根文件系统),根文件系统包含了linux在启动时所必须的目录和文件。

现有技术中,为了在linux系统启动以后,使操作系统之上的上层业务程序能够对根文件系统进行读和写,在linux系统启动过程中,会将根文件系统所在的分区以可写方式挂载至根目录。然而,在这种情况下,若上层业务程序对根文件系统进行了错误的写操作,或者恶意修改,又或者是误操作等,都可能对根文件系统形成不可逆转的损害,导致linux系统崩溃或者下一次无法启动。



技术实现要素:

鉴于以上内容,有必要提供一种系统启动方法、装置、计算机装置及存储介质,能够对根文件系统进行读写,并保持根文件系统不被修改,提高根文件系统的安全性以及linux系统运行时稳定性。

本发明提供一种系统启动方法,所述方法包括:

判断linux系统是否启动init进程;

当所述linux系统启动init进程,将所述计算机装置中根文件系统所属的第一分区和所述计算机装置中所述第一分区以外的第二分区通过联合文件系统技术挂载至启动文件系统的联合目录,其中,所述第一分区的挂载属性为只读,所述第二分区的挂载属性为可写;

将所述linux系统的根目录切换为所述联合目录,所述linux系统从所述联合目录获取所述根文件系统进行启动运行。

在本发明可选实施中,所述将所述计算机装置中根文件系统所属的第一分区和所述计算机装置中所述第一分区以外的第二分区通过联合文件系统技术挂载至启动文件系统的联合目录,其中,所述第一分区的挂载属性为只读,所述第二分区的挂载属性为可写,包括:

在所述启动文件系统中创建第一挂载点文件夹以及第二挂载点文件夹;

将所述计算机装置中根文件系统所属的第一分区以可读方式挂载至所述第一挂载点文件夹,将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹;

将所述第一挂载点文件夹与所述第二挂载点文件夹通过aufs技术挂载至所述启动文件系统中的联合目录。

在本发明可选实施例中,所述方法还包括:

接收针对所述根文件系统的写操作指令;

根据所述写操作指令从所述联合目录下获取根文件系统进行写操作,通过所述写操作得到的写文件保存在所述联合目录下;

若检测到所述写文件存在异常,将所述写文件从所述联合目录下删除。

在本发明可选实施中,所述方法还包括:

若检测到所述linux系统异常,格式化所述第二分区。

在本发明可选实施中,所述将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹之后,还包括:

判断所述第二分区是否成功挂载至所述第二挂载点文件夹;

若所述第二分区未成功挂载至所述第二挂载点文件夹,格式化所述第二分区,执行所述将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹的步骤。

在本发明可选实施例中,所述第二分区是根据所述计算机装置的存储介质的大小预先创建的分区,或者所述第二分区是根据历史写操作大小预先创建的分区。

本发明提供还一种系统启动装置,所述装置包括:

判断模块,用于判断linux系统是否启动init进程;

挂载模块,用于当所述linux系统启动init进程,将所述计算机装置中根文件系统所属的第一分区和所述计算机装置中所述第一分区以外的第二分区通过联合文件系统技术挂载至启动文件系统的联合目录,其中,所述第一分区的挂载属性为只读,所述第二分区的挂载属性为可写;

切换模块,用于将所述linux系统的根目录切换为所述联合目录,所述linux系统从所述联合目录获取所述根文件系统进行启动运行。

在本发明可选实施例中,所述挂载模块具体用于:

在所述启动文件系统中创建第一挂载点文件夹以及第二挂载点文件夹;

将所述计算机装置中根文件系统所属的第一分区以可读方式挂载至所述第一挂载点文件夹,将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹;

将所述第一挂载点文件夹与所述第二挂载点文件夹通过aufs技术挂载至所述启动文件系统中的联合目录。

在本发明可选实施例中,所述装置还包括第一修复模块,所述第一修复模块用于:

接收针对所述根文件系统的写操作指令;

根据所述写操作指令从所述联合目录下获取根文件系统进行写操作,通过所述写操作得到的写文件保存在所述联合目录下;

若检测到所述写文件存在异常,将所述写文件从所述联合目录下删除。

在本发明可选实施例中,所述装置还包括第二修复模块,所述第二修复模块用于:

若检测到所述linux系统异常,格式化所述第二分区。

在本发明可选实施例中,所述装置还包括触发模块,所述触发模块用于:

将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹之后,判断所述第二分区是否成功挂载至所述第二挂载点文件夹;

若所述第二分区未成功挂载至所述第二挂载点文件夹,格式化所述第二分区,触发所述挂载模块将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹。

在本发明可选实施例中,所述第二分区是根据所述计算机装置的存储介质的大小预先创建的分区,或者所述第二分区是根据历史写操作大小预先创建的分区。

本发明还提供一种计算机装置,所述计算机装置包括存储器及处理器,所述存储器用于存储至少一个指令,所述处理器用于执行所述至少一个指令以实现任意实施例中所述的系统启动方法。

本发明还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现任意实施例中所述的系统启动方法。

由以上技术方案看出,本发明应用于计算机装置,通过判断linux系统是否启动init进程;当所述linux系统启动init进程,将所述计算机装置中根文件系统所属的第一分区和所述计算机装置中所述第一分区以外的第二分区通过联合文件系统技术挂载至启动文件系统的联合目录,其中,所述第一分区的挂载属性为只读,所述第二分区的挂载属性为可写;将所述linux系统的根目录切换为所述联合目录,所述linux系统从所述联合目录获取所述根文件系统进行启动运行。由于,通过联合文件系统技术将根文件系统所属的第一分区和第一分区以外的第二分区挂载至启动文件系统的联合目录,并将linux系统的根目录切换为联合目录,使得linux系统可以通过获取联合目录中的根文件系统进行启动。同时,由于第一分区的挂载属性为只读,则在linux系统启动后,可以通过联合目录读取所挂载的第一分区内的根文件系统;由于第二分区的挂载属性为可写,因此,可以基于读取到的根文件系统进行写操作并保存在第二分区。从而实现了在linux启动后,能够对根文件系统进行读写目的,由于第一分区内的根文件系统始终不会被直接修改,因此实现了保持了根文件系统不被修改的目的,提高了根文件系统的安全性,避免出现linux系统崩溃或无法再次启动的问题,从而能够提高linux系统运行时的稳定性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例提供的一种系统启动方法的流程图;

图2是本发明实施例提供的系统启动装置的功能模块图;

图3是本发明实现系统启动方法的较佳实施例的计算机装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

如图1所示,图1为本发明实施例提供的一种系统启动方法的流程图。本发明所述的系统启动方法可应用于计算机装置,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。

s11,判断linux系统是否启动init进程。

其中,init进程是linux内核启动的第一个进程,linux中的所有进程都是由init进程创建并运行的,因此init进程是linux系统运行最基本的进程。

因此,在本实施例中,判断linux系统是否启动init进程可以确定linux系统处于启动状态。

s12:当所述linux系统启动init进程,将所述计算机装置中根文件系统所属的第一分区和所述计算机装置中所述第一分区以外的第二分区通过联合文件系统技术挂载至启动文件系统的联合目录,其中,所述第一分区的挂载属性为只读,所述第二分区的挂载属性为可写。

在本发明实施例中,在linux系统启动init进程之后,执行s12以及s13的操作,即在init进程中,执行s12和s13的操作。

其中,上述计算机装置可以是任意能够搭载linux操作系统的电子设备,例如,服务器、笔记本电脑、摄像机等。同时,计算机装置中包括存储介质,例如,闪存(flash)、硬盘。

在本实施例中,对于计算机装置,可以有至少两个分区。分区是指将一个存储介质进行存储区域的划分,使得划分后每个存储区域可以分别进行数据的存储。在划分后得到的每个存储区域都可以称为一个分区。

文件系统是对一个存储介质上的数据、文件进行组织的机制,根文件系统是一种文件系统,在linux系统中可以有多种文件系统。

计算机装置中根文件系统所属的第一分区是指:在计算机装置中存放根文件系统的一个分区。并且,第一分区的挂载属性为只读,即第一分区以只读方式挂载,则挂载以后,该分区只能进行读取操作,即只能读取该分区中的数据。

计算机装置中第一分区以外的第二分区可以是计算机装置中第一分区以外的其他任意一个分区。并且,第二分区的挂载属性为可写,即第二分区以可写方式挂载,则挂载以后,可以在第二分区中进行写入操作,即可以在第二分区中进行数据的保存。

同时,第二分区的文件系统类型可以与第一分区的文件系统类型相同,也可以与第一分区的文件系统类型不同。

在一种可能的实施例中,第二分区可以是根据计算机装置的存储介质的大小预先创建的分区。

具体的,当计算机装置的存储介质的大小大于容量阈值时,创建第二分区,第二分区的存储容量与计算机装置中根文件系统所属的第一分区的存储容量相同;当计算机装置的存储介质的大小小于容量阈值时,创建第二分区,第二分区的存储容量为计算机装置中根文件系统所属的第一分区的存储容量的二分之一或者四分之一。

由于第二分区用于对根文件系统的写操作所得到的数据进行保存,而计算机装置的存储介质较小时,为了保证对其他数据能够进行存储(例如用户的操作数据,设备运行时获取到的数据),可以在划分第二分区时候,将第二分区的存储容量确定为计算机装置中根文件系统所属的第一分区的存储容量的二分之一或者四分之一,避免第二分区存储容量过大导致其他存储空间不足,同时避免其他存储空间不足引起的系统卡顿、崩溃等状况。

在另一种可能的实施例中,第二分区可以是根据历史写操作大小预先创建的分区。

上述历史写操作大小可以是在过去的一段时间内对根文件系统进行写操作所得到的数据的大小,历史写操作大小可以用于预测将要对根文件系统进行写操作所得到的数据的大小。

则通过根据历史写操作大小预先创建第二分区,可以在创建第二分区时,使第二分区的存储容量更合理,在保证第二分区具有足够空间存储待写数据的情况下,避免存储空间的浪费。

本实施例中,挂载也可称为mount,具体的,挂载是将一个分区与一个目录关联,使得能够对分区中的内容进行操作。具体实施时,可以通过执行mount命令实现挂载。

上述联合文件系统(unionfilesystem)技术是一种不同物理位置的目录合并挂载到同一个目录中的技术,即将多个文件夹的内容合并到一起,则可以通过合并的文件夹查看不同物理位置的目录下存放的文件。

上述启动文件系统是linux系统启动时用于启动的文件系统,具体的,启动文件系统可以是initramfs文件系统。上述联合目录可以是在启动文件系统中预先指定的一个目录或者是新建的目录。由于在linux系统启动时,会读取启动文件系统中的内容,因此,在本实施例中,将第一分区和第二分区通过联合文件系统技术挂载至启动文件系统内的目录下。

具体实施时,可以通过执行联合文件技术的对应命令来实现将第一分区和第二分区挂载至启动文件系统的联合目录的操作。

在本发明另一实施例中,所述s12将所述计算机装置中根文件系统所属的第一分区和所述计算机装置中所述第一分区以外的第二分区通过联合文件系统技术挂载至启动文件系统的联合目录,其中,所述第一分区的挂载属性为只读,所述第二分区的挂载属性为可写,可以包括:

在所述启动文件系统中创建第一挂载点文件夹以及第二挂载点文件夹;

将所述计算机装置中根文件系统所属的第一分区以可读方式挂载至所述第一挂载点文件夹,将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹;

将所述第一挂载点文件夹与所述第二挂载点文件夹通过aufs技术挂载至所述启动文件系统中的联合目录。

在本实施例中,第一挂载点文件夹是用于挂载第一分区的文件夹,第二挂载点文件夹是用于挂载第二分区的文件夹。

具体的,第一分区以可读方式挂载至第一挂载点文件夹,第二分区以可写方式挂载至第二挂载点文件夹。在实施过程中,当挂载第二分区时,在将第二分区的挂载属性指定为可写时,也一并指定为可读。

例如,hda1表示第一分区,hda2表示第二分区,file1表示第一挂载点文件夹,file2表示第二挂载点文件夹,则执行#mount-oro/dev/hda1/file1,将第一分区hda1以只读方式挂载至第一挂载点文件夹file1。

同时,执行#mount-orw/dev/hda2/file2将第二分区hda2以可读写方式挂载至第二挂载点文件夹file2。

aufs(advancedmulti-layeredunificationfilesystem)技术是一种联合文件系统技术,也可称为advanceunionfs。

例如,联合目录的名称为aufs_root,则执行#mount-taufs-obr=./file1:./file2none./aufs_root,实现将第一挂载点文件夹file1和第二挂载点文件夹file2挂载至联合目录aufs_root。

则若一挂载点文件夹file1中包括文件a和b,第二挂载点文件夹file2中包括文件c,在查看联合目录aufs_root目录中的文件时,在联合目录aufs_root下可以查看文件a,文件b以及文件c.

通过以上到,可以到在将第一挂载点文件夹以及第二挂载点文件夹进行挂载后,在联合目录下,将第一挂载点文件夹中的根文件系统与第二挂载点文件夹中的内容进行了合并,并且可以通过联合目录对第一挂载点文件夹的内容进行读取,对第二挂载点文件夹的内容进行读写。

在一种可能的实施例中,将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹之后,还包括:

判断所述第二分区是否成功挂载至所述第二挂载点文件夹;

若所述第二分区未成功挂载至所述第二挂载点文件夹,格式化所述第二分区,执行所述将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹的步骤。

在本实施例中,在将第二分区以可写方式挂载至第二挂载点文件夹之后,判断是否成功挂载。判断的方式可以是根据接收到的挂载反馈消息,来确定第二分区是否挂载成功,当第二分区未挂载成功时,将第二分区进行格式化,在格式化第二分区之后再次进行挂载。

在本实施例中,通过对第二分区挂载成功与否的判断,以及在第二分区未挂载成功时,及时解决挂载不成功的问题,可以确保第二分区已成功挂载后再进行后续操作。避免后续将第一挂载点文件夹和第二挂载点文件夹挂载至联合目录后,却无法将第一分区中的内容与第二分区中的内容合并的问题。

s13:将所述linux系统的根目录切换为所述联合目录,所述linux系统从所述联合目录获取所述根文件系统进行启动运行。

其中,linux系统的根文件目录为“\”,linux系统中每一个文件和目录都从根目录开始,即linux系统中每一个文件和目录的都存在于根目录下,linux系统的根目录是linux系统的一级文件结构。同时,根目录下也包括用于启动linux启动的文件。

将linux系统的根目录切换为联合目录,则使得linux系统可以从联合目录中获取根文件系统进行进一步的启动运行。

进一步的,在本发明其他实施例中,所述方法还包括:

接收针对所述根文件系统的写操作指令;

根据所述写操作指令从所述联合目录下获取根文件系统进行写操作,通过所述写操作得到的写文件保存在所述联合目录下;

若检测到所述写文件存在异常,将所述写文件从所述联合目录下删除。

具体的,由于联合文件系统的技术特征,从联合目录中,可以获取到第一分区存储的数据以及第二分区存储的数据。因此,可从联合目录下获取根文件系统中的待修改文件进行写操作,并且通过写操作得到的写文件可以保存在联合目录下,其中,通过写操作得到的写文件实质上可以保存于第一分区中。

上述写文件出现异常可能是写文件进行了恶意篡改,或者写文件被破坏等情况导致了写文件出现异常,则此时将写文件从联合目录下删除,实质上,在写文件从联合目录下删除时,写文件从第一分区进行了删除。

通过本实施例,在进行写操作时,不仅可以获取根文件系统中的所有文件进行修改,并且修改后的得到的修改文件也不会覆盖或修改原根文件系统。同时,若修改文件出现了异常,则可以在不影响原根文件系统的基础上,删除出现异常的文件删除,提高了根文件系统的安全性和linux系统运行的稳定性。

进一步的,在本发明其他实施例中,所述方法还包括:

若检测到所述linux系统异常,格式化所述第二分区。

在本实施例中,当检测到linux系统异常时,由于第一分区保存的为未修改的linux的根文件系统,而第二分区保存的是对根文件系统修改后的修改文件,则为了将修改文件导致linux系统出现异常的错误进行修复,格式化第二分区,删除对根文件系统所做的修改,由于未对最初的根文件系统进行覆盖,因此,linux可以恢复到初始版本。

通过本实施例,可以在linux系统异常时,将linux系统快速还原,则linux系统还原后仍能继续使用,提高linux系统运行时的容错能力。

本发明提供的系统启动方法应用于计算机装置,通过判断linux系统是否启动init进程;当所述linux系统启动init进程,将所述计算机装置中根文件系统所属的第一分区和所述计算机装置中所述第一分区以外的第二分区通过联合文件系统技术挂载至启动文件系统的联合目录,其中,所述第一分区的挂载属性为只读,所述第二分区的挂载属性为可写;将所述linux系统的根目录切换为所述联合目录,所述linux系统从所述联合目录获取所述根文件系统进行启动运行。由于,通过联合文件系统技术将根文件系统所属的第一分区和第一分区以外的第二分区挂载至启动文件系统的联合目录,并将linux系统的根目录切换为联合目录,使得linux系统可以通过获取联合目录中的根文件系统进行启动。同时,由于第一分区的挂载属性为只读,则在linux系统启动后,可以通过联合目录读取所挂载的第一分区内的根文件系统;由于第二分区的挂载属性为可写,因此,可以基于读取到的根文件系统进行写操作并保存在第二分区。从而实现了在linux启动后,能够对根文件系统进行读写目的,由于第一分区内的根文件系统始终不会被直接修改,因此实现了保持了根文件系统不被修改的目的,提高了根文件系统的安全性,避免出现linux系统崩溃或无法再次启动的问题,从而能够提高linux系统运行时的稳定性。

如图2所示,图2为本发明实施例提供的系统启动装置的功能模块图。所述系统启动装置包括判断模块210、挂载模块220和切换模块230。本发明所称的模块是指一种能够被计算机装置的处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在计算机装置的存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。

判断模块210,用于判断linux系统是否启动init进程。

其中,init进程是linux内核启动的第一个进程,linux中的所有进程都是由init进程创建并运行的,因此init进程是linux系统运行最基本的进程。

因此,在本实施例中,判断linux系统是否启动init进程可以确定linux系统处于启动状态。

挂载模块220,用于当所述linux系统启动init进程,将所述计算机装置中根文件系统所属的第一分区和所述计算机装置中所述第一分区以外的第二分区通过联合文件系统技术挂载至启动文件系统的联合目录,其中,所述第一分区的挂载属性为只读,所述第二分区的挂载属性为可写。

在本发明实施例中,在linux系统启动init进程之后,挂载模块220和切换模块230执行操作,即在init进程中,挂载模块220和切换模块230执行操作。

其中,上述计算机装置可以是任意能够搭载linux操作系统的电子设备,例如,服务器、笔记本电脑、摄像机等。同时,计算机装置中包括存储介质,例如,闪存(flash)、硬盘。

在本实施例中,对于计算机装置,可以有至少两个分区。分区是指将一个存储介质进行存储区域的划分,使得划分后每个存储区域可以分别进行数据的存储。在划分后得到的每个存储区域都可以称为一个分区。

文件系统是对一个存储介质上的数据、文件进行组织的机制,根文件系统是一种文件系统,在linux系统中可以有多种文件系统。

计算机装置中根文件系统所属的第一分区是指:在计算机装置中存放根文件系统的一个分区。并且,第一分区的挂载属性为只读,即第一分区以只读方式挂载,则挂载以后,该分区只能进行读取操作,即只能读取该分区中的数据。

计算机装置中第一分区以外的第二分区可以是计算机装置中第一分区以外的其他任意一个分区。并且,第二分区的挂载属性为可写,即第二分区以可写方式挂载,则挂载以后,可以在第二分区中进行写入操作,即可以在第二分区中进行数据的保存。

同时,第二分区的文件系统类型可以与第一分区的文件系统类型相同,也可以与第一分区的文件系统类型不同。

在一种可能的实施例中,第二分区可以是根据计算机装置的存储介质的大小预先创建的分区。

具体的,当计算机装置的存储介质的大小大于容量阈值时,创建第二分区,第二分区的存储容量与计算机装置中根文件系统所属的第一分区的存储容量相同;当计算机装置的存储介质的大小小于容量阈值时,创建第二分区,第二分区的存储容量为计算机装置中根文件系统所属的第一分区的存储容量的二分之一或者四分之一。

由于第二分区用于对根文件系统的写操作所得到的数据进行保存,而计算机装置的存储介质较小时,为了保证对其他数据能够进行存储(例如用户的操作数据,设备运行时获取到的数据),可以在划分第二分区时候,将第二分区的存储容量确定为计算机装置中根文件系统所属的第一分区的存储容量的二分之一或者四分之一,避免第二分区存储容量过大导致其他存储空间不足,同时避免其他存储空间不足引起的系统卡顿、崩溃等状况。

在另一种可能的实施例中,第二分区可以是根据历史写操作大小预先创建的分区。

上述历史写操作大小可以是在过去的一段时间内对根文件系统进行写操作所得到的数据的大小,历史写操作大小可以用于预测将要对根文件系统进行写操作所得到的数据的大小。

则通过根据历史写操作大小预先创建第二分区,可以在创建第二分区时,使第二分区的存储容量更合理,在保证第二分区具有足够空间存储待写数据的情况下,避免存储空间的浪费。

本实施例中,挂载也可称为mount,具体的,挂载是将一个分区与一个目录关联,使得能够对分区中的内容进行操作。具体实施时,可以通过执行mount命令实现挂载。

上述联合文件系统(unionfilesystem)技术是一种不同物理位置的目录合并挂载到同一个目录中的技术,即将多个文件夹的内容合并到一起,则可以通过合并的文件夹查看不同物理位置的目录下存放的文件。

上述启动文件系统是linux系统启动时用于启动的文件系统,具体的,启动文件系统可以是initramfs文件系统。上述联合目录可以是在启动文件系统中预先指定的一个目录或者是新建的目录。由于在linux系统启动时,会读取启动文件系统中的内容,因此,在本实施例中,将第一分区和第二分区通过联合文件系统技术挂载至启动文件系统内的目录下。

具体实施时,可以通过执行联合文件技术的对应命令来实现将第一分区和第二分区挂载至启动文件系统的联合目录的操作。

在本发明另一实施例中,所述挂载模块220可以具体用于:

在所述启动文件系统中创建第一挂载点文件夹以及第二挂载点文件夹;

将所述计算机装置中根文件系统所属的第一分区以可读方式挂载至所述第一挂载点文件夹,将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹;

将所述第一挂载点文件夹与所述第二挂载点文件夹通过aufs技术挂载至所述启动文件系统中的联合目录。

在本实施例中,第一挂载点文件夹是用于挂载第一分区的文件夹,第二挂载点文件夹是用于挂载第二分区的文件夹。

具体的,第一分区以可读方式挂载至第一挂载点文件夹,第二分区以可写方式挂载至第二挂载点文件夹。在实施过程中,当挂载第二分区时,在将第二分区的挂载属性指定为可写时,也一并指定为可读。

例如,hda1表示第一分区,hda2表示第二分区,file1表示第一挂载点文件夹,file2表示第二挂载点文件夹,则执行#mount-oro/dev/hda1/file1,将第一分区hda1以只读方式挂载至第一挂载点文件夹file1。

同时,执行#mount-orw/dev/hda2/file2将第二分区hda2以可读写方式挂载至第二挂载点文件夹file2。

aufs(advancedmulti-layeredunificationfilesystem)技术是一种联合文件系统技术,也可称为advanceunionfs。

例如,联合目录的名称为aufs_root,则执行#mount-taufs-obr=./file1:./file2none./aufs_root,实现将第一挂载点文件夹file1和第二挂载点文件夹file2挂载至联合目录aufs_root。

则若一挂载点文件夹file1中包括文件a和b,第二挂载点文件夹file2中包括文件c,在查看联合目录aufs_root目录中的文件时,在联合目录aufs_root下可以查看文件a,文件b以及文件c.

通过以上到,可以到在将第一挂载点文件夹以及第二挂载点文件夹进行挂载后,在联合目录下,将第一挂载点文件夹中的根文件系统与第二挂载点文件夹中的内容进行了合并,并且可以通过联合目录对第一挂载点文件夹的内容进行读取,对第二挂载点文件夹的内容进行读写。

在一种可能的实施例中,所述装置还包括触发模块,所述触发模块用于

将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹之后,判断所述第二分区是否成功挂载至所述第二挂载点文件夹;

若所述第二分区未成功挂载至所述第二挂载点文件夹,格式化所述第二分区,触发所述挂载模块将所述计算机装置的第二分区以可写方式挂载至所述第二挂载点文件夹。

在本实施例中,在将第二分区以可写方式挂载至第二挂载点文件夹之后,判断是否成功挂载。判断的方式可以是根据接收到的挂载反馈消息,来确定第二分区是否挂载成功,当第二分区未挂载成功时,将第二分区进行格式化,在格式化第二分区之后再次进行挂载。

在本实施例中,通过对第二分区挂载成功与否的判断,以及在第二分区未挂载成功时,及时解决挂载不成功的问题,可以确保第二分区已成功挂载后再进行后续操作。避免后续将第一挂载点文件夹和第二挂载点文件夹挂载至联合目录后,却无法将第一分区中的内容与第二分区中的内容合并的问题。

切换模块230,用于将所述linux系统的根目录切换为所述联合目录,所述linux系统从所述联合目录获取所述根文件系统进行启动运行。

其中,linux系统的根文件目录为“\”,linux系统中每一个文件和目录都从根目录开始,即linux系统中每一个文件和目录的都存在于根目录下,linux系统的根目录是linux系统的一级文件结构。同时,根目录下也包括用于启动linux启动的文件。

将linux系统的根目录切换为联合目录,则使得linux系统可以从联合目录中获取根文件系统进行进一步的启动运行。

进一步的,在本发明其他实施例中,所述装置还包括第一修复模块,所述第一修复模块用于:

接收针对所述根文件系统的写操作指令;

根据所述写操作指令从所述联合目录下获取根文件系统进行写操作,通过所述写操作得到的写文件保存在所述联合目录下;

若检测到所述写文件存在异常,将所述写文件从所述联合目录下删除。

具体的,由于联合文件系统的技术特征,从联合目录中,可以获取到第一分区存储的数据以及第二分区存储的数据。因此,可从联合目录下获取根文件系统中的待修改文件进行写操作,并且通过写操作得到的写文件可以保存在联合目录下,其中,通过写操作得到的写文件实质上可以保存于第一分区中。

上述写文件出现异常可能是写文件进行了恶意篡改,或者写文件被破坏等情况导致了写文件出现异常,则此时将写文件从联合目录下删除,实质上,在写文件从联合目录下删除时,写文件从第一分区进行了删除。

通过本实施例,在进行写操作时,不仅可以获取根文件系统中的所有文件进行修改,并且修改后的得到的修改文件也不会覆盖或修改原根文件系统。同时,若修改文件出现了异常,则可以在不影响原根文件系统的基础上,删除出现异常的文件删除,提高了根文件系统的安全性和linux系统运行的稳定性。

进一步的,在本发明其他实施例中,所述装置还包括第二修复模块,所述第二修复模块用于:

若检测到所述linux系统异常,格式化所述第二分区。

在本实施例中,当检测到linux系统异常时,由于第一分区保存的为未修改的linux的根文件系统,而第二分区保存的是对根文件系统修改后的修改文件,则为了将修改文件导致linux系统出现异常的错误进行修复,格式化第二分区,删除对根文件系统所做的修改,由于未对最初的根文件系统进行覆盖,因此,linux可以恢复到初始版本。

通过本实施例,可以在linux系统异常时,将linux系统快速还原,则linux系统还原后仍能继续使用,提高linux系统运行时的容错能力。

本发明提供的系统启动装置通过判断模块判断linux系统是否启动init进程;当所述linux系统启动init进程,挂载模块将所述计算机装置中根文件系统所属的第一分区和所述计算机装置中所述第一分区以外的第二分区通过联合文件系统技术挂载至启动文件系统的联合目录,其中,所述第一分区的挂载属性为只读,所述第二分区的挂载属性为可写;切换模块将所述linux系统的根目录切换为所述联合目录,所述linux系统从所述联合目录获取所述根文件系统进行启动运行。由于,通过联合文件系统技术将根文件系统所属的第一分区和第一分区以外的第二分区挂载至启动文件系统的联合目录,并将linux系统的根目录切换为联合目录,使得linux系统可以通过获取联合目录中的根文件系统进行启动。同时,由于第一分区的挂载属性为只读,则在linux系统启动后,可以通过联合目录读取所挂载的第一分区内的根文件系统;由于第二分区的挂载属性为可写,因此,可以基于读取到的根文件系统进行写操作并保存在第二分区。从而实现了在linux启动后,能够对根文件系统进行读写目的,由于第一分区内的根文件系统始终不会被直接修改,因此实现了保持了根文件系统不被修改的目的,提高了根文件系统的安全性,避免出现linux系统崩溃或无法再次启动的问题,从而能够提高linux系统运行时的稳定性。

上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。

如图3所示,图3是本发明实现系统启动方法的较佳实施例的计算机装置的结构示意图。所述计算机装置包括至少一个发送装置31、至少一个存储器32、至少一个处理器33、至少一个接收装置34以及至少一个通信总线。其中,所述通信总线用于实现这些组件之间的连接通信。

所述计算机装置是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。所述计算机装置还可包括网络设备和/或用户设备。其中,所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloudcomputing)的由大量主机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。

所述计算机装置可以是,但不限于任何一种可与用户通过键盘、触摸板或声控设备等方式进行人机交互的电子产品,例如,平板电脑、智能手机、监控设备等终端。

所述计算机装置所处的网络包括,但不限于互联网、广域网、城域网、局域网、虚拟专用网络(virtualprivatenetwork,vpn)等。

其中,所述接收装置34和所述发送装置31可以是有线发送端口,也可以为无线设备,例如包括天线装置,用于与其他设备进行数据通信。

所述存储器32用于存储程序代码。所述存储器32可以是集成电路中没有实物形式的具有存储功能的电路,如ram(random-accessmemory,随机存取存储器)、fifo(firstinfirstout,先进先出存储器)等。或者,所述存储器32也可以是具有实物形式的存储器,如内存条、tf卡(trans-flashcard)、智能媒体卡(smartmediacard)、安全数字卡(securedigitalcard)、快闪存储器卡(flashcard)等储存设备等等。

所述处理器33可以包括一个或者多个微处理器、数字处理器。所述处理器33可调用存储器32中存储的程序代码以执行相关的功能。例如,图3中所述的各个单元是存储在所述存储器32中的程序代码,并由所述处理器33所执行,以实现一种系统启动方法。所述处理器33又称中央处理器(cpu,centralprocessingunit),是一块超大规模的集成电路,是运算核心(core)和控制核心(controlunit)。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1