CN116954673B - 一种Linux操作系统的升级及还原方法 - Google Patents
一种Linux操作系统的升级及还原方法 Download PDFInfo
- Publication number
- CN116954673B CN116954673B CN202311225108.6A CN202311225108A CN116954673B CN 116954673 B CN116954673 B CN 116954673B CN 202311225108 A CN202311225108 A CN 202311225108A CN 116954673 B CN116954673 B CN 116954673B
- Authority
- CN
- China
- Prior art keywords
- file
- new
- configuration
- files
- grub
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000008569 process Effects 0.000 claims abstract description 18
- 230000005012 migration Effects 0.000 claims description 32
- 238000013508 migration Methods 0.000 claims description 32
- 238000005192 partition Methods 0.000 claims description 32
- 230000009467 reduction Effects 0.000 claims description 25
- 230000006855 networking Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 7
- 238000009434 installation Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Linux操作系统的升级及还原方法,升级方法包括:获取新系统的镜像文件,若符合升级条件,将镜像文件解压得到新系统的文件,获取当前系统的系统配置信息,获取当前系统的第三方应用,创建新系统对应的引导文件initrd和grub配置文件并在重新启动时以此启动新系统,启动过程中将当前系统的文件移动到备份文件夹中,将新系统的文件移动到根目录下,然后将用户数据迁移到新系统中;新系统启动完成并激活后,根据系统配置信息完成配置,将第三方应用迁移到新系统中。本发明可以避免包依赖关系复杂或系统环境被破坏导致的升级失败问题,还可以将新系统还原为旧系统。
Description
技术领域
本发明涉及操作系统升级技术,尤其涉及一种Linux操作系统的升级及还原方法。
背景技术
Linux系统是由一系列软件包组成,操作系统的内核与核外软件均以软件包的形式进行组织和管理,不同软件包之间存在复杂的依赖关系,也就是说,Linux操作系统就是众多软件包的集合。
对于Linux系统的升级有两种方式实现,一种是重新安装系统;另一种是通过升级软件包的方式。基于该方式的升级通常是将新版本系统的软件包上传至服务器,客户端检测到有新版本升级包之后下载到本地直接安装完成升级。
如图1所示,具体流程是:
1、升级管理服务端获取升级管理客户端信息,然后存入数据库;
2、当新版本系统的软件包上传至服务器后,通过升级管理客户端提示用户升级;
3、待用户确认后,将从包下载服务器下载最新的升级包进行升级。
因为软件包之间的复杂依赖关系,用户在安装、卸载、升级软件包时可能会直接或间接地影响系统关键组件。此时,安装固定不变的系统升级包可能对系统已经不起作用,甚至导致系统混乱。这也是升级Linux系统经常出现异常问题的原因。在系统版本跨度较大时,该问题尤为严重,升级软件包的方法无法成功升级。除非重新安装系统,而这会抹去系统原有的所有信息。同时在升级成功之后,如果不满意新系统,使用者无法还原为原系统。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种Linux操作系统的升级及还原方法。在系统升级时备份旧系统,并将旧系统的数据迁移到新系统中,实现系统升级,并保留用户的数据和应用程序。同时还可以移除新系统,将系统还原为原系统。
为解决上述技术问题,本发明提出的技术方法为:
一种Linux操作系统的升级方法,包括以下步骤:
获取新系统的镜像文件,若当前系统的信息或者所述镜像文件的信息不符合升级条件,提示具体原因,结束并退出;
若当前系统的信息和所述镜像文件的信息均符合升级条件,将所述镜像文件解压得到新系统的文件,将所述新系统的文件保存在临时文件夹中,获取当前系统中的系统配置信息,获取当前系统中的第三方应用,创建新系统对应的引导文件initrd和grub配置文件;
重新启动并使用所述引导文件initrd和grub配置文件来启动新系统,启动过程中将当前系统的文件移动到备份文件夹中,将新系统的文件移动到根目录下,然后将用户数据迁移到新系统中;
新系统启动完成后,根据系统配置信息完成配置,将第三方应用迁移到新系统中。
进一步的,获取当前系统中的系统配置信息时,包括:获取预设的迁移列表中的配置项,查找当前系统的对应配置信息并生成当前系统的配置文件,将当前系统的配置文件替换新系统的文件中的配置文件。
进一步的,将所述镜像文件解压得到新系统的文件之后还包括:将新系统的文件中镜像文件的源和配置文件拷贝到指定路径进行备份。
进一步的,创建新系统对应的引导文件initrd和grub配置文件时,包括以下步骤:
获取当前系统的grub配置文件并解析,得到分区的UUID、驱动加载项以及配置参数;
创建新系统的内核文件对应的加载内核参数配置,并替换所述配置参数中的对应参数;
根据驱动加载项创建新的引导文件initrd的参数配置;
根据所述分区的UUID、驱动加载项以及配置参数创建新的grub配置文件,在新的grub配置文件中添加第一目标字段。
进一步的,将第三方应用迁移到新系统中之后还包括更新新系统对应的grub配置文件的步骤,具体包括:在新系统对应的grub配置文件中删除第一目标字段,然后再次重新启动并使用所述引导文件initrd和grub配置文件来启动新系统;重新启动并使用所述引导文件initrd和grub配置文件来启动新系统时,包括以下步骤:
判断grub配置文件中是否包含第一目标字段,否则加载所述引导文件initrd之后根据所述grub配置文件加载新系统的内核,是则加载所述引导文件initrd的同时,还执行以下步骤:
判断root分区是否存在,如果不存在,返回错误信息;
如果存在,在root分区创建备份文件夹,将旧文件系统从root分区根目录移动到备份文件夹;
将新文件系统从临时文件夹移动到root分区根目录下,将旧文件系统中所有者为用户的文件迁移到新文件系统的对应目录下。
进一步的,获取当前系统中的第三方应用时,包括:根据当前系统中的第三方应用的桌面文件找到对应的包名,将对应的软件包进行重打包,并做自包含处理得到重打包的软件包,将重打包的软件包保存在指定路径。
进一步的,将第三方应用迁移到新系统中时,包括:
将当前重打包的软件包的包名匹配预设的迁移列表;
若所述包名位于迁移列表中无需迁移的部分,将下一重打包的软件包的包名匹配预设的迁移列表;
若所述包名位于迁移列表中需要迁移的部分或是不在迁移列表中,则判断是否联网,如果已联网,根据所述包名获取在线源中的对应软件包并安装到新系统中,如果未联网,则将重打包的软件包安装到新系统中;
若所述包名位于迁移列表中迁移指定版本的部分,则判断重打包的软件包版本是否为指定版本,是则将重打包的软件包安装到新系统中,否则根据所述包名获取离线源中的对应软件包并判断是否为指定版本,如果离线源中对应软件包为指定版本,则将离线源中对应软件包安装到新系统中,如果离线源中对应软件包不为指定版本,则返回错误信息。
本发明还提出一种Linux操作系统的还原方法,包括以下步骤:
判断当前系统的信息是否符合还原条件,否则提示具体原因,结束并退出;是则创建旧系统对应的引导文件initrd和grub配置文件;
重新启动并使用旧系统对应的引导文件initrd和grub配置文件来启动旧系统,启动过程中删除根目录下当前系统的文件,将备份文件夹中旧系统的文件移动到根目录下。
进一步的,创建旧系统对应的引导文件initrd和grub配置文件时,包括以下步骤:
获取当前系统的grub配置文件并解析,得到分区的UUID、驱动加载项以及配置参数;
创建旧系统的内核文件对应的加载内核参数配置,并替换所述配置参数中的对应参数;
根据驱动加载项创建新的引导文件initrd的参数配置;
根据所述分区的UUID、驱动加载项以及配置参数创建新的grub配置文件,在新的grub配置文件中添加第二目标字段。
进一步的,重新启动并使用旧系统对应的引导文件initrd和grub配置文件来启动旧系统之后,还包括:旧系统启动完成后,在旧系统对应的grub配置文件中删除第二目标字段;重新启动并使用旧系统对应的引导文件initrd和grub配置文件来启动旧系统时,包括以下步骤:
判断grub配置文件中是否包含第二目标字段,否则加载所述引导文件initrd之后根据所述grub配置文件加载旧系统的内核,是则加载所述引导文件initrd的同时,还执行以下步骤:
判断备份文件夹是否存在,如果不存在,返回错误信息;
如果存在,删除根目录下的当前文件系统,然后将旧文件系统从备份文件夹中恢复到根目录。
与现有技术相比,本发明的优点在于:
1)使用新旧系统的平行替换,可以避免包依赖关系复杂或系统环境被破坏导致的升级失败问题,还可以将新系统还原为旧系统;
2)在升级系统过程中,迁移配置文件和用户数据,保留了系统中用户的使用习惯和用户原有文件;
3)在升级系统过程中,迁移第三方应用,按照实际需要,根据预设的迁移列表合理地对原系统中的应用进行直接迁移、升级或是指定版本安装。
附图说明
图1为Linux操作系统的现有升级方法流程图。
图2为本发明实施例中Linux操作系统的升级方法流程图。
图3为本发明实施例中重新启动时的流程图。
图4为本发明实施例中将第三方应用迁移到新系统的流程图。
图5为本发明实施例中创建引导文件initrd和grub配置文件的流程图。
图6为本发明实施例中Linux操作系统的还原方法流程图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
在介绍相关实施例的具体方法之前,先对于相关概念进行说明。
grub:grub是多系统引导管理器,是在计算机启动后运行的第一个程序,是用来负责加载、传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出。
initrd:initrd 的英文含义是 boot loader iniTIalized RAM disk,就是由boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的initrd 文件加载到内存,内核启动时会在访问真正的文件系统前先访问该内存中的initrd 文件系统。在 boot loader 配置了 initrd 在这情况下,内核启动被分成了两个阶段,第一阶段先执行 initrd 文件系统中的"某个文件",完成加载驱动模块等任务,第二阶段才会执行真正的文件系统中的任务 /sbin/init 进程。第一阶段启动的目的是为第二阶段的启动扫清一切障碍,最主要的是加载文件系统存储介质的驱动模块。
实施例一
本实施例提出一种Linux操作系统的升级方法,只需在设备端运行,不需要配置服务器;无论原系统中环境如何、包的依赖关系如何都不影响系统升级,通过将系统的平行替换实现内核和核外的同步升级,并且可以保留用户的数据和应用程序。当使用者不满意该系统时,可以执行系统还原操作。其思路如下:
1)在系统中准备新系统的镜像文件。
2)判断当前系统信息和镜像文件信息是否符合升级条件。不符合条件的结束升级,并提示具体原因;符合条件的进行下一步。
3)初始化当前升级状态为“开始升级”。在根目录下创建新文件夹,将镜像文件解压此处;然后将镜像中的源和配置文件拷贝到指定路径;将系统中需要迁移的第三方应用进行重打包,并做自包含处理;将根目录修改为镜像文件解压的路径,创建升级使用的系统引导文件initrd;创建升级使用的grub配置文件。修改升级状态为“升级第一阶段结束”,然后重启。
4)执行3)中生成的grub选项的默认值,系统将以新系统的内核启动。
5)在initrd过程中,在root分区创建原系统的备份文件夹,并将原系统移动到此处;将新系统移动到根目录下;将用户数据移动到新系统中;修改升级状态为“升级第二阶段结束”。
6)进行系统激活,完成新系统配置,迁移第三方应用;更新grub和initrd;记录完成时间,修改升级状态为“升级第三阶段结束”,然后重启。等到系统完成启动后,修改升级状态为“升级成功”。
基于上述思路,本实施例的升级方法具体包括以下步骤:
首先,获取新系统的镜像文件,若当前系统的信息或者所述镜像文件的信息不符合升级条件,提示具体原因,结束并退出,如图2所示,包括以下步骤:
步骤201:准备要升级的系统镜像文件,放在任意目录下;
步骤202:判断当前系统信息和镜像文件信息是否符合升级条件,条件包括:剩余硬盘容量大小是否满足要求、系统版本、镜像文件版本是否满足要求(当前系统的版本小于镜像文件中新系统的版本)、系统架构是否满足要求(当前系统架构与镜像文件中新系统的架构一致)、镜像文件完整性是否满足要求(镜像文件可以通过MD5校验)等。如果符合条件,执行步骤204;如果不符合,执行步骤203;
步骤203:结束升级,提示具体原因。
若当前系统的信息和所述镜像文件的信息均符合升级条件,执行第一阶段的步骤,将所述镜像文件解压得到新系统的文件,将所述新系统的文件保存在临时文件夹中,获取当前系统中的系统配置信息,获取当前系统中的第三方应用,创建新系统对应的引导文件initrd和grub配置文件,如图2所示,包括以下步骤:
步骤204:初始化当前升级状态为“开始升级”;
步骤205:在操作系统的根目录下创建新文件夹作为临时文件夹,将新系统解压到该文件夹下;
步骤206:将镜像中的源与配置文件拷贝到指定路径以进行备份;
步骤207:将系统中需要迁移的第三方应用进行重打包,并做自包含处理,将重打包的软件包放在指定路径;
步骤208:根据配置迁移列表,把原系统中的系统配置迁移到新系统中;获取当前系统中的系统配置信息时,获取预设的迁移列表中的配置项,查找当前系统的对应配置信息并生成当前系统的配置文件,将当前系统的配置文件替换新系统的文件中的配置文件;
步骤209:将根目录修改为新系统的解压路径;
步骤210:创建升级使用的系统引导文件initrd;
步骤211:创建升级使用的grub配置;
步骤212:修改升级状态为“升级第一阶段结束”,然后重启。
然后,执行第二阶段的步骤,重新启动并使用所述引导文件initrd和grub配置文件来启动新系统,启动过程中将当前系统的文件移动到备份文件夹中,将新系统的文件移动到根目录下,然后将用户数据迁移到新系统中,如图2所示,包括以下步骤:
步骤213:选择grub的默认选项;
步骤214:在root分区创建备份文件夹,并将原系统移动到此处;
步骤215:将解压出来的新系统移动到根目录下;
步骤216:将文件系统中文件属性所有者为用户的文件移动到新系统的对应目录;
步骤217:修改升级状态为“升级第二阶段结束”;
最后,执行第三阶段的步骤,新系统启动完成后,根据系统配置信息完成配置,将第三方应用迁移到新系统中,更新所述引导文件initrd和grub配置文件后,再次重新启动并使用所述引导文件initrd和grub配置文件来启动新系统,如图2所示,包括以下步骤:
步骤218:对已激活的系统进行自动激活;
步骤219:完成新系统的配置;
步骤220:安装迁移到新系统的第三方应用;
步骤221:更新grub和initrd;
步骤222:记录完成时间,修改升级状态为“升级第三阶段结束”,然后重启;
步骤223:系统启动完成后,修改升级状态为“升级成功”。
通过上述步骤,即实现了升级过程中新旧系统的平行替换,可以避免包依赖关系复杂或系统环境被破坏导致的升级失败问题,此外,针对每一阶段,均在对应的执行步骤中增加升级状态提示的步骤,在发生升级失败的情况下,可以根据对应的升级状态提示信息判断失败阶段,并结合错误信息,执行对应的修改方法,来保证升级的成功完成。
下面对于相关的步骤进行具体说明。
针对步骤210和211,如图5所示,本实施例中创建grub配置的具体流程如下:
步骤501:解析当前grub配置文件;
步骤502:获取分区的UUID;
步骤503:获取驱动加载项;
步骤504:获取配置参数;
步骤505:创建加载内核参数配置;
步骤506:创建 initrd 参数配置;
步骤507:创建grub配置文件;
相对应的,本实施例中,创建新系统对应的引导文件initrd和grub配置文件时,包括以下步骤:
获取当前系统的grub配置文件并解析,得到分区的UUID、驱动加载项以及配置参数;
创建新系统的内核文件对应的加载内核参数配置,并替换所述配置参数中的对应参数;
根据驱动加载项创建新的引导文件initrd的参数配置;
根据所述分区的UUID、驱动加载项以及配置参数创建新的grub配置文件,在新的grub配置文件中添加第一目标字段,如upgrade字段。
针对步骤214至步骤216,如图3所示,本实施例中系统升级过程中系统平行替换的具体流程如下:
步骤301:判断grub选项的参数中是否包含upgrade字段,如果包含,执行步骤303;如果不包含,执行步骤302;
步骤302:按照原流程执行;
步骤303:判断root分区是否存在,如果存在执行步骤305;如果不存在,执行步骤304;
步骤304:返回错误信息;
步骤305:在root分区创建备份文件夹;
步骤306:将旧文件系统全部移动到备份文件夹;
步骤307:将新文件系统移动到root分区根目录下;
步骤308:将旧文件系统中所有者为用户的文件迁移到新文件系统的对应目录下。
相对应的,本实施例的步骤221中,更新新系统对应的grub配置文件时,在新系统对应的grub配置文件中删除第一目标字段,本实施例中,重新启动并使用所述引导文件initrd和grub配置文件来启动新系统时,包括以下步骤:
判断grub配置文件中是否包含第一目标字段,否则先加载所述引导文件initrd再根据所述grub配置文件加载新系统的内核,是则加载所述引导文件initrd的同时,还执行以下步骤:
判断root分区是否存在,如果不存在,返回错误信息;
如果存在,在root分区创建备份文件夹,将旧文件系统从root分区根目录移动到备份文件夹;
将新文件系统从临时文件夹移动到root分区根目录下,将旧文件系统中所有者为用户的文件迁移到新文件系统的对应目录下。
针对步骤207,如图4所示,本实施例中,将系统中需要迁移的第三方应用进行重打包,并做自包含处理时,包括:
步骤401:根据desktop文件找到对应的包名;
步骤402:重新打包、并做自包含处理;
因此,本实施中获取当前系统中的第三方应用时,包括:根据当前系统中的第三方应用的桌面文件找到对应的包名,将对应的软件包进行重打包,并做自包含处理得到重打包的软件包,将重打包的软件包保存在指定路径。
相对应的,针对步骤220,本实施例中,安装迁移到新系统的第三方应用时,第三方应用的迁移来源有三种:一是直接使用重打包的安装包;二是通过系统的在线软件源安装;三是通过系统配置的离线软件源安装。如图4所示,包括以下步骤:
步骤403:判断包名在迁移列表的哪部分,需要迁移或是不在列表中执行步骤404;迁移指定版本,执行步骤406;
步骤404:判断是否联网,如果已联网,执行步骤405;如果未联网,执行步骤407;
步骤405:安装在线源中版本;
步骤406:判断重打包的版本是否符合,如果符合,执行步骤407;如果不符合执行步骤408;
步骤407:安装步骤402中重打包的版本;
步骤408:判断离线源中版本是否符合,如果符合,执行步骤409,如果不符合,执行步骤410;
步骤409:安装离线源中版本;
步骤410:返回错误信息;
相对应的,本实施例中将第三方应用迁移到新系统中时,包括:
将当前重打包的软件包的包名匹配预设的迁移列表;
若所述包名位于迁移列表中无需迁移的部分,将下一重打包的软件包的包名匹配预设的迁移列表;
若所述包名位于迁移列表中需要迁移的部分或是不在迁移列表中,则判断是否联网,如果已联网,根据所述包名获取在线源中的对应软件包并安装到新系统中,如果未联网,则将重打包的软件包安装到新系统中;
若所述包名位于迁移列表中迁移指定版本的部分,则判断重打包的软件包版本是否为指定版本,是则将重打包的软件包安装到新系统中,否则根据所述包名获取离线源中的对应软件包并判断是否为指定版本,如果离线源中对应软件包为指定版本,则将离线源中对应软件包安装到新系统中,如果离线源中对应软件包不为指定版本,则返回错误信息。
通过上述步骤,本实施例先识别出第三方应用程序,然后在系统替换过程中,将应用程序按照用户意愿,执行安装原版本、最新版本或是指定版本的迁移方式。
综上所述,本实施例通过将旧系统移动到备份目录,将新系统替换到根目录来实现操作系统升级。在系统启动后加载内核前,将旧系统整体移动到备份目录,然后将新系统平行替换到根目录下。在系统替换过程中,进行用户数据迁移、配置迁移、和应用迁移,实现保留了用户的原有数据、系统配置和应用程序的目的。先识别出哪些文件是用户数据,然后在系统替换过程中,将用户数据迁移到新系统的对应目录下。先识别出第三方应用程序,然后在系统替换过程中,将应用程序按照用户意愿,执行安装原版本、最新版本或是指定版本的迁移方式。根据预设的迁移列表,实现配置文件迁移和新系统的重新配置。
实施例二
本实施例提出与实施例一相对应的一种Linux操作系统的还原方法,其思路如下:
1)判断当前系统信息是否符合还原条件。不符合条件的结束还原,并提示具体原因;符合条件的进行下一步。
2)初始化当前还原状态为“开始还原”;创建还原使用的grub配置文件;创建还原使用的系统引导文件initrd;修改还原状态为“还原第一阶段结束”,然后重启。
3)执行2)中生成的grub选项的默认值,系统将以旧系统的内核启动。
4)在initrd过程中,移除root分区下的新系统,然后将备份文件夹中将原系统移动到根目录下;将用户数据移动到旧系统中;修改还原状态为“还原第二阶段结束”。
5)等到系统完成启动后,修改还原状态为“还原成功”。
基于上述思路,本实施例的还原方法包括以下步骤:
首先执行第一阶段,判断当前系统的信息是否符合还原条件,否则提示具体原因,结束并退出;是则创建旧系统对应的引导文件initrd和grub配置文件,如图6所示,包括以下步骤:
步骤601:判断系统是否符合还原条件,条件包括:系统是否由实施例一的升级方式升级得来、系统版本(当前系统版本大于旧系统的版本)、升级时间(当前系统的升级时间未超过预设的阈值);如果不符合,执行步骤602;如果符合,执行步骤603;
步骤602:退出还原,输出原因;
步骤603:初始化还原状态“还原开始”;
步骤604:创建还原用的grub配置文件;
步骤605:创建还原用的initrd文件;
步骤606:修改还原状态为“还原第一阶段结束”;
然后执行第二阶段,重新启动并使用旧系统对应的引导文件initrd和grub配置文件来启动旧系统,启动过程中删除根目录下当前系统的文件,将备份文件夹中旧系统的文件移动到根目录下,如图6所示,包括以下步骤:
步骤607:重启;
步骤608:判断grub选项中是否包含参数 backup,如果包含,执行步骤610;如果不包含,执行步骤609;
步骤609:Initrd过程中,执行原流程;
步骤610:判断备份文件夹是否存在,如果存在,执行步骤612;如果不存在,执行步骤611;
步骤611:返回错误信息;
步骤612:删除新文件系统;
步骤613:将旧文件系统从备份目录恢复到根目录;
步骤614:修改还原状态为“还原第二阶段技术”;
步骤615:系统启动完成,修改还原状态为“还原成功”。
与实施例一类似,本实施例中,创建旧系统对应的引导文件initrd和grub配置文件时,包括以下步骤:
获取当前系统的grub配置文件并解析,得到分区的UUID、驱动加载项以及配置参数;
创建旧系统的内核文件对应的加载内核参数配置,并替换所述配置参数中的对应参数;
根据驱动加载项创建新的引导文件initrd的参数配置;
根据所述分区的UUID、驱动加载项以及配置参数创建新的grub配置文件,在新的grub配置文件中添加第二目标字段。
本实施例中,重新启动并使用旧系统对应的引导文件initrd和grub配置文件来启动旧系统之后,还包括更新旧系统对应的grub配置文件的步骤,具体的,在步骤615的旧系统启动完成后,在旧系统对应的grub配置文件中删除第二目标字段,使得后续的开机启动或者重新启动时,不会再次进行自动还原。
本实施例中,重新启动并使用旧系统对应的引导文件initrd和grub配置文件来启动旧系统时,包括以下步骤:
判断grub配置文件中是否包含第二目标字段,否则先加载所述引导文件initrd再根据所述grub配置文件加载旧系统的内核,是则加载所述引导文件initrd的同时,还执行以下步骤:
判断备份文件夹是否存在,如果不存在,返回错误信息;
如果存在,删除根目录下的当前文件系统,然后将旧文件系统从备份文件夹中恢复到根目录。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方法的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方法保护的范围内。
Claims (8)
1.一种Linux操作系统的升级及还原方法,其特征在于,升级方法包括以下步骤:
获取新系统的镜像文件,将所述镜像文件解压得到新系统的文件,将所述新系统的文件保存在临时文件夹中,获取当前系统中的系统配置信息,获取当前系统中的第三方应用,创建新系统对应的引导文件initrd和grub配置文件,获取当前系统中的第三方应用时,包括:根据当前系统中的第三方应用的桌面文件找到对应的包名,将对应的软件包进行重打包,并做自包含处理得到重打包的软件包,将重打包的软件包保存在指定路径;
重新启动并使用所述引导文件initrd和grub配置文件来启动新系统,启动过程中将当前系统的文件移动到备份文件夹中,将新系统的文件移动到根目录下,然后将用户数据迁移到新系统中;
新系统启动完成后,根据系统配置信息完成配置,将第三方应用迁移到新系统中,将第三方应用迁移到新系统中时,包括:
将当前重打包的软件包的包名匹配预设的迁移列表;
若所述包名位于迁移列表中无需迁移的部分,将下一重打包的软件包的包名匹配预设的迁移列表;
若所述包名位于迁移列表中需要迁移的部分或是不在迁移列表中,则判断是否联网,如果已联网,根据所述包名获取在线源中的对应软件包并安装到新系统中,如果未联网,则将重打包的软件包安装到新系统中;
若所述包名位于迁移列表中迁移指定版本的部分,则判断重打包的软件包版本是否为指定版本,是则将重打包的软件包安装到新系统中,否则根据所述包名获取离线源中的对应软件包并判断是否为指定版本,如果离线源中对应软件包为指定版本,则将离线源中对应软件包安装到新系统中,如果离线源中对应软件包不为指定版本,则返回错误信息;
还原方法包括以下步骤:
创建旧系统对应的引导文件initrd和grub配置文件;
重新启动并使用旧系统对应的引导文件initrd和grub配置文件来启动旧系统,启动过程中删除根目录下当前系统的文件,将备份文件夹中旧系统的文件移动到根目录下。
2.根据权利要求1所述的Linux操作系统的升级及还原方法,其特征在于,获取当前系统中的系统配置信息时,包括:获取预设的迁移列表中的配置项,查找当前系统的对应配置信息并生成当前系统的配置文件,将当前系统的配置文件替换新系统的文件中的配置文件。
3.根据权利要求2所述的Linux操作系统的升级及还原方法,其特征在于,将所述镜像文件解压得到新系统的文件之后还包括:将新系统的文件中镜像文件的源和配置文件拷贝到指定路径进行备份。
4.根据权利要求1所述的Linux操作系统的升级及还原方法,其特征在于,创建新系统对应的引导文件initrd和grub配置文件时,包括以下步骤:
获取当前系统的grub配置文件并解析,得到分区的UUID、驱动加载项以及配置参数;
创建新系统的内核文件对应的加载内核参数配置,并替换所述配置参数中的对应参数;
根据驱动加载项创建新的引导文件initrd的参数配置;
根据所述分区的UUID、驱动加载项以及配置参数创建新的grub配置文件,在新的grub配置文件中添加第一目标字段。
5.根据权利要求4所述的Linux操作系统的升级及还原方法,其特征在于,将第三方应用迁移到新系统中之后还包括更新新系统对应的grub配置文件的步骤,具体包括:在新系统对应的grub配置文件中删除第一目标字段,然后再次重新启动并使用所述引导文件initrd和grub配置文件来启动新系统;重新启动并使用所述引导文件initrd和grub配置文件来启动新系统时,包括以下步骤:
判断grub配置文件中是否包含第一目标字段,否则加载所述引导文件initrd之后根据所述grub配置文件加载新系统的内核,是则加载所述引导文件initrd的同时,还执行以下步骤:
判断root分区是否存在,如果不存在,返回错误信息;
如果存在,在root分区创建备份文件夹,将旧文件系统从root分区根目录移动到备份文件夹;
将新文件系统从临时文件夹移动到root分区根目录下,将旧文件系统中所有者为用户的文件迁移到新文件系统的对应目录下。
6.根据权利要求1所述的Linux操作系统的升级及还原方法,其特征在于,创建旧系统对应的引导文件initrd和grub配置文件时,包括以下步骤:
获取当前系统的grub配置文件并解析,得到分区的UUID、驱动加载项以及配置参数;
创建旧系统的内核文件对应的加载内核参数配置,并替换所述配置参数中的对应参数;
根据驱动加载项创建新的引导文件initrd的参数配置;
根据所述分区的UUID、驱动加载项以及配置参数创建新的grub配置文件,在新的grub配置文件中添加第二目标字段。
7.根据权利要求6所述的Linux操作系统的升级及还原方法,其特征在于,重新启动并使用旧系统对应的引导文件initrd和grub配置文件来启动旧系统之后,还包括:旧系统启动完成后,在旧系统对应的grub配置文件中删除第二目标字段;重新启动并使用旧系统对应的引导文件initrd和grub配置文件来启动旧系统时,包括以下步骤:
判断grub配置文件中是否包含第二目标字段,否则加载所述引导文件initrd之后根据所述grub配置文件加载旧系统的内核,是则加载所述引导文件initrd的同时,还执行以下步骤:
判断备份文件夹是否存在,如果不存在,返回错误信息;
如果存在,删除根目录下的当前文件系统,然后将旧文件系统从备份文件夹中恢复到根目录。
8. 根据权利要求1所述的Linux操作系统的升级及还原方法,其特征在于,将所述镜像文件解压得到新系统的文件之前,包括:若当前系统的信息或者所述镜像文件的信息不符合升级条件,提示具体原因,结束并退出; 若当前系统的信息和所述镜像文件的信息均符合升级条件,将所述镜像文件解压得到新系统的文件;
创建旧系统对应的引导文件initrd和grub配置文件之前,包括:判断当前系统的信息是否符合还原条件,否则提示具体原因,结束并退出;是则创建旧系统对应的引导文件initrd和grub配置文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311225108.6A CN116954673B (zh) | 2023-09-21 | 2023-09-21 | 一种Linux操作系统的升级及还原方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311225108.6A CN116954673B (zh) | 2023-09-21 | 2023-09-21 | 一种Linux操作系统的升级及还原方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116954673A CN116954673A (zh) | 2023-10-27 |
CN116954673B true CN116954673B (zh) | 2023-12-26 |
Family
ID=88449717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311225108.6A Active CN116954673B (zh) | 2023-09-21 | 2023-09-21 | 一种Linux操作系统的升级及还原方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116954673B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312056A (zh) * | 2023-11-29 | 2023-12-29 | 麒麟软件有限公司 | 一种操作系统升级备份方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373410A (zh) * | 2015-12-22 | 2016-03-02 | 京信通信技术(广州)有限公司 | 基站软件差分升级方法及其装置 |
CN106126297A (zh) * | 2016-06-30 | 2016-11-16 | 西安诺瓦电子科技有限公司 | 基于Android操作系统的系统升级方法 |
CN115718612A (zh) * | 2022-11-30 | 2023-02-28 | 成都安恒信息技术有限公司 | 一种cf卡操作系统的更新方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098419A1 (en) * | 2002-11-18 | 2004-05-20 | International Business Machines Corporation | Method and apparatus for a migration assistant |
CN107870769B (zh) * | 2016-09-23 | 2020-08-04 | 新华三信息技术有限公司 | 操作系统的安装方法及装置 |
-
2023
- 2023-09-21 CN CN202311225108.6A patent/CN116954673B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373410A (zh) * | 2015-12-22 | 2016-03-02 | 京信通信技术(广州)有限公司 | 基站软件差分升级方法及其装置 |
CN106126297A (zh) * | 2016-06-30 | 2016-11-16 | 西安诺瓦电子科技有限公司 | 基于Android操作系统的系统升级方法 |
CN115718612A (zh) * | 2022-11-30 | 2023-02-28 | 成都安恒信息技术有限公司 | 一种cf卡操作系统的更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116954673A (zh) | 2023-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6928579B2 (en) | Crash recovery system | |
CN106227579B (zh) | 一种Docker容器构建方法及Docker管理控制台 | |
CN1304946C (zh) | 启动和启动代码更新方法 | |
US8365164B1 (en) | Portable software applications | |
US8166285B2 (en) | Method and system for booting and automatically updating software, and recovering from update error, and computer readable recording medium storing method | |
RU2495481C2 (ru) | Размещение программного обеспечения в больших сетевых системах | |
US9081639B2 (en) | System and method for remotely re-imaging a computer system | |
CN116954673B (zh) | 一种Linux操作系统的升级及还原方法 | |
EP3769224B1 (en) | Configurable recovery states | |
US10795688B2 (en) | System and method for performing an image-based update | |
US20200341746A1 (en) | Snapshot recovery states | |
JP6791323B1 (ja) | コンテナイメージ統合システム、コンテナイメージ統合方法及びプログラム | |
CN116360834A (zh) | 基于OSTree的Kubernetes集群原地升级方法及系统 | |
WO2019182797A1 (en) | Free space pass-through | |
CN115291925A (zh) | 一种bmc升级方法、系统、设备及存储介质 | |
KR102423056B1 (ko) | 부팅 디스크 변경 방법 및 시스템 | |
CN117873676A (zh) | 控制系统的启动方法、装置、控制系统及计算机程序产品 | |
JP2003140905A (ja) | システムプログラムのバージョンアップ方法,システムプログラムのバージョンアップ用プログラムおよびシステムプログラムのバージョンアップ用プログラム記録媒体 | |
WO2015068206A1 (ja) | 計算機、そのモジュールの修正方法 | |
CN116501363A (zh) | 软件离线快速升级方法、装置、计算机设备及存储介质 | |
CN116382726A (zh) | 一种资源更新方法、系统、电子设备及存储介质 | |
KR20040052305A (ko) | 내장형 시스템을 위한 운영체제 로딩 시스템 및 방법 | |
CN115421763A (zh) | 一种智慧金融计算机自动更新固件方法、终端及存储介质 | |
CN115827013A (zh) | 系统的升级方法、计算设备及可读存储介质 | |
CN117111987A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |