zoukankan      html  css  js  c++  java
  • Centos7系统启动流程

    Centos7系统启动流程

    1uefi或BIOS初始化,开始post(power on self test)开机自检
    这个过程是开机后,BIOS或UEFI进行硬件检查的阶段。检测:CPU, 内存,硬盘等硬件信息。

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

    分区符MBR(512字节)

    三部分组成:

    引导程序: 446字节(bootloader)

    分区表: 64字节

    魔数: 2字节(55AA)

    3、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等配置文件。

    4、加载内核和initramfs模块

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

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

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

    (1)执行initrd.target

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

    (2)从initramfs根文件系统切换到磁盘根目录

    (3)systemd执行默认target配置

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

    0 ==> runlevel0.target, poweroff.target
    1 ==> runlevel1.target, rescue.target
    2 ==> runlevel2.target, multi-user.target
    3 ==> runlevel3.target, multi-user.target
    4 ==> runlevel4.target, multi-user.target
    5 ==> runlevel5.target, graphical.target
    6 ==> runlevel6.target, reboot.target
    (4)systemd执行sysinit.target

    有没有很眼熟?是的,在CentOS6上是被叫做rc.sysint程序,初始化系统及basic.target准备操作系统

    (5)systemd启动multi-user.target下的本机与服务器服务

    (6)systemd执行multi-user.target下的/etc/rc.d/rc.local

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

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

    7、systemd执行graphical需要的服务

    CentOS6,7启动区别

    系统启动和服务器守护进程管理器,它不同于centos5的Sysv init,centos6的Upstart(Ubuntu制作出来),systemd是由Redhat的一个员工首先提出来的,它在内核启动后,服务什么的全都被systemd接管,kernel只是用来管理硬件资源,相当于内核被架空了,因此linus很不满意Redhat这种做法。

  • 相关阅读:
    创建网络数据集
    [虚拟机]Virtual Box的使用--共享文件夹
    MapControl图层删除或添加触发监听事件
    Dev控件GridView单元格绑定控件
    Log4net中换行符
    没有为 COM 互操作注册程序集 请使用 regasm.exe /tlb 注册该程序集——解决办法
    加载dll过程中assembly失败
    Spring Boot 自带缓存及结合 Redis 使用
    Spring Boot + Redis 初体验
    在 Windows 中使用 C# 启动其他程序
  • 原文地址:https://www.cnblogs.com/getbird/p/10869730.html
Copyright © 2011-2022 走看看