Linux启动引导过程 grub和mbr


GNU GRUB(简称“GRUB”)是一个来自GNU项目启动引导程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

mbr是硬盘的主引导记录,属于引导区

内核简介

内核(kernel),是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux

 

内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。

严格地说,内核并不是计算机系统中必要的组成部分。程序可以直接地被调入计算机中执行,这样的设计说明了设计者不希望提供任何硬件抽象和操作系统的支持,它常见于早期计算机系统的设计中。最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器核心当中,或者固化在只读存储器里。这些变化发生时,操作系统内核的概念就渐渐明晰起来了。

 

 

BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

 

DOS,是磁盘操作系统(Disk Operating System)英文的缩写,是个人计算机上的一类操作系统。

 

BOOT,系统引导文件,在根目录下,bios设置中主要用于设置系统启动的地方,比如可以设置从硬盘,光驱或U盘启动。

 

 

Mbrgrub引导系统

在装系统的时候,会有提示为系统装载什么样的引导程序,其中就有一个grub引导程序。而系统装完后,启动的时候,mbr会直接载入grub引导程序。

  由硬盘启动时,BIOS通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR)。

  装载GRUB和操作系统的过程,包括以下几个操作步骤:

  装载记录

  基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。mbr载入grub的过程。

  装载Grub

这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统。所以有多种引导装载程序,grub只是其中一种。这里强调指出,grub只是mbr的升级版,补充完成mbr所做不了的事情,其实他们的本质都一样,都是引导程序。也可以这么理解,mbr是唯一的,基于mbr之上的引导程序不唯一。而为什么在字节大小一样的条件下,mbr不能做的事情,grub却能够做到,这一点我还在研究中。Grub高级在什么地方?

知识点补充:从定义上看,mbr是磁盘上的一小段扇区,而grub是一段程序,虽然他们都是起到了引导系统的作用,但归根结底本质是不一样的。我们可以这样理解,mbr是在起到引导作用的同时,用来存放代码的空间,而grub则是单纯的引导程序,程序一执行,bios就将系统对内核的操作权限交给了操作系统,接下来的事情就跟grub这些引导程序没有了半毛钱的关系。(我说的若是有错,希望高手看到,帮忙指出啊。)

装载系统

简单的说,就是把机器的控制权移交给操作系统。

  不同的是,微软操作系统都是使用一种称为链式装载的引导方法来启动的,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区。

  设备名称

IDE硬盘用hd开始,SCSI硬盘用sd开头。软盘用fd开头。命名和linux不大一样。是从0算起。

  (hd0,0)。表示C盘。

  (hd0,4)。表示D盘。当然这里指的是(第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1

  系统的第一个硬盘驱动器表示成(hd0),其上的第一个分区表示为(hd0,0),也就是说对于硬盘,采用(hdx,y)的形式来表示,xy都是从0开始计数的,x表示硬盘号,y表示分区号。

由于主分区只能有四个,所以第一硬盘的四个主分区分别用(hd0,0~hd0,3)来表示;逻辑分区则从(hd0,4)开始算,即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。 一般机子的硬盘都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。

光盘用(cd)表示,第一软驱用(fd0)表示。

  文件的表示:( , /path/to/file

下面这段话是我从别处粘贴过来的,有兴趣可以研究一下。

因为BIOS很小,功能有限,为了完成加载操作系统的功能,就产生了mbrbios检测到一个硬盘后,将硬盘的0柱面、0磁头、1扇区的内容经过简单判断后, 至内存中的指定位置,然后跳转至这个位置,开始从这个位置运行; MBR,全称为Master Boot Record,即硬盘的主引导记录。 为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指引导程序而言。 硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPTDisk Partition table)和硬盘有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有 多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。 !!!!!!!!!!!!!!!!!!!!! 一般,会将mbr功能的引导代码与mbr扇区混淆; 其实,grub是直接写进mbr硬盘的主引导记录中的,计算机BIOS 在启动时,按照预定的方式,将mbr内的代码加载至内存指定位置, 然后跳转至那里,mbr的代码就开始运行了! 如果将grub写入mbrbios就引导grub; 将winxp的引导代码写入mbrbios就引导ntldr; 将dos的引导代码写入mbrbios就引导dos; 总之,mbr是用来存放,由bios加载、运行的一小段代码; 代码的功能,由他们自己实现(如,在引导dos之前,先运行一个病毒, 这就是引导型病毒); dos下执行grub.exe,其实,就是由dos执行grub.exe来完成bios加载引导代码的功能, 实现引导的; 简单地说,grub.exe dos下的可执行程序,由dos运行; grub是引导代码,由bios加载至内存(指定位置)开始执行; 他们最终实现的功能是一样的(都是将引导代码加载至内存指定位置,并运行)。 另外,mbr是独立于操作系统的,地位与分区表同级,所以,格式化任何分区内都影响不到他, 包括ghost备份,还原。

grub 的安装与使用  

grub引导程序配置文件分析

grub被损坏后的修复演示

RHCE_RHEL6_124 U20.3 解决Grub问题,修复mbr 

相关内容