网站建设数据中心,手册制作,南京高端网站建设公司哪家好,seo营销外包公司theme: channing-cyan
两种启动方式
传统启动方式#xff08;LEGACYMBR#xff09;
指传统BIOS启动方式#xff0c;存在一些不足#xff1a;比如最大只支持2TB磁盘#xff0c;磁盘最多四个分区#xff0c;且不支持图形操作
UEFIGPT方式
是新式的启动方式#xff0c…
theme: channing-cyan
两种启动方式
传统启动方式LEGACYMBR
指传统BIOS启动方式存在一些不足比如最大只支持2TB磁盘磁盘最多四个分区且不支持图形操作
UEFIGPT方式
是新式的启动方式逐步取代传统启动方式
相对于Legacymbr, 优点在启动更快(不要开机自检)最多可支持128个磁盘分区最大可支持18EB硬盘支持图形操作
整体过程 打开计算机电源计算机首先从BIOS开始启动BIOS对硬件进行检测CPU从起始地址为0xFFF0处开始执行程序。BIOS自检的内容主要包括CPU、内存、硬盘等设备和即插即用设备。按BIOS中的设置将硬盘的主引导扇区第一个扇区加载到0x7C00接着启动硬盘上安装的引导程序LILO或GRUB来引导Linux。Linux首先进行内核的引导主要完成磁盘引导、机器状态数据读取、从实模式到保护模式的切换、数据段寄存器加载及中断描述符表设置等。进行系统初始化执行init程序。init程序调用rc.sysinit和rc等程序而rc.sysinit和rc在完成系统初始化和运行服务后返回init。启动mingetty打开终端供用户登录系统。
这样就完成了从开机到登录的整个启动过程。
详细过程
BIOS
展示
主板上的BIOS芯片 作用
BIOSBasic Input/Output System基本输入输出系统。早期的 BIOS 存储在内存的 ROM 中不会断电消失现在大多存储在内存的闪存Flash Memory中。 CPU 加电后会首先执行 BIOS 程序其中 POSTPower-On Self-Test加电自检程序是执行的第一个例行程序主要是对 CPU、内存等硬件设备进行检测和初始化。 BIOS 中断调用即 BIOS 中断服务程序是计算机系统软、硬件之间的一个可编程接口。开机时BIOS 会通知 CPU 各种硬件设备的中断号并提供中断服务程序。软件可以通过调用 BIOS 中断对软盘驱动器、键盘及显示器等外围设备进行管理。 BIOS 会根据在 CMOS 中保存的配置信息来判断使用哪种设备启动操作系统并将 CPU 移交给操作系统使用。
流程 在CPU加电之后会把CPU所有寄存器的值设为默认值除了CS寄存器的值改为0xFFFF其他寄存器的值都为0这样根据CS 和 IP的值就可以找到指令的物理地址0xFFFF:0x0000也就是0xFFFF0。 这时CPU就开始执行在这个位置开始执行这里存放的一条无条件跳转指令JMP跳转到BIOS的真正启动代码处。 BIOS首先先进行POSTPowerOn Self Test加电后自检POST的主要检测系统中一些关键设备是否存在和能否正常工作例如内存和显卡等设备如果硬件出现问题主板会发出不同含义的蜂鸣启动中止。如果没有问题屏幕就会显示出CPU、内存、硬盘等信息。 BIOS 程序在执 行一些必要的开机自检和初始化后会将自己复制到从 0xA0000 开始的物理内存中并继续执行 然后BIOS 开始搜寻可引导的存储设备(即根据用户指定的引导顺序从软盘、硬盘或是可移动设备)。如果找到则将存储设备中的引导扇区读入物理内存 0x7C00 处并跳转到 0x7C00 继续执行从而将 CPU 交给引导扇区中的 Boot 程序
引导Boot程序
引导顺序
可以在BIOS配置引导设备接下来以最常见的硬盘启动为例进行说明。 主引导扇区
硬盘被格式化之后被划分为固定容量一般是512B的数据块每个数据块被称为一个扇区sector。
硬盘的第一个扇区被称为主引导扇区(0磁头0磁道1扇区bootsector)它在所有的系统分区之前不属于任何系统分区。主引导扇区由主引导记录Master Boot RecordMBR、磁盘分区表Disk Partition TableDPT和引导记录标识Boot Record ID3个部分组成
MBR占用主引导扇区的前446个字节bootloader存放系统主引导程序负责从活动分区中装载并运行系统引导程序。DPT占用64个字节记录磁盘的基本分区信息。磁盘分区表分为4个分区项每项16字节分别记录每个主分区的信息因此最多可以有4个主分区。其中只有一个活动分区Active PartitionBoot Record ID占用2个字节。对于合法的引导扇区它等于0xAA55这是判别引导扇区是否合法的标志 流程 BIOS此时去读取硬盘驱动器的第一个扇区(MBR512字节)然后执行里面的代码。实际上这里BIOS并不关心启动设备第一个扇区中是什么内容它只是负责读取该扇区内容、并执行。至此BIOS的任务就完成了此后将系统启动的控制权移交到MBR部分的代码。 MBR代码从磁盘分区表找到活动分区通过BIOS将活动分区的启动扇区读入内存并跳转到启动扇区的起始位置。 硬盘的MBR装载分区引导扇区分区引导扇区也称DBRDBR是程序。 DBR装入内存后即开始执行该引导程序段。
Boot loader
比较流行的引导加载程序Boot loader是LILO和GrubGrub比LILO更好所以只聊Grub。
GRUBGrand Unified Boot Loader拥有强大的交互式命令界面支持网络引导。GRUB负责装入内核并引导Linux系统。此外还可以引导其他操作系统如FreeBSD、DOS和Windows系列。 GRUB包含两个阶段:Stage 1和Stage2。Stage1被安装到磁盘的MBR它直接加载Stage2并执行跳转。Stage2主要功能是为了加载其他操作系统。Stage2首先把系统切换到保护模式设置好C语言运行环境。系统执行时首先查找配置文件如grub.conf和menu.lst。如果没有则执行一个Shell并等待用户输入命令。当用户输入boot命令时将控制权转移给操作系统。
加载内核Kernel
当Stage 2 bootloader已经被加载到内存中文件系统被识别到并且默认的内核镜像和initrd镜像被加载到内存中。
内核镜像已经准备好并且控制权从Stage 2 bootloader传递过来启动过程的Kernel阶段就可以开始了。内核镜像并非直接可以运行而是一个被压缩过的系统读取内存映像并进行解压缩操作。此时屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后屏幕输出“OK, booting the kernel”。
init
内核初始化的最后一步就是启动 pid 为 1 的 init 进程这个进程是系统的第一个进程它负责产生其他所有用户进程。 init 以守护进程方式存在是所有其他进程的祖先。init 进程非常独特能够完成其他进程无法完成的任务。 init系统能够定义、管理和控制 init 进程的行为。它负责组织和运行许多独立的或相关的始化工作(因此被称为 init 系统)从而让计算机系统进入某种用户预订的运行模式。 仅仅将内核运行起来是毫无实际用途的必须由 init 系统将系统代入可操作状态。比如启动外壳 shell 后便有了人机交互这样就可以让计算机执行一些预订程序完成有实际意义的任务。
总结
最终Linux启动过程如下图所示 资料
bios【博客419】cpu实模式与保护模式操作系统启动过程操作系统启动过程【操作系统】操作系统的启动都干了些什么BIOS加电自检的过程是怎样的浅谈操作系统-启动过程关于硬盘主引导扇区的结构及功能全面释疑怎样设置BIOS电脑启动顺序硬盘主分区、扩展分区、逻辑分区、活动分区、系统分区、启动分区、引导扇区、MBR解析LINUX 启动过程深入LINUX启动过程LINUX启动过程详解解读LINUX启动过程LINUX启动过程
最后
大家如果喜欢我的文章可以关注我的公众号程序员麻辣烫
我的个人博客为https://shidawuhen.github.io/
往期文章回顾
设计模式招聘思考存储算法系列读书笔记小工具架构网络Go语言