基于Anaconda修复Grub引导装载程序的方法

文档序号:6332810阅读:236来源:国知局
专利名称:基于Anaconda修复Grub引导装载程序的方法
技术领域
本发明涉及一种修复Grub引导装载程序的方法,尤其是一种Linux系统下基于 Anaconda修复Grub引导装载程序的方法。
背景技术
通常用户安装Linux操作系统都是将Grub安装在MBR上,但是,由于种种原因,例如在安装Linux的机器上再安装Windows操作系统或因为误操作清洗数据,可能会清除MBR 的数据,导致Linux系统无法找到Grub从而无法启动已安装的Linux系统。目前主要的解决方案有以下三种方式l)Linux 环境 Live CD 修复 Grub目前主流的Linux操作系统如Ubuntu和!^edora系列都提供Live CD,通过Live CD提供的环境可以利用修复引导程序的命令修复之,其具体操作流程如图1所示;2) Linux 环境 rescue 模式修复 Grub在诸如RHEL5光盘启动时,提供了 rescue模式用来修复已安装系统的错误,同样这种模式也可以修复Grub引导装载程序,其具体工作流程如图2所示;3) Windows 环境 grub4dos 工具修复 GrubWindows环境下,可以利用grub4dos工具进入Grub环境,通过相关命令和参数来修复Grub,其具体操作流程如图3所示。目前普遍应用的解决方案就是以上三种方式。以上三种方式修复Grub引导装载程序的原理都是一样的,即通过运行外部命令——grubinstall来实现的,且都存在一个共同的问题易用性差。以上三种解决方案在易用性方面存在以下问题1)修复Grub弓I导装载程序不完善现有技术方案只对Grub引导装载程序提供了基本的修复工作,仅仅完成了修复之后能够引导起操作系统,缺少通过传递参数实现自定义Grub引导装载程序的功能。2)操作步骤复杂通过以上的操作流程图可以看出,要完成Grub引导装载程序的修复至少需要5个复杂的步骤,且几乎每个步骤都需要输入一些命令和参数,输入不准确时还可能需要重新启动系统,带来不必要的麻烦。3)对实施者能力要求较高以上的方案要求实施者对Linux系统和Grub工作机制有比较深入的了解方可实施,而对于一般的Linux用户而言,这种修复方式是一种挑战。4)操作界面不友好现有几种解决方案不是一个统一的软件或步骤修复Grub,故没有一个整套的软件界面供用户交互。用户只能通过编辑配置文件,并通过在终端以命令行的方式执行修复命令,为修复操作带来很大的不便。5)不能对Grub弓丨导装载程序加密
现有解决方案没有提供为Grub引导装载程序加密的方法,对于安全系数要求较高的系统来说存在安全隐患。6)不能为Grub引导装载程序传递内核参数现有解决方案不能传递内核参数,无法满足用户启动操作系统时按照自己的偏好或需求自定义操作系统弓I导的内核参数。7)不能自定义Grub引导装载程序的安装位置现有解决方案不能自定义Grub引导装载程序的安装位置。现有解决方式只能将 Grub引导装载程序安装到MBR,不支持安装到其他的分区。不能满足用户自定义安装位置的需求。本发明涉及到的相关技术术语的名词解释Grub =GNU GRUB (简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB 是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。MBR 全称为Master Boot Record,即硬盘的主引导记录。Live⑶即可以直接引导为可用Linux系统的⑶。Linux的rescue模式=Linux的修复模式,可以直接从引导介质启动,进入修复已安装Linux操作系统的修复环境。grub4dos :grub4dos是一个优秀的双(多)系统引导软件,使用GRUB4D0S可以很方便的引导各种操作系统,比如DOS、Windows、Linux等。Anaconda安装程序Anaconda是Red Hat Linux和Fedora的安装管理程式。它以Python及C语言写成,以图形的PyGTK和文字的python-newt界面写成。它可以用来自动安装配置,使用户能够以最小的监督运行。

发明内容
本发明提供了一种与现有Grub引导装载程序修复技术不同的另一种修复技术, 即摒弃传统的使用grubinstall命令修复Grub引导装载程序,而是通过python程序调用 Anaconda提供的程序接口,实现对Grub引导装载程序的修复。本发明把修复Grub引导装载程序的新方法融入到Linux安装程序Anaconda中, 将其作为安装过程的若干步骤,为用户提供操作友好的交互界面和简洁易用的操作步骤, 使得用户能够快速、准确修复Grub引导装载程序。本发明采用的技术方案是将修复Grub弓|导装载程序作为Linux操作系统安装程序Anaconda的一个功能模块来实现的。这一方法的实现包括以下步骤1)将修复Grub引导装载程序的步骤注册至Anaconda安装程序(步骤Si)定义修复Grub弓丨导装载程序各个步骤的执行顺序,在整个过程中起到了分配任务和向导的作用。2)实现修复类步骤(步骤S2),即修复Grub引导装载程序的程序类定义启动 Anaconda程序直至修复弓I导完成所需经历的所有步骤和一些初始化定义。3)修复Grub引导装载程序配置,包括基本配置(步骤S3a)和高级配置(步骤 S3b)。其中,基本配置选项(步骤S3a)包括Grub引导装载程序的标签,以及设置Grub引
5导装载程序的密码;高级配置选项(步骤S3b)包括Grub引导装载程序的安装位置,是否使用LBA32,以及供用户输入内核参数的接口。4)执行安装Grub引导装载程序(步骤S5),完成修复工作将配置好的Grub引导装载程序安装在指定的位置,完成对受损Grub引导装载程序的配置修复工作。5)退出安装程序(步骤S6)修复Grub引导装载程序的善后处理工作。本发明提供了一种自动化修复Grub引导装载程序的方法,克服了现有技术修复 Grub引导装载程序操作步骤复杂、对实施者能力要求高、操作界面不友好、无法加密Grub 引导装载程序、无法为Grub传递内核参数、无法自定义Grub引导装载程序安装位置等缺陷,实现一种更易用、功能更完善的修复Grub引导装载程序的方法。本发明与现有技术相比在易用性和交互性方面有了很大的改进,主要体现在以下几个方面1)相对于现有技术的复杂操作,本发明为修复Grub引导装载程序提供了一个统一的工具,即将其集成至操作系统安装步骤中;2)相比较现有技术没有提供交互界面,本发明为修复Grub引导装载程序提供了一个友好的图形化人机交互界面,方便用户操作;3)相比较与现有技术,本发明提供的修复Grub引导装载程序的方法更简洁、更易操作,只需要经过选择修复、配置、确定三个步骤即可;4)相比较与现有技术,本发明提供的方法更易上手,对实施人员技术经验要求比较低,本发明提供了默认选项,即使不经过任何配置也能够完成Grub引导装载程序的修复工作;5)相对于现有技术,本发明对修复Grub引导装载程序的功能做了进一步完善,即实现Grub引导装载程序的高级配置,包括对Grub引导装载程序的加密保护、对Grub引导装载程序传递内核参数以及自定义Grub引导装载程序的安装位置。其中加密引导装载程序可以对操作系统进行加密保护,防止不允许启动操作系统的人非法启动系统;对Grub引导装载程序传递内核参数可以实现系统启动的自定义方式,如图形方式启动系统、屏蔽系统启动时的细节信息等;自定义Grub引导程序的安装位置可以自定义将Grub引导装载程序安装到MBR或分区头上。


图1为现有Linux环境Live CD修复Grub流程图;图2为现有Linux环境rescue模式修复Grub流程图;图3为现有Windows环境grub4dos工具修复Grub流程图;图4为本发明修复Grub引导装载程序流程图;图5为加密Grub引导装载程序流程图;图6为传递Grub引导装载程序内核参数流程图;图7为自定义Grub引导装载程序安装位置流程图。
具体实施例方式为了使本发明所采用的技术、手段及其优点,现举优选实施例并配合附图详述如后,此仅供说明之用,在专利申请上并不受以下具体实施方式
的限制。本发明以Linux操作系统安装程序Anaconda为基础,将修复Grub引导装载程序的方法引入到Anaconda机制中来实现的。本发明的交互界面包括图形界面和字符界面两种方式,分别对应于Anaconda安装程序的图形安装模式和字符安装模式。本发明的具体实施过程包括以下步骤1)将修复Grub引导装载程序的步骤注册至Anaconda安装程序(步骤Si)这一步骤是实现在安装过程中修复Grub装载引导程序的前提,它定义了修复 Grub弓丨导装载程序各个步骤的执行顺序,在整个过程中起到了分配任务和向导的作用。在Anaconda程序中有个dispatch, py文件,该文件实现对安装步骤的调度和控制,它有一个列表类型的数据结构installSt印s,该数据结构定义了安装程序所有的安装步骤,即所有的安装步骤都必须注册到installSt印s才能在安装过程中被调度和执行。注册修复Grub引导装载程序的步骤即是将其包含的所有步骤以installSt印s定义的格式添加到installSt印s列表中,installkps列表中包括前端步骤和后端步骤,其中前端步骤即可视化的提供与用户交互的步骤,后端步骤指在后台运行的步骤,不与用户交互。注册完 Grub引导程序修复步骤后,这些步骤就具备了被Anaconda安装程序调度和执行的基本条件。2)实现修复类步骤(步骤S》,即修复Grub引导装载程序的程序类修复Grub引导装载程序类继承了 installclass. py文件中的BasehstallClass 类,该类定义了基本安装类。修复Grub引导装载程序类定义了启动Anaconda程序直至修复弓I导完成所需经历的所有步骤和一些初始化定义。这些工作主要由其成员函数setSt印s 来做,该函数调用dispatch的接口函数setSt印List实现此功能。该步骤也可通过其他的方法实现之,例如通过创建函数调用dispatch的接口函数setSt印List实现,或通过其他的方式调用dispatch接口函数seUteplist实现。3)修复Grub引导装载程序配置,包括基本配置(步骤S3a)和高级配置(步骤 S3b)基本配置选项(步骤S3a)包括Grub引导装载程序的标签,以及设置Grub引导装载程序的密码;高级配置选项(步骤S3b)包括Grub引导装载程序的安装位置,是否使用 LBA32,以及供用户输入内核参数的接口。用户在基本配置中选择是否进行高级配置(步骤 S4),若高级配置开关打开则进入高级配置选项,否则跳过高级配置。配置修复Grub引导装载程序选项是与用户交互的部分,在Anaconda安装程序中, 与用户交互的界面包括图形界面和字符界面两种模式。故配置Grub引导装载程序交互界面的实施需要实现图形模式界面和字符模式界面。
具体实施方式
是分别创建图形界面配置类和字符界面配置类。图形化的基本配置类和高级配置类继承hstallWindow类,并实现其父类的接口。在图形化配置类中用GTK编程实现图形化的交互界面,提供用户基本配置选项和高级配置选项,包括Grub引导程序标签、密码设置、引导程序安装位置、是否使用 LBA32及内核参数等控件和说明;用snap编程实现字符界面,为用户提供基本配置选项和高级配置选项,实现和图形化模式下相同的字符控件和说明。在用户完成配置后,将每个选项关联到与之对应的Grub相关参数,即为Grub引导装载程序设置参数值,完成修复Grub 引导装载程序的配置工作。
其中,本发明实现了 Grub引导装载程序加密、为Grub引导装载程序传递内核参数、自定义Grub引导装载程序安装位置等功能。本发明举出如下具体实现方式加密Grub引导装载程序如附图5所示首先实现Grub引导装载程序加密的用户交互接口(步骤S311)。后端程序获取加密口令(步骤S3U)后,为bootloader对象设置加密口令值(步骤S313),并将加密口令写入配置文件(步骤S314)。待Grub引导装载程序修复完成后,重启系统,Grub会自动调用程序要求输入Grub密码。传递Grub弓丨导装载程序内核参数如附图6所示在高级配置步骤提供用户输入的接口(步骤S321),供用户输入自定义的内核参数。后端程序接收用户输入的内核参数值 (步骤S32》,并格式化内核参数(步骤S32!3)。bootloader对象有内核参数的属性args, 将内核参数列表赋值给args属性(步骤S3M)。在安装修复Grub引导装载程序时,将这些内核参数写入到Grub引导装载程序的配置文件grub, conf (步骤S32Q。这样在用户使用 Grub引导装载程序引导系统时,系统会以带有内核参数的方式引导。自定义Grub引导装载程序安装位置如附图7所示提供选择安装位置的用户接口(步骤S331),包括安装到MBR或安装到引导分区的第一个扇区。后端程序获取位置信息 (步骤S33》,并对bootloader对象的安装位置属性设置值(步骤S33!3),在之后执行安装修复Grub引导装载程序时,安装程序会依据该属性值,将Grub引导装载程序安装到指定的位置(步骤S334)。4)执行安装Grub弓丨导装载程序(步骤S5),完成修复工作这一功能的实施是由instbootloader这一安装步骤完成的,它调用bootloader. PY的writeBootloader接口,根据安装Grub引导装载程序的配置参数,将配置好的Grub引导装载程序安装在指定的位置,完成对受损Grub引导装载程序的配置工作。5)退出安装程序(步骤S6)完成修复Grub引导装载程序后退出安装程序,这一步是修复Grub引导装载程序的善后处理工作,根据Anaconda安装系统和升级系统的风格,修复引导装载程序也设计了修复引导成功后退出Anaconda安装程序或重启系统的选项,提供给用户退出Anaconda安装程序的交互界面,且该交互界面包含图形模式和字符模式两种。
权利要求
1.一种Linux系统下基于Anaconda修复Grub引导装载程序的方法,其特征在于,将修复Grub引导装载程序作为Linux操作系统安装程序Anaconda的一个功能模块,通过 python程序调用Anaconda所提供的程序接口,实现对Grub引导装载程序的修复。
2.如权利要求1所述的方法,其特征在于,所述方法包括以下步骤1)注册修复步骤,将修复Grub引导装载程序的步骤注册至Anaconda安装程序;2)实现修复类步骤,即修复Grub引导装载程序的程序类;3)配置步骤,修复Grub引导装载程序配置;4)执行步骤,执行修复Grub引导装载程序。
3.如权利要求2所述的方法,其特征在于,所述步骤1)是将修复Grub引导装载程序包含的所有步骤以installSt印s定义的格式添加到installSt印s列表中,installkps列表中包括前端步骤和后端步骤,其中前端步骤为可视化的提供与用户交互的步骤,后端步骤指在后台运行的步骤,不与用户交互。
4.如权利要求2所述的方法,其特征在于,所述步骤2)是由成员函数setSteps 调用dispatch的接口函数setSt印List,或通过创建函数调用dispatch的接口函数 setStepList实现定义启动Anaconda程序直至修复引导完成所需经历的所有步骤和初始化定义。
5.如权利要求2所述的方法,其特征在于,所述步骤幻包括分别创建图形界面配置类和字符界面配置类,为用户提供基本配置选项和高级配置选项。
6.如权利要求5所述的方法,其特征在于,所述基本配置选项包括Grub引导装载程序的标签,以及设置Grub引导装载程序的密码;所述高级配置选项包括设置Grub引导装载程序的安装位置,是否使用LBA32,以及供用户输入内核参数的接口 ;用户能在基本配置选项中选择是否进行高级配置,若高级配置开关打开则进入高级配置选项,否则跳过高级配置。
7.如权利要求6所述的方法,其特征在于所述设置Grub引导装载程序的密码的具体方法包括首先实现Grub引导装载程序加密的用户交互接口,由后端程序获取加密口令,为bootloader对象设置加密口令值,并将加密口令写入配置文件;所述供用户输入内核参数的接口可供用户输入自定义的内核参数,后端程序接收用户输入的内核参数值,并格式化该内核参数;bootloader对象具有内核参数的属性args,将该些内核参数列表赋值给args属性,在安装修复Grub弓丨导装载程序时,将这些内核参数写入到Grub引导装载程序的配置文件;所述设置Grub引导装载程序的安装位置的具体方法包括提供选择安装位置的用户接口,包括安装到MBR或安装到引导分区的第一个扇区,由后端程序获取位置信息,并对 bootloader对象的安装位置属性设置值,在执行安装修复Grub引导装载程序过程中,安装程序依据该属性值,将Grub引导装载程序安装到指定的位置。
8.如权利要求5所述的方法,其特征在于,所述步骤3)的在用户完成配置后,将每个选项关联到与每个配置选项对应的Grub相关参数,即为Grub引导装载程序设置参数值,完成修复Grub引导装载程序的配置工作。
9.如权利要求2所述的方法,其特征在于,所述步骤4)是由instbootloader函数调用 bootloader. py的writeBootloader接口,根据安装Grub引导装载程序的配置参数将配置CN 102419710 A_权禾丨J 要求书_2/2页 好的Grub引导装载程序安装在指定的位置,完成对受损Grub引导装载程序的配置工作。
10.如权利要求2所述的方法,其特征在于,所述方法还包括在完成修复Grub弓I导装载程序后退出安装程序的步骤。
全文摘要
本发明涉及一种基于Anaconda修复Grub引导装载程序的方法,摒弃传统使用grubinstall命令修复Grub引导装载程序,而是通过python程序调用Anaconda提供的程序接口,实现对Grub引导装载程序的修复。此外,本发明还实现了对Grub引导装载程序的加密功能、传递内核参数以及自定义Grub引导装载程序的安装位置。该方法主要包括注册、配置和修复这三个步骤,克服了现有技术修复Grub引导装载程序不完善、操作步骤复杂、对实施者能力要求高、操作界面不友好等缺陷。
文档编号G06F11/00GK102419710SQ20101029458
公开日2012年4月18日 申请日期2010年9月28日 优先权日2010年9月28日
发明者兰雨晴, 刘艳彬, 夏颖, 姜平, 张永军, 徐晓娟, 朱中涛, 杨建生, 王建慧, 甄东宇 申请人:中标软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1