CentOS7的启动流程

uefi或BIOS初始化,开始开机自检

这个过程是开机后,BIOS或UEFI进行硬件检查的阶段。

加载mbr到内存

自检硬件没有问题时候,这里以BIOS为例,BIOS将会直接找硬盘的第一个扇区,找到前446字节,将MBR加载到内存中,MBR将告诉程序下一阶段去哪里找系统的grub引导。此阶段属于grub第一阶段。grub还有1.5阶段和2阶段。

GRUB的阶段

grub第1.5和第2阶段,信息默认存放在扇区中,如果使用grub-install生成的第2阶段的文件是存放在/boot分区中的。

为了加载内核系统,不得不加载/boot分区,而加载/boot分区,要有/boot分区的驱动,/boot分区驱动是放在/boot分区中的啊,我们好像进入死循环了,Linux是怎么解决的呢?就是靠放在1.5阶段中的数据,放在第一个扇区后的后续扇区中,第1.5阶段和2阶段总共27个扇区。

第1.5阶段:mbr之后的扇区,识别stage2所在的分区上的文件系统。

第2阶段:开机启动的时候看到Grub选项、信息,还有修改GRUB背景等功能都是stage2提供的,stage2会去读入/boot/grub/grub.conf或者menu.lst等配置文件。

加载内核和inintamfs模块

加载内核,核心开始解压,启动一些最核心的程序。

为了让内核足够的轻小,硬件驱动并没放在内核文件里面。

kernel内核开始初始化,用systemd来代替centos6以前的init程序

  • 先执行initrd.target

包括挂载/etc/fstab文件中系统,挂载之后,就可以切换到根目录了。

  • 从initramfs根文件系统切换到磁盘的根目录
  • systemd执行默认target配置

centos7表面有“运行级别”这个概念,实际是为了兼容以前的系统,每个所谓“运行级别”都有对应的软连接指向,默认的启动级别/etc/systemd/system/default.target,根据它的指向可以找到系统要进入到哪个模式。

模式:

  1. 0 ==> runlevel0.target, poweroff.target
  2. 1 ==> runlevel1.target, rescue.target
  3. 2 ==> runlevel2.target, multi-user.target
  4. 3 ==> runlevel3.target, multi-user.target
  5. 4 ==> runlevel4.target, multi-user.target
  6. 5 ==> runlevel5.target, graphical.target
  7. 6 ==> runlevel6.target, reboot.target
  • systemd执行sysinit.target
  • systemd启动multi-user.target下的本机与服务器服务
  • systemd执行multi-user.target下面的/etc/rc.d/rc.local

Systemd执行multi-user.target下的getty.target及登录服务

getty.target我们也眼熟,它是启动终端的systemd对象。如果到此步骤,系统没有指定启动图形桌面,到此就可以结束了,如果需要启动图形界面,要在此基础上启动桌面程序。

systemd执行graphical图形化需要的服务

至此系统启动完成,可以正常使用。

最新文章

  1. 利用私有的API获得手机上所安装的所有应用信息(包括版本,名称,bundleID,类型)
  2. 在ubuntu中安装psutil
  3. SQL(触发器)
  4. java, poi, excel
  5. 模拟(堆):USACO Jan11 瓶颈
  6. 黑马程序员-集合(二)contains()方法的内部探索
  7. 芭比娃娃 Barbara
  8. JS根据屏幕分辨率改变背景宽高
  9. JDK,JRE,JVM,JMM关系与区别
  10. @Autowired 与@Resource的区别(详细)
  11. 解决报错SAXNotRecognizedException: Feature 'http://javax.xml.XMLConstants/feature/secure-processing' not recognized
  12. [IR] Huffman Coding
  13. GYM 101064 2016 USP Try-outs G. The Declaration of Independence 主席树
  14. Python安装常见问题:ModuleNotFoundError: No module named '_ctypes' 解决办法
  15. 洛谷 P2607 [ZJOI2008]骑士 解题报告
  16. Saltstack之SaltSyndic
  17. 情境领导II
  18. leetcode BFS
  19. linux下导入导出oracle的dmp文件
  20. Bootstrap历练实例:默认的面板(Panels)

热门文章

  1. Java Design Pattern(Factory,Singleton,Prototype,Proxy)
  2. 学习PYTHON之路, DAY 9 - Socket网络编程
  3. angular组件
  4. list map to map
  5. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.7 Adding a wms layer
  6. 原生js手动轮播图
  7. 和为S的正数序列
  8. VIPKID 内推---开发工程师
  9. GAN的入门级理解(按文章顺序)
  10. Python知识体系思维导图: