Linux 启动流程





1.加载 BIOS

计算机在接通电源之后首先由BIOS进行POST自检,然后依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入引导块。BIOS的第1个步骤是加电POST自检。POST的工作是对硬件进行检测。BIOS的第2个步骤是进行本地设备的枚举和初始化。BIOS由两部分组成:POST代码和运行时的服务。
BIOS运行时会按照CMOS的设置定义的顺序来搜索处于活动状态并且可以引导的设备。引导设备可以是软盘、CD-ROM、硬盘上的某个分区、网络上的某个设备甚至是USB闪存。通常,Linux系统都是从硬盘上引导的,其中主引导记录(MBR)中包含主引导加载程序。


2.读取 MBR

硬盘上第 0磁道第一个扇区被称为MBR,也就是 Master Boot Record,即主引导记录,它的大小是 512字节,存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到物理内存中。其实被复制到物理内存的内容就是 Boot Loader



3.Boot Loader

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub Lilospfdisk是常见的Loader以grub为例,系统读取内存中的grub配置信息(一般为menu.lst grub.lst),并依照此配置信息来启动不同的操作系统。


4.加载内核

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成 Linux核心环境的建立。


5.init依据inittab文件设定运行等级

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级Linux 的运行等级设定如下:




6.init进程执行rc.sysinit

在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程,完成设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等。


7.启动内核模块

具体是依据/etc/modules.conf文件或/etc/modules.d 目录下的文件来装载内核模块。


8.执行不同运行级别的脚本程序

根据运行级别的不同,系统会运行 rc0.drc6.d 中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。


9.执行 /etc/rc.d/rc.local

rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。


10.执行/bin/login程序,进入登录状态
  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值