mportant;">玩转ESXi_06:操作系统引导与启动概念
近日来与几个IT同行讨论windows系统下实现web流量负载的技术架构时,大家总会混淆了OS引导与启动的概念与意义,在此进行基普下。
一、回顾关键的几个基本概念
⑴、BIOS(基本输入输出系统),它是直接与硬件打交道的底层代码,这些代码在关机或掉电后是不会消失的,因为一般被存放在ROM(只读存储芯片)。它为操作系统提供了控制硬件设备的基本功能。常见的BIOS如下:主板BIOS(即系统BIOS)、显卡BIOS、IDE控制器、SCSI卡等BIOS、网卡BIOS、其它设备的BIOS等。
因计算机的启动过程正是在系统BIOS的控制下进行的,本文要讨论的主角是主板BIOS。
⑵、内存的地址,主板上一般安装有32MB、128MB、256MB或1G内存,甚至更大的内存。当然内存的每一个字节都被赋予了一个地址,这样CPU才能访问得到。比如32MB内存,它的地址范围用十六进制数表示就是0~1FFFFFFH。
最初的8086处理器能够访问的内存最大只有1MB(0~FFFFFH),这1MB的低端640KB被称为基本内存。上述的BIOS(系统、显卡、IDE控制器等)存放在基本内存中。比如,显卡BIOS一般在C0000H~C7FFFH处,IDE控制器的BIOS在C8000H~CBFFFH处。
⑶、硬盘通用分区结构
新硬盘->低格后 变化:所有扇区中的字节数据填充为0x00
低格后->分区后 变化:写硬盘的MBR(主引导扇区)区
分区后->格式华 变化:写硬盘的FAT(文件分配表)区
MBR(Main Boot Record 主引导记录)扇区位于整个硬盘的0磁道0柱面1扇区,总共占512字节,它由 MBR (Master Boot Record), DPT (Disk Partition Table) 和 Boot Record ID 三部分组成:
MBR又称作主引导记录,它只占用 前 446 个字节 ( 0 to 0x1BD ),本质上MBR就是一段引导程序,一般在操作系统安装时写入,用于检测磁盘的分区合法性,它的重要作用就是识别活动分区和加载活动分区第一个扇区(引导扇区)的操作系统引导程序。
图6.1
DPT 又称作主分区表,它占用 64 个字节 (0x1BE to 0x1FD), 记录了磁盘的基本分区信息,主分区表分为四个分区项,,每项 16 字节,分别记录了每个主分区的信息。
图6.2
Boot Record ID 又称作引导区标记,它占用两个字节 (0x1FE and 0x1FF), 对于合法引导区,它等于 0xAA55,这是判别引导区是否合法的标志。
这个整体构成了硬盘的主引导扇区。
通过一幅4分区的磁盘结构图可以看到磁盘的大致组织形式:
图6.3
从图6.3中可以看出,引导扇区分为主引导扇区和分区引导扇区,用途不一样的:
主引导扇区:整个硬盘的第一个扇区,包含定位活动分区与加载基本分区的引导扇区的代码---主分区引导程序。
基本分区的引导扇区:已分区的第一个扇区,包含了加载与唤起操作系统(放在这个分区之内或放在这个磁盘上)的代码---分区引导程序。
如何来区分:主分区、扩展分区、逻辑分区、活动分区、激活分区、系统分区这些概念呢?
举例说明,假如一个电脑只有一个硬盘,有C、D、E、F四个分区,这样:
主分区——C
扩展分区——C以外的分区的总称
逻辑分区——D、E、F
激活分区——就是在分完区的时候,激活C
活动分区——C
系统分区——安装操作系统的分区,有可能是C,也有可能是其他的分区。
到此,在理清以上几个关键概念后,我们进入以下正题关于引导与启动概念。
二、计算机通电自检及完成基本硬件配置过程
第1步:当按下电源开关时,电源就立刻向主板和其它设备供电(包括CPU),此时电压不稳定,主板上的控制芯片组就会向CPU发出并保持一个RESET(重置)信号,一直到(这过程时间很短)芯片组检测到电源已经开始稳定供电才会撤去RESET信号,CPU马上就从地址FFFF0H(前面介绍了,这是主板BIOS的地址范围)处开始执行指令,这里的只是一条跳转指令,跳到主板BIOS中真正的启动代码处。
第2步:主板BIOS的启动代码首先要做的就是运行POST(Power-On Self Test,加电后自检)代码程序,它的主要任务是检测系统中一些关键设备是否存在和能否正常工作(例如内存、显卡等),此时只会检查640K常规内存(此时显卡还没有初始化),常见故障现象是屏幕啥也没有,喇叭发出长短声来。
第3步:基本内存检查通过后,主板BIOS将查找显卡的BIOS,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,主板BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,此时在屏幕上显示出一些初始化信息,介绍显卡生产厂商、图形芯片类型等内容,这个画面几乎是一闪而过。
第4步:主板BIOS接着会查找其它设备的BIOS程序(初始化相关的设备),过一会儿,我们会看到显示出主板BIOS的类型、序列号和版本号等内容的启动画面,表示主板BIOS查找调用其它设备的BIOS代码及初始化结束。
第5步:主板BIOS将接着检测和显示CPU的类型和工作频率,然后开始测试所有的RAM,有时在屏幕上显示内存测试的进度。
第6步:CPU和RAM检测通过后,主板BIOS开始检测系统中安装的一些标准硬件设备,包括硬盘、CD-ROM、串口、并口、软驱等设备。
第7步:标准设备检测完毕后,主板BIOS内部的支持即插即用的代码将开始检测和配置主板上安装的即插即用设备,每找到一个设备之后,主板BIOS都会在屏幕上显示出设备的名称和型号等信息,分配中断、DMA通道和I/O端口等资源。所有硬件都已经检测配置完毕, 主板BIOS重新清屏并在屏幕上方列出主板上安装的各种标准硬件设备信息。
第8步:主板BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。ESCD是主板BIOS用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS。
三、windows 系统引导与启动过程
①、承接上述的第8步,计算机通电自检及完成基本硬件配置后,主板BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动。
比如,硬盘启动(C盘),硬盘上第一个物理扇区上存放着512B大小的主引导记录(MBR)---包含硬盘的主引导程序、硬盘分区表(DPT)及引导区标记( 0xAA55,占两字节)。
②、主板BIOS将读取硬盘上第一个物理扇区(绝对扇区:柱面0,磁头0,扇区1处)到内存地址0000:7c00处。
③、检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他引导启动介质,就会死机了。
④、跳转到0000:7c00处执行MBR中的主引导程序。
常见的主引导程序类型有如下几种:
i、UltraISO USB-HDD+
占用一个扇区,UltraISO的MBR的功能是从活动分区(就是激活的分区)的引导扇区启动,这点上与fdisk的mbr功能相同。
ii、Windows NT 5.X 、6.X默认引导程序
占用一个扇区,搜索并启动第一个激活的主分区。
iii、GRUB4DOS MBR(grldr.mbr)
占用18个扇区,具有多种引导方式,可引导多种操作系统或映像文件。搜索所有分区,查找并加载 grldr,只要某分区上存有一份 grldr,就能启动。
iv、Lvyanan1JF9K 引导程序
无忧启动论坛Lvyanan原创,占用两个扇区,可管理三个主分区及一个扩展分区的启动。
⑤、MBR程序先将自己复制到0000:0600处,然后继续执行,它将会读取硬盘分区表(DPT),根据DPT的参数找到一个活动分区,如果发现没有活动分区或者不止一个活动分区,则停止。
⑥、然后MBR将活动分区的第一个扇区(活动分区引导记录:PBR),即把活动分区的引导扇区读入内存地址0000:7c00处,检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示 “Missing Operating System”,然后停止。
⑦、跳转到0000:7c00处继续执行活动分区的引导程序PBR(特定系统的引导程序,这个等会儿再详细介绍),它主要根据活动分区的引导扇区中的BPB表定义的文件系统格式参数,来访问和搜索操作系统的启动文件。
对于win9x系统,就是查找、读取并执行IO.SYS,再把引导控制权移交给IO.SYS。
对于windows XP系统,就是查找到NTLDR,并将NTLDR装入内存,再把引导控制权移交给NTLDR。
在此,有人就发出疑问:有哪些软件可以写入分区引导记录PBR?
以下列举几个大家常见的,如下:
i、GRUB4DOS(FAT/NTFS/Ext2)
GRUB4DOS分区引导程序,引导根目录下的GRLDR。 然后GRLDR会从当前目录及其子目录寻找MENU.lst配置文件 。
ii、NTLDR引导程序(FAT/NTFS)
Windows 2000/XP/2003引导程序,引导根目录下的NTLDR。
iii、BOOTMGR 引导程序(FAT/NTFS)
Windows Vista/2008/7 引导程序,引导根目录下的NTLDR或BOOTMGR(优先尝试BOOTMGR)。
iv、SYSLINUX(FAT)
这是一个功能强大、体积小巧的引导程序,引导LDLINUX.SYS。 然后LDLINUX.SYS会从当前目录及其子目录寻找syslinux.cfg配置文件。
v、MS-DOS 引导程序(FAT)
可引导Win9X 或MS-DOS操作系统。
⑧、操作系统初始化与启动,
比如,Windows 9x的IO.SYS首先要初始化一些重要的系统数据,然后就显示出我们熟悉的蓝天白云,这才是windows9x的启动。
在此重点分析windows XP系统的初始化与启动过程:
i、首先,它的NTLDR将计算机微处理器从实模式转换为32位平面内存模式,视所有内存为可用内存(不再是基本内存模式),
ii、接着NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区。
iii、接着NTLDR读取boot.ini(这里不详细地讲解boot.ini的组成结构),从这里查找Windows XP的系统文件的位置的,如果磁盘是SCSI的,而BIOS调用无法访问此类磁盘,那么NTLDR就加载Ntbootdd.sys来替代boot code中的磁盘访问代码;
iv、接着查找以及加载ntdetect.com收集计算机硬件信息;
v、接着加载称为Windows XP内核的ntokrnl.exe和硬件抽象层(HAL,hal.dll);
vi、后续内核初始化工作,这方面后续在winxp pe章节再详细介绍。
以上步骤中分四个阶段:
第一阶段:②, ③, ④步由主板BIOS的引导程序完成:找到MBR。
第二阶段:⑤,⑥步由MBR的引导程序完成:找到PBR。
第三阶段:⑦步由活动分区的引导程序(PBR):找到系统特定的启动文件(IO.SYS、NTLDR、BOOTMGR、LDLINUX.SYS、GRLDR)。
第四阶段:⑧步由操作系统的初始化与启动。
严格意义来讲,引导和启动是有区别的,只要不是操作系统启动文件的启动过程,应该称为引导过程。
本文链接:https://www.kinber.cn/post/4010.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝: