![01a052251386c39a801fc3c342239965.png](https://img-blog.csdnimg.cn/img_convert/01a052251386c39a801fc3c342239965.png)
感谢各位大佬指出问题!!!
以前并没有关注过开机启动这块的内容,systemed都是在各个网站参考后写的自己的理解,有问题的话,望提出!
systemd:为何要创建一个新的init系统软件www.wowotech.net linux rhel 7系统启动过程blog.csdn.net![15ac931fa0cf120b8e02157b4eeef321.png](https://img-blog.csdnimg.cn/img_convert/15ac931fa0cf120b8e02157b4eeef321.png)
![565d2260da990694a879e4a529a06bac.png](https://img-blog.csdnimg.cn/img_convert/565d2260da990694a879e4a529a06bac.png)
Linux操作系统的开机流程详解
第一步: BIOS自检
这步是找到BIOS检查CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等,(启动顺很熟悉,每次gost装机的时候,要把开机首选项设置成从U盘启动)。
第二步: 读取MBR(Master boot Record)
MBR是位于一扇区,零磁道,0柱面的一个有512B的文件,里面有446B是引导区(PRE-BOOT) ,用来找到活动分区(active)并将活动区读入0×7c00内存,其实被复制到内存的就是我们说的BOOT Loader,准确到电脑上就是GRUB。还有66B是分区表(PARTITION PABLE)这里记录了硬盘信息。(分了几个区之类的)
第三步: 加载Boot Loader
Boot Loader的种类有很多, 其实是一段小程序,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状 态,以便为最终调用操作系统内核做好一切准备。其中Grub、Lilo和spfdisk是常见的Loader。下面使用Grub(就是开机的时候选择哪一个内核)。
第四步:加载内核
系统将解压后的内核放置在内存中(这里说系统到底是哪一个系统呢?)开始调用start_kernel()函数, 来初始化各种设备,到这里内核环境已经建立起来了。
第五步:启动systemed单元目标
随之而来的是/etc/inittab文件无效。取而代之的是 /etc/systemd/system/default.target,这是一个软链接指向/usr/lib/systemd/system/graphical.target,当改变默认运行级别的时候,软连接指向的文件也随之改变
1.systemd将运行级别分成了不同的启动单元组
![7d14e5ba953e146fdf4770f686e879f7.png](https://img-blog.csdnimg.cn/img_convert/7d14e5ba953e146fdf4770f686e879f7.png)
![6d7aca450d0693fe2e9706f8a5d0623a.png](https://img-blog.csdnimg.cn/img_convert/6d7aca450d0693fe2e9706f8a5d0623a.png)
![fb0838020d5331e19f5eb650b91a58f2.png](https://img-blog.csdnimg.cn/img_convert/fb0838020d5331e19f5eb650b91a58f2.png)
将相应的服务划分为一个单元(eg:graphical.target)
![2cdccdde26882bbc9c9c8070e77cc833.png](https://img-blog.csdnimg.cn/img_convert/2cdccdde26882bbc9c9c8070e77cc833.png)
2、systemed并行启动原理
1、解决socket依赖
2、解决D-Bus依赖(desktop-bus)
3、解决文件系统依赖
剖析Linux系统启动过程中的 mingettywww.360doc.com
![6fdf7be90339191a5d20021c9662c72f.png](https://img-blog.csdnimg.cn/img_convert/6fdf7be90339191a5d20021c9662c72f.png)
![80762546a9f581e853a7956e56fc8275.png](https://img-blog.csdnimg.cn/img_convert/80762546a9f581e853a7956e56fc8275.png)
![ac156d6e2d868a7fa0a855297258db5a.png](https://img-blog.csdnimg.cn/img_convert/ac156d6e2d868a7fa0a855297258db5a.png)
Linux操作系统的开机流程详解(rehl6、centos7)
开机需要十步
第一步:开机自检(BIOS)就是开始工作之前先对自己的工具进行检查是否正常。BIOS其实就是主板上的一给自检程序,开机先对主板上自带的和外接的一些开机必备的设备进行检测,像CPU,显卡,内存,硬盘等设备的自检过程就是自检
第二步:MBR引导,也就是根据装有linux系统的硬盘上的主引导区的记录进行引导,主引导记录处在硬盘上的第一给物理分区上,硬盘能够读取到数据也就是靠的这个最主要的MBR主引导记录,假如这给512字节丢失那这张硬盘就无法工作。它里面包含了硬盘的主引导程序和硬盘的分区表,分区表有四个分区记录每个分区占16个字节共64个字节,还有446字节放主引导程序,2字节用作校验。
第三步:GRUB菜单(Boot Loader),也就是操作系统引导菜单
第四步:加载内核(kernel),也就是启动操作系统的核心
第五步:运行INIT进程,init也就是主进程,它的PID号是1也就是第一个被运行的进程
第六步:读取/etc/inittab配置文件,也就是linux开机时默认的运行级别
第七步:init进程,执行/etc/rc.d/rc.sysinit初始化脚本,也就是init进程的初始化用来执行kernel的任务
第八步:执行/etc/rc.d/rc脚本,通过执行脚本找出默认启动模式选项要启动的进程
第九步:执行/etc/rc.d.rc.local个人配置脚本,也就是用户想要开机自启动的命令或者进程都放在这个脚本文件内,这样设置开机自启方式比较安全。开机时这给脚本文件内的所有命令全部执行一遍
第十步:启动mingetty进程(/sbin/mingetty)
init和systemed之间的一些特点:
Linux启动流程和服务管理(init和systemd)_谢公子的博客-CSDN博客_systemd与initblog.csdn.net![5c7b24503d574cd2ee03bc2f5e5852d0.png](https://img-blog.csdnimg.cn/img_convert/5c7b24503d574cd2ee03bc2f5e5852d0.png)