Linux启动过程详讲解_linux启动过程详解

前言

对于linux系统的初学者来说,理解并掌握linux系统启动流程能够使你够深入的理解linux系统,还可以通过系统的启动过程来分析问题解决问题。

启动过程:

POST上电自检–>加载BIOS–>加载主引导记录–>BootLoader启动–>加载内核–>运行开机自启程序–>系统启动

在这里插入图片描述

开机自检

linux开机加电后,系统开始开机自检,该过程主要对计算机各种硬件设备进行检测,如CPU、内存、主板、硬盘、CMOS芯片等。

如果出现致命故障则停机,并且由于初始化过程还没完成,所以不会出现任何提示信号;

如果出现一般故障则会发出声音等提示信号,等待故障清除;若未出现故障,加电自检完成。

当打开计算机电源,计算机会首先加载基本输入输出系统(Basic Input Output System )。BIOS程序一般被存放在主板ROM(只读存储芯片)之中、即使在关机或掉电以后该程序也不会丢失。

BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PNP特性等等。在此之后,计算机就知道应该去读取哪个硬件设备了。

加载主引导记录

主引导记录(MBRMaster Boot Record)是计算机开机以后访问硬盘时所必须要读取的第一个扇区,位于硬盘的第0柱面第0磁道第一扇区,大小为512字节。

**MBR 中最主要的功能就是存储、启动、加载启动引导程序。**诸如LILO、GRUB这些引导程序(BootLoader)都是直接安装在MBR中。
在这里插入图片描述

BootLoader启动

BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。

在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

加载内核

GRUB把内核加载到内存后展开并运行, 此时GRUB的任务已经完成,接下来内核将会接管并完成,同时把initrd加载到内存中并运行。

initrd文件其实是一个虚拟的根文件系统,里面有binliblib64sysvaretcsysrootdevproctmp等根目录,它的功能就是将内核与真正的根建立联系,内核通过它加载根文件系统的驱动程序,然后以读写方式挂载根文件系统,至此, 内核加载完成。

执行init

内核加载进内存运行并以读写方式挂载完根文件系统后,执行第一个用户进程initinit首先运行/etc/init/rcS.conf脚本,对系统做初始化设置。init进程的一大任务,就是去运行这些开机启动的程序。
Linux预置七种运行级别(0-6),Linux允许为不同的场合,分配不同的开机启动程序。
在该过程中主要执行以下操作:

  1. 获得网络环境
  2. 挂载设备
  3. 开机启动画面Plymouth(取替了过往的 RHGB)
  4. 判断是否启用SELinux
  5. 显示于开机过程中的欢迎画面
  6. 初始化硬件
  7. 用户自定义模块的加载
  8. 配置内核的参数
  9. 设置主机名
  10. 同步存储器
  11. 设备映射器及相关的初始化
  12. 初始化软件磁盘阵列(RAID)
  13. 初始化 LVM 的文件系统功能
  14. 检验磁盘文件系统(fsck)
  15. 设置磁盘配额(quota)
  16. 重新以可读写模式挂载系统磁盘
  17. 更新quota(非必要)
  18. 启动系统虚拟随机数生成器
  19. 配置机器(非必要)
  20. 清除开机过程当中的临时文件
  21. 创建ICE目录
  22. 启动交换分区(swap)
  23. 将开机信息写入/var/log/dmesg文件中

打印登录提示符

系统初始化完成后,init给出用户登录提示符(login)或者图形化登录界面,用户输入用户和密码登陆后,系统会为用户分配一个用户uid和组gid,这两个ID是用户的身份标识,用于检测用户运行程序时的身份验证。

登录成功后,整个系统启动流程运行完毕!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值