文章目录

  • 系统启动流程(Linux)
    • BIOS
    • MBR
    • GRUB2启动引导
    • 内核引导
    • systemd
  • 固件和BIOS
    • BIOS分类
    • 关于legacy
    • 关于uefi
  • bootloader 启动管理器
  • kernel初始化
  • systemd - 守护进程
  • 总结

系统启动流程(Linux)

1. BIOS 加电自检
2. 把 MBR 加载到内存
3. 加载 grub 引导程序
4. Kernel 自身初始化
5. 启动第一个程序 systemd

BIOS

  1. 初始化硬件
  2. 查找启动设备
1 - CD-DVD - 光驱启动
2 - PXE - 网络启动
3 - USB - USB启动
4 - HDD (硬盘启动 - Hard Disk) MBR - 主引导记录

MBR

1 - 446B BootLoader:安装GRUB的stage1 或 GRUB2的 boot.img
2 - 64B partition table 主分区表:四个主分区
3 - 2B magic number AAH 55H 标识

GRUB2启动引导

1 - boot.img  唯一作用是在系统启动时装载 core.img ,即装载内核
2 - core.img    是GRUB2的核心映像文件
3 - *.mod   可以动态加载的模块
4 - grub.cfg    如果 /boot 在独立分区,则:/grub2/grub.cfg如果 /boot 不在独立分区,则: /boot/grub2/grub.cfg

内核引导

1 - /boot/vmlinuz    Linux内核映像及内核参数传递
2 - /boot/initramfs 首先:在内存中释放供内核使用的根文件系统(/boot/initramfs)然后,挂载真正的根文件系统,然后执行 /usr/lib/systemd/systemd

systemd

1 - 读取 /etc/systemd/system
2 - default.target  - 链接文件
3 - graphical.target - 图形界面
4 - 启动 图形界面用户登录 进程

固件和BIOS

早期,BIOS是烧在主板上的;
计算机主板上的BIOS在以前就被称为固件
【蓝屏,硬件出现问题】

BIOS分类

1 - legacy

legacy启动模式是当前最常用的BIOS启动模式,读取MBR引导记录表

2 - uefi

Unified Extensible Firware Interface
译:统一的可扩展固件接口

  • 是一种新型BIOS
  • 兼容传统的legacy启动方式

关于legacy

MBR 介绍

采用MBR(Main Boot Record,译 主引导记录)分区表

主引导分区:共512字节(1 Byte = 8 bit),分为三部分

1 - 主引导程序 446B  - 主引导程序所在位置
2 - 磁盘分区表 DPT 64B - 读取分区表分区一 16B:第1个字节:0x80 表示激活 - 激活的分区拥有控制权,四个分区只有一个是激活的第2-4字节:分区第一个扇区的物理位置第5个字节:主分区类型第6-8字节:分区最后一个扇区的物理位置第9-12字节:分区已用完的扇区数第13-16字节:分区扇区总数4 字节,32 位一个主分区的扇区总数不超过:2^32个每个扇区大小为 512 字节单个分区最大空间为:2^32 * 512 = 2T分区二 16B:分区三 16B:分区四 16B:
3 - 结束标志 2B 分区结束

MBR 局限性

1 - 最多四个主分区,或 最多支持 3个主分区+一个扩展分区
2 - 每个分区最大 2T

关于uefi

kylin OS:
存在一个 ESP 分区(EFI系统分区)uefi的引导程序是以后缀名为 .efi 的文件存放在 ESP 分区中,ESP 分区采用 fat32 文件系统kylinos将 ESP 分区挂载到 /boot/efi ,直接用文件夹浏览器进去就可以查看到 .efi 文件

GPT

采用GPT(GUID Partition Table)分区表
译:全局唯一标识磁盘分区表

优势

  • 大小可支持到128个分区
  • 每个分区大小可为 2^64 *512
  • 容错性、兼容性

bootloader 启动管理器

计算机读取MBR前面的446B的机器码后,会将控制权交给Boot Loader

Linux下的Bootloader有:

  • grub
  • grub2
  • lilo
  • spfdisk

BootLoader的主要功能

1 - 提供菜单用户可以选择不同的启动项
2 - 加载内核文件直接指向可启动的程序区段来开始操作系统
3 - 转交给其他 Loader将引导装载功能转交给其他Loader负责

kernel初始化

kernel文件很小,只保留了最基本的模块,并以压缩的文件形式存储在硬盘中

内核文件放置在 /boot 目录下

BIOS - bootloader - kernel


initrd - 镜像文件

systemd - 守护进程

  • systemd 是Linux系统工具,用来启动守护进程,已成为大多数发行版的标准配置
  • systemd取代了initd,成为系统的第一个进程(PID=1),其他进程都是它的子进程
  • systemd ,可以并发,可以触发进程组
  • systemd - 不是一个命令,是一组命令
  • systemd - 位于 /etc/systemd/system
kylinos采用过多种启动方式
1 - Sysvinit
2 - upstart
3 - system
4 - systemd
1 - systemd 执行的第一个目标是: default.target;实际上,图形化系统的default.target是指向graphical.target的软链接 (.target 是一组命令)

常用target对应到Sysvinit的运行级别

运行级别 runlevel 名称 描述
basic.target 启动基本系统,该目标间接并包含了所有的本地挂载点单元以及其他必须的系统初始化单元
default.target 默认的启动目标,通常指向 multi-user.target 或者 graphical.target
5 graphical.target 专用于启动图形化登录界面的目标单元,其中包含了 multi-user.target 单元
0 halt.target 专用于关闭系统但不切换电源时启动的单元
0 poweroff.target 停止系统运行并切断电源
local-fs.target 专用于集合本地文件系统挂载点的目标单元
3 multi-user.target 专用于 多用户 且 命令行模式 下 启动的单元,其[install]段都应该加上WantedBy=multi-user.target指令
1 rescure.target 专用于启动基本系统并打开一个救援shell时需要启动的单元
emergency.target 单用户模式,没有服务程序运行,文件系统也没有挂载。这是一个最基本的运行级别,仅在主控制台上提供一个shell用于用户与系统进行交互。
local-fs-pre.target 此目标单元自动排在所有 需要自动挂载的本地文件系统挂载点 之前。可用于确保在 挂载本地文件系统 之前启动某些单元。
6 reboot.target 重启系统,专用于重启系统时需要启动的单元

挂载文件系统后,再依次运行各target,最后才会运行到default.target 链接到的target(默认是 grapgical.target 和 multi-user.target),至此用户就可以通过图形或者控制端来登录系统

系统启动完成

总结

1 - 计算机加电到完成启动,包含多个进程;
2- 系统启动需要固件支持。legacy 采用的时 MBR分区表,MBR分区表的结构决定了它支持的分区数量和大小;
3 - 当主机存在多个操作系统时,需要bootloader管理和启动系统;
4 - kylinos V10 目前采用的初始化进程是 systemd
5 - 当systemd作为启动进程进行时,它将初始化系统,也就是启动并维护各种用户空间的服务

【操作系统】系统启动流程相关推荐

  1. Linux 操作系统原理 — 系统启动流程

    目录 文章目录 目录 系统启动流程 编辑 gurb.cfg RHEL7 的启动级别 RHEL7 破密码步骤 grup2 加密,防止破密码 initramfs 文件 系统启动流程 RHEL7 使用了 G ...

  2. Linux 系统启动流程及其介绍

    熟悉Linux系统启动流程可以更好的排除Linux系统在启动的过程中所遇到的错误,下面介绍Linux系统在启动过程. 开机,BIOS自检:检测外置设备,目的是为了把外围设备的信息提供给操作系统使用 寻 ...

  3. 内核电源管理器已启动关机转换_Linux系统启动流程

    Linux系统启动流程 电源开关 (手动操作按钮 / 加电自启动 ) 加载bios : 最接近硬件的软件 各家厂商都会开发适合自己主板的bios BIOS加电自检 只有硬件没有问题的情况下才能运行软件 ...

  4. 【Android 系统开发】 Android 系统启动流程简介

    作者 : 万境绝尘 (octopus_truth@163.com) 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/3889548 ...

  5. Linux的系统启动流程

    Linux的系统启动流程 一.systemd进程介绍 1.systemd服务介绍 2.systemd功能 3.服务单元 3.查看以激活状态的服务单元 4.查看服务之间的依赖关系 二.Linux的运行级 ...

  6. CentOS系统启动流程及GRUB文件说明

    CentOS系统启动流程及GRUB文件说明 时间:2013-10-24 01:33来源:"过程就是为了实现结果" 博客 作者:本站 举报 点击:1114次 id="ifr ...

  7. Centos7系统启动流程

    Centos7系统启动流程 1.uefi或BIOS初始化,开始post(power on self test)开机自检 这个过程是开机后,BIOS或UEFI进行硬件检查的阶段.检测:CPU, 内存,硬 ...

  8. Bootloader及u-boot简介/u-boot系统启动流程

    Bootloader及u-boot简介 Bootloader代码是芯片复位后进入操作系统之前执行的一段代码,主要用于完成由硬件启动到操作系统启动的过渡,从而为操作系统提供基本的运行环境,如初始化CPU ...

  9. linux基础-01-用户和目录、vim、归档和解压、系统启动流程、加密

    linux系统下一切皆文件 一.用户和目录 1. useradd  增加用户 eg:useradd userA1     ---新建用户userA1 增加userA1后,实际上会在以下文件增加内容:e ...

最新文章

  1. Boke宝贝 - 免费提供图片存储空间、计数器、留言板
  2. [Xcode 实际操作]七、文件与数据-(17)解析JSON文档
  3. oracle归档模式备份恢复,oracle归档模式备份恢复
  4. 机器学习工程师第一年的12点体会
  5. 机器学习之RandomForest(随机深林)原理与实战
  6. mysql数据库性能跟哪些参数有关系_MySQL性能优化全攻略-服务器参数调整
  7. python连接postgis_python连接postgres方法
  8. 光复用技术中三种重要技术_【技术文章】X射线无损检测仪在锂电池行业中的重要应用...
  9. Neo4j 的一些使用心得
  10. [Python] wxPython 菜单栏控件学习总结(原创)
  11. 《老路用得上的商学课》31-35学习笔记
  12. 无向图的邻接矩阵平方的实际意义解释
  13. 多无人机任务分配与路径规划算法学习(一)
  14. Apache Storm 官方文档 —— Trident API 概述
  15. watermark.js文字水印以及图片水印
  16. 怎么用手机拍摄制作视频
  17. 如何实现简单的随机点名
  18. 2、yaml语法注解
  19. 爬虫(三)- 寻找周杰伦的歌单,json()
  20. Camera2 介绍

热门文章

  1. ATT格式汇编—— mov与lea的区别
  2. 蓝桥杯单片机(三)矩阵按键
  3. 学好日语“听说读写”几点心得
  4. 简洁代码写好看的信纸(多重背景)
  5. Python之爬虫入门(最详细通俗易懂讲解)
  6. 【MySQL】数据库索引原理 | 索引数据结构 | B+Tree
  7. STM32的Vcap的问题及解决---原来经验也害人
  8. Javascript 自执行函数
  9. c语言数组中define,c语言中#define的用法
  10. SQL 2017启动出现Cannot find one or more components.Please reinstall the application