Linux启动流程分析

一、BIOS,启动自我测试与MBR(Master Boot Record) / GPT(GPID partiton table)

1.获取信息——当按下电源键后,系统首先就会去加载BIOS(Basic Input Output System),并通过BIOS程序去加载CMOS的信息,并且借由CMOS内的设置取得主机的各项硬件配置。

(例如CPU与接口设备的沟通频率、启动设备的查找顺序、硬盘的大小与类型、系统时间、各周边总线是否启动Plug and Play(PnP,即即插即用设备)、各设备I/O口地址、以及与CPU沟通的IRQ中断等信息)        

BIOS是一个程序,这个程序是写死到主板上面的一个存储芯片中,这个存储芯片在没有通电时也能够记录数据,这就是只读存储器

2. 自我检测与数据读取——BIOS自我检测完成后,就开始执行硬件检测的初始化,并设置PnP设备,之后再定义出可启动的设备顺序,接下来就开始读取启动设备的数据

由于系统软件大多放置在硬盘中,因此BIOS会指定启动的设备以方便系统读取磁盘中的操作系统内核文件。但由于不同的操作系统它的文件格式不相同,因此必须要以一个启动引导程序来处理内核文件加载的问题,所以这个启动引导程序就被称为boot loader。而这个boot loader 就在启动设备的第一个扇区中,也就是MBR(Master Boot Record,主引导记录)

 二、开始执行系统的第一个程序:systemd

systemd最主要的功能就是准备软件的执行环境,包括系统的主机名、网络设置、语言设置、文件系统格式及其他服务的启动等。而所有的操作都会通过systemd的默认启动服务集合,亦即是/lib/systemd/system/default.target来规划。

  • 如前所述,当取得了/lib/systemd/system/default.target这一默认操作界面的设置后,接下系统会链接到/lib/systemd/system这个目录下去取得multi-user.target或graphical.target这其中的一个(我虚拟机里面的ubuntu 16.04默认的是graphical.target)。接下来systemd会去找两个地方的设置,即如下目录:

/etc/systemd/system/graphical.target.wants/:用户设置加载的unit

/lib/systemd/system/graphical.target.wants/:系统默认加载的unit  内容如下图所示

  • 由上图可知graphical.target必须要完成multi-user.target、rescue.service、rescue.target、display-manager.service之后才能够进行,而进行完graphical.target之后还得要启动display-manager.service才行。再看multi-user.target要执行完毕需要加载的项目有哪些:(下图一主要为multi-usr.target依赖的操作环境)
  • 通过上面的结果可知,multi-user.target需要在basic.target、rescue.service、rescue.target运行完毕后才能够加载上述许多unit,然后再去basic.target里面去找数据等,最终这些数据就可以通过【systemctl list-dependencies graphical.target】这个命令来列出所以相关性的服务,这就是systemd的调用所需要的服务流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值