快乐十分开奖号码搜索|taiyuan快乐十分

Linux开机过程

相关内容

开机过程

  开机过程指的是从按下电源键开始,到进入系统登录画面前所经历的过程。

MBR与磁盘分区

  在目前x86的系统架构中,系统硬盘位于第0号磁道:0到511KB的区块为MBR(硬盘中的每一个磁道容量为512KB),开机管理程序使用这块区域?#21019;?#23384;第一阶段开机引导程序(stage1)。接着位于1到62号磁道作为第1.5阶段的开机引导程序(stage1.5),从第63号磁道开始才是操作系统的分区。

  主引导记录(MBR,Master Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)?#28304;?#30424;进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生。

  MBR的内容分为三部分:第一部分是0到445KB,是计算机的基础导引程序,也称为第一阶段的导引程序;接着446KB到509KB为磁盘分区表,由四个分区表项构成(每个16个字节)。负责说明磁盘上的分区情况。内容包括分区标记、分区的起始位置、分区的容量以及分区的类型。最后一部分为结束标志只占2KB,其值为AA55,存储时低位在前,高位在后。

从百度百科借了张图:

 

 

MBR中紧跟在主引导程序后的主分区表这64字节(01BE~01FD)中包含了许多磁盘分区描述信息,尤其是01BE~01CD这16字节,包含了分区引导标志bootid、分区起始源头beghead、分区起始扇区relsect、分区起始柱面begcy1、操作系统类型systid、分区结尾磁头endhead、分区结尾扇区begsect、分区结尾柱面begcy1、分区扇区起始位置relsect、分区扇区总数numsect。

其中分区引导标志bootid表示当前分区是否可以引导,若为0x0,则表示该分区为非活动区;若为0x80,则为可开机启动区。若有多个开机启动区,则由用户开机时的选择而定(如GRUB的?#35828;ィ?/span>

分区扇区起始位置relsect表示分区中第一个扇区相对于磁盘起始点的偏移位置。

开机管理程序

linux上的开机管理程序有LiLO和GRUB,前者是早期的产物,在近年来的Linux操作系统都以GRUB作为默认软件包。

GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,?#37096;?#29992;于向这些内核传递启动参数。

运行层级

运行层级(run level)共有7个,分别为0、1、2、3、4、5、6,其中0表示关机、1表示单?#22235;?#24335;、6表示重新启动。中间的2、3、4、5因Linux发行商而异。

过程解析

 从按下电源开始到登录画面中所有的过程。

 登录程序依序分为BIOS、GRUB、内核加载、与init程序四个步骤。

BIOS

当按下电源按钮后,系统就会运行BIOS检测,包含检查系统的硬件配置、执行系统诊断程序、找出系统硬盘,把第0号磁道中的开机导引程序加载到内存中,之后就由GRUB接手后续的开机程序。

GRUB

GRUB是一个较大的程序,本身容量超过MBR的限制(512KB),因此GRUB将开机程序?#25351;?#20026;stage1、stage2,并在1与2之中加上选用的程序stage1.5,如e2fs_stage1_5、fat_stage1_5?#21462;?/span>

由BIOS接手后的GRUB,会由stage1转接到stage2(或stage1.5),并找出和载入位于/boot的内核文件。内核文件位于/boot之下。

接着会将内存映像文件(.img)加载到内存中,并使用cpio命令将内容解压缩到/boot之下。如果硬件的功能都别编入内核中,这个动作是不需要的;但若编译为模块且必须在开机时加载,这个步骤就是必要的。

将内核与必要的映像文件加载后,系统开机的过程就交给内核处理了。

内核载入

 内核接手系统开机的程序之后,会进行初始化,包括检测硬件、设置硬件设备、时?#30001;?#23450;、加载模块等,这动作完成后会?#22836;?#20986;曾占用的内存?#21344;洹?/span>

 接着启动文件系统相关的设定,首先会挂接根目录(“/”),再读取分区表(/etc/fstab)并挂接所有的分区与启动SWAP。最后系统启动/sbin/init程序,并运行硬件与软件相关的系统常驻程序。

 内核在开机的作用到此告一段落。

init程序

Init是系统的第一个进程,因此PID为0,也是所有进程的父进程,init启动后会先执行etc/rc.d/rc.sysinit,并读取配置文件/etc/inittab中的设定

 init的具体内容可参考:

https://blog.csdn.net/u012206617/article/details/93088996

posted @ 2019-11-21 19:17  chuyaoxin  阅读(...)  评论(... 编辑 收藏
快乐十分开奖号码搜索