GRUB原理 本文共有1709个字,关键词: GNU GRUB(简称“GRUB”,GRand Unified Bootloader)是一个来自GNU项目的多操作系统启动管理器,它允许用户可以在计算机内同时安装有多个操作系统,比如不同版本的Windows和Linux,并在计算机启动时选择希望运行的操作系统。Grub一直在发展,现在的发行版都用Grub 2了,但是基本的启动引导原理是差不多的,所以还是以传统的Grub为例(在CentOS 5.5上)。 GRUB只是工具,有自己的体系,比如有自己的命令 我们知道,引导扇区是每个分区(Partition)的第一扇区,而主引导扇区是硬盘的第一扇区。主引导扇区由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节。第二部分是分区表,即DPT(Disk Partition Table),占64个字节。分区表含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节。这也就是为什么一个硬盘最多只能有4个主分区(包括一个扩展分区,(扩展分区可以再分为多个逻辑分区))的原因。第三部分是硬盘有效标志,占2个字节,固定为55AA,如果该标志错误系统就不能启动。 Grub的实质是一个mini os,它拥有shell,支持script,支持特定文件系统……grub由stage1,stage1-5,stage2以及/boot/grub目录下的诸多文件(包括Grub的配置文件与相关文件系统定义文件等)组成,其核心是stage2,主要功能在于完成操作系统的引导工作。Grub可以安装在MBR,也可以安装在一个Linux分区的引导扇区,这2种情况是略有不同的。 先介绍一下Grub的三个文件: 1) stage1的代码文件,是源码目录下stage1/stage1.S,汇编后便成了一个512字节的img,被写在硬盘的0面0道第1扇区,作为硬盘的主引导扇区。(这512字节还包括分区表DPT以及主引导扇区标志“55AA”) 2) stage1_5就是文件系统的解释代码,根据/boot分区(或/boot所在分区)的具体文件系统类型而异,如:ext3分区的话就是 e2fs_stage1_5。在stage1_5没有被加载以前,系统无法识别任何文件系统(但是可以通过BIOS中断方式INT 13h读取磁盘指定扇区的内容)。 3) stage2是grub最核心的部分。它运行后,会把系统切入保护模式,设置好c运行环境然后寻找menulist,如果没有的话就执行一个shell,等待我们输入命令,并在执行boot命令以后就会把控制权转交出去。 当系统固件自检没问题后,就会读取MBR的第一个位置Bootloader(主要是GRUB),注意GRUB只是启动系统的工具而已,并非系统本身,GRUB启动时,通常从/boot/grub/menu.lst读取引导配置,起始这个文件是一个软连接,实质上是读取grub.conf文件,由于所有设备在Linux中都是被看为文件的,所以磁盘在Linux和GRUB(为什么要说GRUB,后面会写到)中是怎么表示的。常见的磁盘有IDE ,SCSI,SATA接口的,IDE在Linux中用字符hd来表示,如果有一块那就是hda,有两块那就是hdb。以此类推,对与在GRUB中用hd0来表示第一块,hd1来表示第二块;对于SCSI,SATA磁盘用sd来表示,同样sda表示第一块,sdb表示第二块。在GRUB中同样用hd来表示,同样是hd0表示第一块,hd1表示第二块。《计算机组成原理》告诉你,磁盘在分区的时候有三大分区:主分区,扩展分区,逻辑分区,主分区+扩展分区个数<=4。这里主要说明主分区,在Linux上sda1,sda2,sda3,sda4(以SATA为例子)表示四个主分区,sda5,sda6。表示逻辑分区,这里的sda1(其他就不说了)表示第一块硬盘的第一个主分区,那么在GRUB中就表示为(hd0,0)hd0表示第一块硬盘,后面的0表示第一个分区。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 随手笔记 2019-04-25 评论 3173 次浏览