GRUB2及启动过程详解精品管理资料Word格式.docx

上传人:b****5 文档编号:8530317 上传时间:2023-05-11 格式:DOCX 页数:54 大小:229.42KB
下载 相关 举报
GRUB2及启动过程详解精品管理资料Word格式.docx_第1页
第1页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第2页
第2页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第3页
第3页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第4页
第4页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第5页
第5页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第6页
第6页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第7页
第7页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第8页
第8页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第9页
第9页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第10页
第10页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第11页
第11页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第12页
第12页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第13页
第13页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第14页
第14页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第15页
第15页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第16页
第16页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第17页
第17页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第18页
第18页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第19页
第19页 / 共54页
GRUB2及启动过程详解精品管理资料Word格式.docx_第20页
第20页 / 共54页
亲,该文档总共54页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

GRUB2及启动过程详解精品管理资料Word格式.docx

《GRUB2及启动过程详解精品管理资料Word格式.docx》由会员分享,可在线阅读,更多相关《GRUB2及启动过程详解精品管理资料Word格式.docx(54页珍藏版)》请在冰点文库上搜索。

GRUB2及启动过程详解精品管理资料Word格式.docx

在CentOS7下面/boot/grub2目录可以看到有关GRUB2相关文件.在/boot/grub2/i386—pc目录下是GRUB2bootstrapimages文件,该目录大部分文件是以.mod结尾,这些文件为GRUB2模块文件,最后在该目录下面有以下两个image文件:

[root@controlleri386—pc]#ls—lrt*.img

—rw—r——r——。

1rootroot266187\u67081123:

33core.img

-rw—r——r—-。

1rootroot5127\u67081123:

33boot。

img

以上两个img文件都会被grub2—install命令安装到硬盘上相应位置(在硬盘什么位置后面会说),很有意思的是请注意两点

1)boot。

img固定为512Byte

2)core.img小于32KByte

如果你觉得好奇,可以用file命令查看这些image文件类型

[root@controlleri386-pc]#fileboot.img

boot。

img:

x86bootsector;

partition4:

ID=0xd4,starthead205,startsector4277266767,0sectors,codeoffset0x63

[root@controlleri386—pc]#filecore。

core。

data

[root@controlleri386—pc]#filexfs.mod

xfs。

mod:

ELF32-bitLSBrelocatable,Intel80386,version1(SYSV),notstripped

对于boot。

imgfile命令明确指出其为x86bootsector,而mod文件却是ELF文件,接下来让我们进一步了解这些bootstrapimage文件

3.GRUB2的bootstrapimage文件

GRUB2有以下各种bootstrapimages文件,大伙应悉知,这些image会被grub2-install安装到硬盘相应的位置,当BIOS完成后,他们会被加载并引导系统继续完成启动。

3.1.boot。

在PCBIOS系统中,这个image是GRUB2第一个被运行的.它被写在MBR(MasterBootRecord)或者在分区(partition)的bootsector中.因为MBR或PCbootsector是固定512字节,这个文件的大小也固定为512byte。

boot.img功能很简单,主要是读磁盘中core。

img中的第一个扇区(sector)到内存中并跳到该部分运行(如果是硬盘启动,那么该扇区就是下面要介绍的diskboot。

img).因为只有512字节,boot。

img不能够加载文件系统(比如CentOS7中XFS或其它Linux的EXT4等等),并且只能是从硬盘固定的位置加载。

3.2.diskboot.img

当从硬盘启动的时候这是core。

img第一个扇区(sector)的内容,主要功能是读剩下的core.img到内存中并开始运行kernel。

img。

同样diskboot。

img没有文件系统的功能(XFS,EXT4等),当他读取剩余的core.img时候,依然从硬盘固定位置读取。

根据启动的介质不同,类似diskboot。

img文件有很多,在安装GRUB时候选用其中一个,目前大部分都是从硬盘启动diskboot.img

1.cdboot。

从CD—ROM启动

2.pxeboot。

img:

从PXE网络启动

3.Lnxboot.img:

如果从其他bootloader比如LILO(用image='

section)启动,这个image使GRUB看上去像一个Linux内核.

3.3.kernel。

这个文件包含了GRUB2基本的运行时支撑:

对设备及文件的框架,环境变量,恢复模式下的命令行等等.一般我们不会直接使用它,但是它是core。

img中必不可少的一部分。

3.4.core.img

这个是GRUB的核心.他是被grub2—mkimage命令生存,包含了kernel。

img以及一些必须必要的modules.通常core.img包含了足够的模块(modules)为了访问XFS/EXT4文件系统/boot/grub2目录,并且在运行时加载从文件系统(XFS)所有剩余的模块,这些剩余模块包含启动目录处理,加载操作系统等等功能.

模块化的设计思路最主要的目的是使core。

img保持足够小,目前disk限制core。

img安装必须小于32KB。

core。

img一般被安装在硬盘特殊区域:

embeddingarea(夹层区),这个区一般有32K限制,我们在后面会介绍什么是夹层区.

3.5.*.mod

所有GRUB其他部分被称为模块,他们大部分被core。

img在运行时自动动态加载,其中一小部分被整合到core。

img中,这小部分是必须,比如文件系统支持(xfs。

mod)

模块可以手工加载,请参考insmodcommand(在本文不作介绍,请查阅相关文档)

注意:

如果对以上各种image文件还是不清楚,请继续往下读,后面会有详细说明。

4.对比GRUBLegacy

GRUB2与GRUBLegacy不同,很多人都熟悉GRUBLegacy里面的stage1,stage1_5,stage2等等概念,而在GRUB2里面,这些被各种bootstrapimage文件替代:

diskboot。

core.img

大伙应悉知以上三个images

4.1.stage1

GRUBLegacy中stage1相当于GRUB2中boot。

img,他们完成相同的功能.

4.2.*_stage1_5

GRUBLegacy中Stage1。

5包含了足够的文件系统(XFS或EXT4)代码而允许Stage2从文件系统中直接载入系统,就这个意义上来说很像GRUB2中的core.img。

不过core。

img功能更加强大,它提供了恢复shell,使能够在不能加载其他模块(modules)情况下(比如partitionnumber已经改变)能够人工恢复。

Core。

img能够被灵活的创建,允许从LVM或者RAID加载模块.

GRUBLegacy能够运行stage1和stage2而不运行stage1。

5,但是对GRUB2来说,core。

img是必须的.

4.3.stage2

GRUB2没有对应stage2的image。

它从/boot/grub加载相应的模块.

5.grub2—mkimage定制core.img

上一章介绍的core.img至少包含了一下几个部分

1)diskboot。

2)kernel.img

3)required*。

mod

他们被grub2—mkimage命令整合成core.img文件,实际上当运行完该命令最终生成的是上一章中/boot/grub2/i386-pc目录下的两个image文件

2)core。

有兴趣的读者请参照mangrub2-mkimage查阅相关信息,定制自己的core。

[lanzhou@controllerimage]$grub2—mkimage—Oi386-pc-p/boot/grub2-v—ocore。

imgxfs

grub2—mkimage:

info:

thetotalmodulesizeis0x26e4。

grub2-mkimage:

reading/usr/lib/grub/i386—pc/kernel.img.

grub2—mkimage:

info:

locatingthesection。

textat0x0。

locatingthesection.rodataat0x5494。

locatingthesection.dataat0x6448.

bssat0x6bd0.

grub2-mkimage:

reading/usr/lib/grub/i386-pc/fshelp。

mod。

reading/usr/lib/grub/i386—pc/xfs.mod.

kernel_img=0x2649700,kernel_size=0x6bd0.

thecoresizeis0x5085。

reading/usr/lib/grub/i386-pc/lzma_decompress.img。

reading/usr/lib/grub/i386-pc/diskboot。

img.

writing0x200bytes。

writing0x5bc5bytes。

img是内核的名字,生成在当前目录下,i386—pc是镜像的格式,xfs是加入内核的模块。

常用模块有:

xfs:

支持xfs文件系统(CentOS7缺省的文件系统)

ext2:

支持ext2文件系统

但是我们一般不直接运行该命令,一般运行grub2—install。

该命令会自动调用grub2-mkimage.

6.GRUB2安装

当一切准备好后,我们可运行以下命令

grub2—install/dev/sda

去安装grub2(缺省的-—boot-directory=/boot/)

不过一般的CentOS7已经安装好了GRUB2,除非你感兴趣,不用运行上面命令。

在继续后面的内容之前,下面有几个概念大伙必须知道:

6.1.Linux是怎么命名设备(/dev/sda)

比如/dev/sda5,如下图所示

1)SCSI硬盘

第一个SCSI接口硬盘:

/dev/sda

第二个SCSI接口硬盘:

/dev/sdb

2)USB

如果只有一块硬盘,那么第一个USB盘也可能是/dev/sdb(usb存储设备也目前在内核中在两种驱动方法,一种是模拟SCSI硬盘,另一种是非模拟SCSI硬盘,前一种目前比较多)

3)SATA

如果只有一个SATA硬盘,第一个SATA硬盘也是:

/dev/sda

4)IDE硬盘

第一个IDE接口主盘:

 /dev/hda

第一个IDE接口从盘:

 /dev/hdb

第二个IDE接口主盘:

 /dev/hdc

第二个IDE接口从盘:

 /dev/hdd

1)所以只靠/dev/sda无法知道设备类型,也许是SCSI,SATA或者U盘,但是一般来说/dev/sda都会是SCSI硬盘,本文不在详述SCSI,IDE,SATA区别,请参考相关资料

2)有关分区,见下文6.3DPT

6.2.MBR(MasterBootRecord)

MBR,即主引导记录,是对IBM兼容机的硬盘或者可移动磁盘分区时,在驱动器最前端的一段引导扇区,其地址为

采用CHS寻址:

MBR固定为硬盘的0柱面、0磁头、1扇区

采用LBA寻址:

MBR固定LBA0

(注意,我们将在后面介绍CHS与LBA,目前普片采用LBA寻址)

MBR长度为512字节,它一般由三个部分组成:

主引导程序

硬盘分区表DPT(DiskPartitiontable)固定4个分区,每分区16byte

分区有效标志,以55AA结尾的MBR

StructureofaclassicalgenericMBR

Address

Description

Size

(bytes)

Hex

Dec

+000hex

+0

Bootstrapcodearea

446

+1BEhex

+446

Partitionentry1

Partitiontable

(forprimarypartitions)

16

+1CEhex

+462

Partitionentry2

+1DEhex

+478

Partitionentry3

+1EEhex

+494

Partitionentry4

+1FEhex

+510

55hex

Bootsignature[a]

2

+1FFhex

+511

AAhex

Totalsize:

446+4*16+2

512

本表摘自:

https:

//en.wikipedia。

org/wiki/Master_boot_record

注意

1)由于后面支持EFI及GPT,上述结构有些变化,但在本文不作描述,有兴趣的读者可以参看相关EFI及GPT文档

2)上文中的boot。

img将会被grub2-install命令拷贝到MBR主引导程序部分(也就是Bootstrapcodearea),在后面将会详细分析boot。

====================================================

工具:

导出并查看MBR

我们可以用DD命令把MBR从硬盘中导出来

[root@controllerimage]#ddif=/dev/sdaof=mbr。

binbs=1count=512

512+0recordsin

512+0recordsout

512bytes(512B)copied,0.00173968s,294kB/s

然后我们可以使用hexdump查看其内容

[root@controllerimage]#hexdump—Cmbr。

bin

00000000eb6390108ed0bc00b0b800008ed88ec0|。

c。

.。

....。

|

00000010fbbe007cbf0006b90002f3a4ea210600|...|。

..。

0000002000bebe073804750b83c61081fefe0775|。

.8。

u。

.u|

00000030f3eb16b402b001bb007cb2808a74018b|.。

|。

t。

.|

000000404c02cd13ea007c0000ebfe0000000000|L。

..|。

0000005000000000000000000000008001000000|。

0000006000000000fffa9090f6c2807405f6c270|。

.p|

000000707402b280ea797c000031c08ed88ed0bc|t.。

y|。

1。

000000800020fba0647c3cff740288c252be057c|.。

.d|<

.t。

R。

||

00000090b441bbaa55cd135a52723d81fb55aa75|。

A。

U..ZRr=。

U。

u|

000000a03783e101743231c0894404408844ff89|7。

t21。

.D.@.D。

000000b04402c7041000668b1e5c7c66895c0866|D。

f。

\|f。

\。

f|

000000c08b1e607c66895c0cc744060070b442cd|。

.`|f。

\..D。

.p。

B.|

000000d0137205bb0070eb76b408cd13730d5a84|。

r。

p。

v.。

s。

Z.|

000000e0d20f83de00be857de98200660fb6c688|。

}。

000000f064ff40668944040fb6d1c1e20288e888|d。

@f。

D。

00000100f4408944080fb6c2c0e80266890466a1|。

@.D。

..f。

00000110607c6609c0754e66a15c7c6631d266f7|`|f。

uNf.\|f1。

f.|

000001203488d131d266f774043b44087d37fec1|4..1.f。

t.;

}7..|

0000013088c530c0c1e80208c188d05a88c6bb00|。

0..。

Z。

00000140708ec331dbb80102cd13721e8cc3601e|p.。

r.。

`.|

00000150b900018edb31f6bf00808ec6fcf3a51f|..。

0000016061ff265a7cbe807deb03be8f7de83400|a。

&

Z|.。

}.。

}。

4.|

00000170be947de82e00cd18ebfe475255422000|。

.}。

GRUB。

0000018047656f6d0048617264204469736b0052|Geom.HardDisk。

R|

0000019065616400204572726f720d0a00bb0100|ead。

Error。

000001a0b40ecd10ac3c0075f4c3000000000000|。

.<

000001b00000000000000000a736080000008020|.。

..6。

...|

000001c0210083dd1e3f0008000000a00f0000dd|!

.?

...|

000001d01f3f8efeffff00a80f000058f0000000|。

?

.X。

000001e000000000000000000000000000000000|.。

000001f0000000000000000000000000000055aa|.。

..U。

00000200

黑色部分为启动代码

蓝色部分为分区表DPT(下面会介绍)

红色部分为分区有效标志55AA

6.3.MBR分区表DPT(DiskPartitionTable)

DPT作为MBR中的一部分,已经使用了好长一段时间,直到最近GPT及EFI的出现。

但是DPT作为一个经典,还是有很多东西学习,在这一章我简要介绍一下DPT。

工具:

fdisk

linux上经典的工具fdisk就是对有关的DPT进行操作.

[root@controllersbin]#fdisk—l/dev/sda

Disk/dev/sda

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2