Linux系统启动流程学习笔记

前言

今天很天真的写了个openvpn的开机启动脚本,以为添加到/etc/rc.local就万事大吉了,结果肯定是失败的,因此这里记录一下我学习linux启动流程的过程!

系统启动流程加载BOIS的硬件资讯与进行自我测试,,并依据配置取得第一个可启动的装置

在个人计算机架构下,你想要启动整部系统首先就得让系统去加载BIOS(Basic Input Output System),并透过BIOS程序去加载CMOS资讯,并且藉由CMOS内的配置值取得主机的各项硬件配置。

在取得这些资讯后,BIOS还会进行启动自我测试(power-on self test,POST)。然后开始运行硬件侦测的初始化,并配置PnP装置,之后再定义出可启动的装置顺序,接下来就会开始进行启动装置的数据都去了。

由于我们的系统软件大多放置在硬盘中,所以BIOS会指定启动的装置好让我们可以读取磁碟中的操作系统核心文件。我们需要一个启动管理程序来处理文件加载的问题,因此这个启动管理程序就被成为Boot Loader.

读取并运行第一个启动装置内MBR的boot loader

loader的主要功能是认识操作系统的文件格式并据以加载核心到主内存中去运行。

boot loader主要功能:

吐嘈一下windows:windows的loader不具备控制权转交功能,因此安装双系统时只能先装windows再装linux了,微软是不是有些霸道和蛋疼!

依据boot loader的配置加载kernel,kernel会开始侦测硬件和加载驱动程序

boot loader的管理而开始读取核心文件后,接下来,linux就会将核心解压到主内存当中,并且利用核心的功能,开始测试与驱动各个周边装置,包括储存装置、cpu、网络卡、声卡等等。此时linux核心会以自己的功能重新侦测一次硬件,也就是说核心此时开始接管BIOS后的工作。

在硬件驱动成功后,kernel会主动呼叫init程序,而init会取得run-level咨询

在核心加载完毕、进行硬件侦测与驱动程序加载后,此时你的主机硬件应该是已经准备就绪了,此时核心会主动呼叫第一支程序,就是/sbin/init。查看init的pid为1./sbin/init最主要的功能是准备软件运行环境,包括系统的主机名称,网络配置,语系处理、文件系统格式及其他服务的启动。而所有的动作都会透过init的配置档,亦即是/etc/inittab来规划,而inittab内还有一个很重要的配置项目,那就是默认的runlevel(启动运行等级)。

run level等级:

也不要说曾经失去,失去的不是永远失去,得到的不是永远拥有,

Linux系统启动流程学习笔记

相关文章:

你感兴趣的文章:

标签云: