GRUB2及启动过程详解_第1页
GRUB2及启动过程详解_第2页
GRUB2及启动过程详解_第3页
GRUB2及启动过程详解_第4页
GRUB2及启动过程详解_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、GRUB2和引导过程的详细信息作者:南瓜剪刀2016年7月28日1 .概要22. CentOS7中的GRUB223. GRUB2的bootstrap image文件33.1. boot.img33.2 .磁盘引导. img 43.3. kernel.img43.4 .酷睿. img 43.5. *.mod4与GRUB Legacy5进行比较4.1 .阶段154.2. *_stage1_554.3. stage255. grub2-mkimage自定义core.img66. GRUB2安装76.1. Linux如何命名设备(/dev/sda)76.2 .主引导记录(MBR ) 86.3. MBR

2、分区表盘分区表(DPT ) 106.4.LBA和CHS 146.4.1.CHS (环形头部二次性) 146.4.2.LBA (逻辑块地址) 146.5. boot.img和core.img的安装156.6 .硬盘总结187 .启动过程197.1. BIOS197.2 .在grub 2上启动. img 207.2.1. Step1无条件跳跃207.2.2. Step2初始化207.2.3. Step3确定硬盘是支持LBA还是仅支持CHS22使用7.2.4 .步骤4 LBA加载核心. img的第一个扇区23将7.2.5.step5core.img的第一个扇区复制到内存指定位置25执行7.2.6 .

3、步骤6核心. img第1条文277.2.7 .步骤7引导. img总结277.3. GRUB2的酷睿. img 287.3.1 .磁盘引导. img 287.3.2.grub 2酷睿启动347.3.3 .作为GRUB主函数的GRUB主功能377.3.4.linuxkernel38的加载7.4. Linux kernel478 .结语489 .参考文献481 .概要接通计算机系统电源后,用固定在ROM上的BIos(UEFI )进行操作,加载到硬盘MBR上启动,用引导加载器加载os内核,将控制传递给OS。 下图简单地显示了CentOS7启动过程(CentOS7将GRUB2用作引导加载器) :现在的

4、引导加载器有很多种类。 大概是:对Linux来说,GRUB2占主导地位对Windows来说,Bootmgr/BCD占主导地位苹果系统的缺省值为BootX作为一名计算机工程师,了解引导加载器的原理很重要。 本文重点介绍GRUB2及其启动流程。 读了正文,相信读者可以深入理解引导加载器的原理,大致上了解其他引导加载器的作用。本文在介绍了一些基本知识之后,在第7章中引入了基本的反汇编过程来说明GRUB2的启动过程。 只要直接读代码就能学习原理。 需要读者:-如果读者对汇编不感兴趣,则可以跳过相关章节,因为他们对汇编语言有知识。-读者也需要c语言的知识本文虽然有点长,但我相信作者自己的经验总结,安静地

5、读的话,会对你有帮助,比其他GRUB厚,可以节省很多时间。 但是,由于作者的水平有限,有忘记理解的地方。2. CentOS7中的GRUB2GRUB2是GNU的以下项目,详细信息请参考官方网站:http:/www.GNU.org/software/grub/. 原始grub (I.e .版本0.9x )在:grubbyslegacy .官方网站上描述为: grubbysnolongerbeingdeveloped以1.x开头的新版本称为GRUB 2(注意:虽然称为GRUB 2,但版本号以1.x开头的1.99也是GRUB 2)。 目前,包括CentOS7在内的各种最新版本的Linux都采用了GRU

6、B 2在CentOS7中,您可以查看安装的GRUB2的版本 root 控制器 # rpm-QA|grub grub2- 2.02-0.34.el7.centos.x86 _ 64在CentOS7下的/boot/GRUB2目录中显示与GRUB2相关的文件。 在/boot/grub2/i386-pc目录中有GRUB2 bootstrap images文件。 此目录中的大部分文件以. mod结尾,这些文件是grub2模块文件,最后在此目录下有两个image文件: root 控制器i386-PC # ls-lrt *.img- rw-r-.1根根2667u 6708233363033酷睿. img-

7、rw-r-.1根根512u 67082333364033引导. img两个img文件都使用grub2-install命令安装在硬盘上的适当位置(在硬盘位置之后说明)。 有趣的是两点。1) boot.img被固定在512字节上2) core.img小于32k字节如果有兴趣,可以使用file命令显示这些image文件类型 root controller i386-PC # fileboot.imgboot.img:x86引导扇区partition 4: ID=0xd4,starthead 205,startsector,0 sectors,代码offset0x 63 root controller

8、 i386-PC # filecore.img酷睿. img :数据 root controller i386-PC #文件xfs.modxfs.mod : elf 32-bitlsbrelocable,英特尔80386,版本1 (sysv ),不条带化boot.img文件命令指示这是x86引导扇区,但mod文件是ELF文件,下面对这些bootstrap image文件进行了详细说明3. GRUB2的bootstrap image文件GRUB2包含各种bootstrap images文件,包括: grub2-install会将这些image安装在硬盘的适当位置,并在系统设置完成后继续加载和引导

9、系统3.1. boot.img在PC BIOS系统上,此image首先在GRUB2上运行,并被写入主引导记录(MBR )或分区(partition )的引导sector中。 因为MBR或PC boot sector固定为512字节,所以此文件的大小也固定为512字节boot.img的功能很简单,主要将盘的core.img的第一扇区读取到存储器中,跳跃到该部分来执行(如果硬盘启动,则该扇区是后述的盘boot.img )。 因为只有512字节,所以boot.img不能加载文件系统(CentOS7的XFS和其他Linux的EXT4等),只能从固定的位置加载。3.2 .磁盘引导. img从硬盘启动时,

10、这是core.img的第一扇区的内容,主要功能是将剩馀的core.img读取到存储器中,与kernel.img .一样,diskboot.img具有文件系统的功能(XFS、EXT4等)。根据要引导的介质的不同,有很多文件,例如diskboot.img文件,您可以在安装GRUB时选择其中一个文件。 现在,大部分是从硬盘引导磁盘引导. img1 .从1.cdboot.img:cd-rom启动2 .从2.pxeboot.img:pxe网络启动3 .从其他引导加载器(如3.lnxmoot.img:lilo )启动时,该image将GRUB看起来像Linux内核3.3. kernel.img此文件包含G

11、RUB2的基本运行时支持。 设备和文件框架、环境变量、恢复模式下的命令行等。 一般不直接使用,但是是core.img不可缺少的部分3.4 .酷睿. img这是GRUB的核心。 他通过grub2-mkimage命令生存,包含kernel.img和必要的模块。 core.img通常包括足以访问XFS/EXT4文件系统/boot/grub2目录的模块,以及在执行时加载文件系统(XFS )的所有剩馀模块这些剩馀的模块包含引导目录处理、操作系统的加载等功能.模块化设计构想的最主要目的是保持core.img足够小,现在磁盘限制core.img的设置必须小于32KB. core.img,这是一般硬盘的特殊区

12、域embedding area (夹层)3.5. *.modGRUB的所有其他部分称为模块,其中的大部分在运行时由core.img自动加载,其中的一些集成到core.img中。 这是文件系统支持(xfs.mod )等必要部分可以手动加载模块。 请参见insmod command (此处未说明。 请参阅相关文档)注意:如果不知道上述图像文件的种类,请继续阅读,详细情况如后所述。与GRUB Legacy的比较GRUB2与grubber不同,很多人精通grubber的stage1、stage1_5、stage2等概念,但在GRUB2中,它们被各种bootstrap image文件替换boot.img

13、磁盘引导. img酷睿. img大家应该都知道以上三个images4.1 .阶段1GRUB 2的stage1相当于GRUB 2的boot.img,起到相同的功能4.2. *_stage1_5GRUB Legacy中的Stage 1.5就像GRUB 2中的core.img一样,因为它包含足够的文件系统(XFS或EXT4 )代码,以允许Stage2直接从文件系统加载系统。但是,core.img进一步增强了功能,并提供了恢复shell,以便在无法加载其他模块(modules )时(例如,如果更改了partition number )可以手动恢复。 Core.img可以灵活地创建,并且可以从LVM或R

14、AID加载模块GRUB Legacy可以运行stage1和stage2,而GRUB2需要core.img。4.3 .阶段2GRUB 2没有与stage2相对应的image . 从/boot/grub加载相应的模块。5. grub2-mkimage自定义core.img上一章介绍的core.img至少包含几个部分1 )磁盘引导. img2) kernel.img3 )要求*.modgrub2-mkimage命令集成到core.img文件中,并且实际运行此命令会生成上一章的/boot/grub2/i386-pc目录中的两个image文件1 )引导. img2 )酷睿. img如果有兴趣,请查看ma

15、n grub2-mkimage查看相关信息,并定制自己的core.img:兰州控制器图像 $ grub2- mkimage-oi I 386-PC-p/boot/grub2- v-o core.im xfsgrub2- mkimage : info :以太网模块is0x 26 e 4。grub2- mkimage : info :读/usr/lib/grub/i386-PC/kernel.img。grub2- mkimage : info : locatingthesection.textat0x 0。grub2- mkimage : info :定位. rodata at0x 5494。grub2- mkimage : info : locatingthesection.dataat0x 6448。grub2- mkimage : info :定位. BSS at0x6BD 0。grub2- mkimage :信息:读/usr/lib/grub/i386-PC/fs help.mod。grub2- mkimage : info :读/usr/lib/grub/i386-PC/xfs.mod。gru

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论