Linux 的开机流程分析

实时通
• 阅读 681

开机流程一览

开机管理程序(Boot Loader),由于各大 Linux distribution 的主流为 grub2和grub,下面就以它们为主讲解

>简单来说,grub2开机的经过可以总结如下的流程:

  1. 加载 BISO 的硬件信息与进行自我测试,上电自检。
  2. 读取并执行第一个开机设备内 MBR 的 boot Loader(grub2、spfdisk 等程序)GRUB 的最主要作用都是将操作系统内核加载到内存并运行。
  3. 根据 boot loader 的设置加载 Kernel,Kernel 会开始检测硬件与加载驱动程序
  4. 在硬件驱动成功后,Kernel 会调用 systemd 程序,并以 default.target 的流程开机(systemd 是所有进程的父进程)它负责将 Linux 主机带到一个用户可操作状态(可以执行功能任务)包括挂载文件系统,以及开启和管理 Linux 主机的系统服务等:
  • systemd 执行 sysinit.target 初始系统以及 bashic.target 启动其所要求的所有单元,包括各种可执行文件的目录路径、通信 sockets
  • systemd 启动 multi-user.target 下的本机与服务器服务
  • systemd 执行 multi-user.target 下的/etc/rc.d/rc.local 文件
  • systemd 执行 multi-user.target 下的 getty.target 及登录服务
  • systemd 执行 graphical 需要的服务
bootfs(用于系统引导)bootfs(boot file system)主要包含 bootloader和kernel,bootloader主要是引导加载kernel,当kernel被加载到内存中后 bootfs就被umount了。--->BootLoader(系统引导加载程序)--->加载内核--->内核挂载一个虚拟的rootfs作为初始文化系统,这一步的作用是形成一个根文件系统挂载点 “ / ”--->挂载rootfs初始文件系统(与上rootfs不同)--->挂载真正根文件系统替换rootfs--->后续工作

典型的Linux文件系统由bootfs和rootfs两部分组成
根文件系统包含

  • init/systemd进程的应用程序
  • 根文件系统提供了根目录 “ / ”
  • 挂载分区/etc/fstab
  • shell命令必须运行在根文件系统上(如ls,cd)
文件系统是i节点和block以及超节点组成

>grub2开机的经过可以总结如下的流程

1.BIOS
2.MBR(Kernel Loader)引导
3.grub2加载内核kernel
4.kernel 会开始检测硬件与加载驱动程序,硬件驱动成功后Kernel 会调用 systemd/init 程序
5./etc/inittab 选择开机的运行级别
6./etc/rc.d/rc.sysinit 加载PATH,主机名,网络信息
7./etc/rc.d/init.d 服务service
8./etc/rc.d/rc.local 开机启动自定义区域
9./bin/login 登陆系统
10.shell控管主机

点赞
收藏
评论区
推荐文章
GoCoding GoCoding
3年前
Supervisor 开始
Supervisor是Linux/Unix操作系统上的进程管理工具。本文介绍了于Ubuntu18上如何使用Supervisor开机启动、保活守护自己的服务进程。安装建议系统方式安装,可开机启动。bashsudoaptinstallsupervisorySystemd查看服务状态:bash$sudosystemctlstatu
芝士年糕 芝士年糕
2年前
Linux系统启动流程
为什么要了解系统启动流程?主动让软件开机自启电脑不能正常启动,排查出错的环节排查黑客植入木马程序,到底将木马放到了哪里正文linux开机启动流程图1.开机自检(POST,PowerOnSelfTest)电脑通电之后,首先加载B
胖大海 胖大海
2年前
Linux系统启动流程
开机启动流程图1\.开机自检电脑通电之后,首先加载BIOS(basicinputoutputsystem,基本输入输出系统)。而BIOS程序首先检查计算机能否满足运行的基本条件,这个叫做“硬件自检(PowerOnSelfTest)”。主要检查:主板,CPU,内存,磁盘,网卡,声卡,显卡,鼠标,键盘,显示器等2\.启动顺序硬件自检完成后,B
Stella981 Stella981
3年前
CentOS 7设置开机启动服务,添加自定义系统服务
CentOS7设置开机启动服务建立服务文件保存目录设置开机自启动其他命令1.建立服务文件文件路径vim/usr/lib/systemd/system/nginx.service服务文件内容1.ngin
Stella981 Stella981
3年前
C# Winform打包部署时添加注册表信息实现开机自启动
1.原理:需要开机自启动的程序,需要将其启动程序的路径写到注册表中指定的文件夹下2\.写入注册表的方式有两种a.在生成安装程序时配置b.在程序运行时,动态配置方法一:使用VS2010自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件。具体实现如下:1、添加安
Stella981 Stella981
3年前
Linux安装MariaDB(Mysql)和简单配置
1、安装MariaDB安装命令yumyinstallmariadbserver安装完成MariaDB,首先启动MariaDBsystemctlstartmariadb设置开机启动systemctlenablemariadb接下来进行MariaDB的相关简单配置mysql_se
Stella981 Stella981
3年前
CentOS7配置Tomcat开机自动启动
CentOS7配置Tomcat开机自动启动CentOS7配置Tomcat开机启动安装Tomcat1. 下载tomcat7解压到目录即可修改startup.sh启动文件1. startup.sh是tomcat的启动文件2. 修
Stella981 Stella981
3年前
Linux系统开机启动流程(简述)
1)开机自检,加载BIOS信息    CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息等2)MBR引导    硬盘的0柱面0磁道1扇区被称为MBR(MasterBootReord)主引导记录,大小为512字节,里面存放预启动信息、分区表信息及分区标志等;分为两部分:第
Stella981 Stella981
3年前
Linux启动过程
开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中
Stella981 Stella981
3年前
C#客户端(WinForm)开机自动启动实现
///<summary///修改程序在注册表中的键值///</summary///<paramname"isAuto"true:开机启动,false:不开机自启</paramprivatevoid
胖大海 胖大海
2年前
Linux Centos7 grub引导故障
首先进行grub文件破坏,删除配置文件rmrf/boot/grub2/grub.cfg    删除需谨慎,实验的话最好去3A搞个虚拟机!init6重启重启之后,在开机加载界面按esc键,选择Troubleshooting选择RescueaCentossystem按1,回车进入bash模式chroot/mnt/sysimagegrub2