对于Linux的启动流程,是一个很复杂的过程
下面我来介绍一下:
1、当我们按下电源键通电后,我们的BIOS①会去检查硬件(CPU、显卡、硬盘、光驱等等)是否有问题,取得主机的各项硬件配置后,就会去找启动设备,这里说的就是硬盘,找到硬盘的MBR②,这时候就将控制权交到MBR中
2、MBR的功能就是去找到安装在MBR的grub③菜单,也就是Boot loader,随后grub就把系统的kernel(内核)给引导出来了
3、当boot loader读取到kernel文件后,会将内核加载到内存中,此时内核会取代BIOS的功能,重新检查一次硬件,在硬件驱动成功后,kernel会主动调用init进程
4、接着就会初始化系统了,init会取得/etc/inittab④的信息,获取系统的运行级别
5、init执行/etc/rc.d/rc.sysinit⑤文件来准备软件执行的操作环境(网络、时区等)
6、init执行run-level的各个服务等
7、init执行/etc/rc.d/rc.local⑥文件
8、init执行终端机模拟程序mingetty来启动login进程,最后就是等待用户登陆
①BIOS:Basic Input Output System,基本输入输出系统。
它是一个韧体,写在主板上的一个ROM芯片的程序,CMOS就是ROM芯片,是一个硬件,要与之区别
②MBR:Master Boot Record,主引导记录。在硬盘的0柱面、0磁头、1扇区,称为主引导扇区。
有512个字节:主引导程序(Boot loader)占446个字节
分区表信息:占64字节
结束校验位:2字节(固定为22AA)
③GRUB:Grand Unified Bootloader,多重操作系统的启动管理器。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
④/etc/inittab:这个配置文件会去默认运行哪个级别的系统,id:5:initdefault: 意思是默认运行5级别的系统
⑤/etc/rc.d/rc.sysinit:会设置主机名,启动网络服务,加载外部设备(鼠标、键盘)反正就是加载各项系统服务,设置系统环境。
本文出自 “小旭” 博客,请务必保留此出处http://loopholes.blog.51cto.com/9445813/1621294
原文地址:http://loopholes.blog.51cto.com/9445813/1621294