〇、boot的含义

boot,启动、引导、自举。但boot原来的意思是靴子,“启动"与靴子有什么关系呢? 原来,这里的boot是bootstrap(鞋带)的缩写,它来自一句谚语:“pull oneself up by one’s bootstraps”
字面意思是"拽着鞋带把自己拉起来”,这当然是不可能的事情。最早的时候,工程师们用它来比喻,计算机启动是一个很矛盾的过程:必须先运行程序,然后计算机才能启动,但是计算机不启动就无法运行程序!
早期真的是这样,必须想尽各种办法,把一小段程序装进内存,然后计算机才能正常运行。所以,工程师们把这个过程叫做"拉鞋带",久而久之就简称为boot了。
所以有人把启动叫做自举。

一、通电

就是按下开关,不用多说。

二、bios阶段

通电后,cpu将CS设置为0xFFFF,IP设置为0x0000,这样组成的地址就是0xFFFF0,而这个就是BIOS的入口地址,之后CPU读取执行这个地址的代码,所以说第一条指令就是0xFFFF0的代码。

(一)BIOS

BIOS即Basic Input/Output System,基本输入输出系统,它是被固化在计算机ROM芯片上的一组程序。
通过跳线开关和系统配带的驱动程序盘,可以重写ROM,方便地实现BIOS升级。

(二)CMOS

CMOS是一块可读写的RAM芯片,保存系统当前的硬件配置情况和用户的设定参数;
BIOS中有一个程序称为系统设置程序,可以设置CMOS中的参数;
CMOS由电池供电,断电后数据会丢失;
前16字节用于存储时间

(三)AMI、AWARD和PHONIX三大主流厂商

开发BIOS是一件技术含量很高的工作,从业人员也少;一流主板厂商的BIOS研发人员,年薪往往是以七位数字来计算的!

(四)BIOS的主要功能概括来说包括如下几部分:

1)POST
Power on self test, 加电自检
加电自检,检测CPU各寄存器、计时芯片、中断芯片、DMA控制器等
2)Initial
枚举设备,初始化寄存器,分配中断、IO端口、DMA资源等
3)Setup
进行系统设置,存于CMOS中。一般开机时按Del或者F2进入到BIOS的设置界面。
4)常驻程序
INT 10h、INT 13h、INT 15h等,提供给操作系统或应用程序调用。
5)启动自举程序
在POST过程结束后,将调用INT 19h,启动自举程序,自举程序将读取引导记录,装载操作系统

三、boot loader阶段

boot loader,也叫开机管理程序,启动程序,引导程序,自举程序,好几种叫法。是一段程序。

常见boot loader有ntldr,bootmgr,grub,LILO,spfdisk,等
目前主流是grub2。

NTLDR是NT Loader的缩写。Windows NT, 2000, XP, Server 2003.
BOOTMGR Windows Vista, 7, 8, 10,Server 2008,Server 2012.
GRUB是GRand Unified Bootloader的缩写,支持任何系统。

下面将以grub2为例。

(一)引导扇区

boot sector
引导扇区就是存储设备第一个扇区。
boot loader一般就存储在引导扇区里。

引导扇区分为两种:
1.主引导扇区
也叫主引导记录,master boot record,简称MBR。是硬盘的第一个扇区。
MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。

2.分区引导扇区
也叫卷引导记录,volume boot record,简称VBR。也叫partition boot sector (PBR)。是硬盘的每个分区的第一个扇区。
由于分区引导扇区,主要功能就是用来启动操作系统的,所以也可以叫做OBR,os boot record。

多系统时的情况
在这里插入图片描述

一种操作系统对应一种boot loader。
在安装linux时,可以选择将boot loader写入到MBR,也可以不写入。如果写入,那么在MBR与VBR都有一份boot loader。
在安装windows时,会默认将boot loader写到MBR。
所以安装多系统时,MBR会被不同的操作系统覆写。

(二)grub2三个阶段

grub2分三个阶段
stage1一般叫做boot.img,存储在MBR前446个字节。
stage1.5一般叫做core.img,存储在MBR与第一个分区之间的区域。1-62号扇区,31744个字节。core.img大小是25389个字节。
stage2存储在/boot/grub2目录中。core.img加载/boot/grub/i386-pc/normal.mod。
normal.mod parses /boot/grub/grub.cfg, optionally loads modules (eg. for graphical UI and file system support) and shows the menu.

bios会读取第一顺位硬盘的主引导扇区,跳到stage1,stage1会跳到stage1.5,stage1.5会跳到stage2。stage2会跳到操作系统内核。
在这里插入图片描述

(三)boot loader功能

提供菜单:当安装多系统时,会提供系统列表供我们选择。
直接加载系统内核:直接加载系统内核并执行。directly loading
转交其他loader:调用其他boot loader。ChainLoading
在这里插入图片描述

如图我的MBR使用Linux的grub2
选项一:MBR(grub2) --> linux kernel --> booting
选项二:MBR(grub2) --> boot sector(Windows loader) --> Windows kernel --> booting
选项三:MBR(grub2) --> boot sector(grub2) --> linux kernel --> booting

四、kernel阶段

boot loader读取操作系统kernel,执行kernel

以Linux系统为例,内核在/boot目录。名字一般叫做vmlinuz
grub2先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件(Debian系统是/etc/initab)产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代。
然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。
至此,全部启动过程完成。

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐