Linux操作系统启动流程

辰星3年前技术文章931

无论Windows还是Linux操作系统,启动之前都会对硬件进行检测,之后硬盘引导启动操作系统,下面是与启动系统相关的几个概念。


  1. BIOS

基本输入输出系统 是一组固化到计算机主板上的只读内存镜像芯片上的程序,主要功能是为计算机  提供最底层的最 直接的硬件设置和控制。

  1. MBR

全新硬盘在使用之前必须进行分区格式化,硬盘分区初始化的格式主要有两种,分别为MBR 格式和GPT 格式。

如果使用MBR 格式,操作系统将创建主引导记录扇区,主要功能是操作系统对磁盘进行读写时,判断分区的合法性以及分区引导信息的定位。在MBR 硬盘中,硬盘分区信息直接存储于主引导记录中,同时主引导记录还存储着系统的引导程序。

  1. GPT

在GPT 硬盘中,分区表的位置信息储存在GPT 头中。出千兼容性考虑,第一个扇区同样有一个与MBR 类似的标记,叫作受保护的主引导记录,作用是当使用不支持GPT 的分区工具时,整个硬盘将显示为一个受保护的分区,以防止分区表及硬盘数据遭到破坏,而其中存储的内容和MBR 一样,之后才是GPT 头。GPT 优点支持2TB 以上磁盘,MAC 、Linux 系统都能支持GPT 分区格式, Windows 7 /8 64位,Windows Server 2008 64 位支持GPT 。

  1. GRUB

GNU 项目的多操作系统启动程序(GRand unified bootloader, GRUB), 可以支持多操作系统的引导,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB 可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。它是一个多重操作系统启动管理器。


Linux 操作系统启动流程

初学者对Linux 操作系统启动流程深入理解,能有助于后期在企业中更好地维护Linux 服务器,能够快速定位系统问题,进而解决问题。Linux 操作系统启动流程如图所示。

image.png

1 . 加载BIOS

计算机电源加电质检,首先加载基本输入输出系统,包含硬件CPU,内存,硬盘等相关信息,设备启动顺序信息,硬盘信息,内存信息,时钟信息等。加载完BIOS 信息,计算机将根据顺序进行启动。

2. 读取MBR

读取完BIOS 信息,计算机将会查找BIOS所指定的硬盘MBR引导扇区,将其内容复制到0x7c00地址所在的物理内存中。被复制到物理内存的内容是bootloader, 然后进行引导。

3. GRUB 引导

GRUB启动引导器是计算机启动过程中运行的第一个软件程序, 当计算机读取内存中的GRUB 配置信息后,会根据其配置信息来启动硬盘中不同的操作系统。

4. 加载kernel

计算机读取内存映像,并进行解压缩操作,屏幕一般会输出"Uncompressing Linux" 的提示,当解压缩内核完成后,屏幕输出''OK, booting the kernel" 。系统将解压后的内核放置在内存之中,并调用start_kernel () 函数来启动一系列的初始化函数并初始化各种设备,完成Linux 核心环境的建立。

5. 设定inittab 运行等级

内核加载完毕,会启动Linux 操作系统第一个守护进程init, 然后通过该进程读取/etc/inittab,/etc/inittab 文件的作用是设定Linux 的运行等级。

6. 加载rc.sysinit

读取完运行级别,Linux 系统执行的第一个用户层文件/ etc/rc. d/rc.sysinit, 该文件功能包括设定path运行变量、设定网络配置、启动swap 分区、设定/ proc 、系统函数、配置SELinux 等。

7. 加载内核模块

读取/etc/modules.conf文件及/etc/modules.d 目录下的文件来加载系统内核模块。

8. 启动运行级别程序

根据之前读取的运行级别,操作系统会运行rc0.d到rc6.d 中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。其中以S 开头表示系统即将启动的程序,如果以k 开头,则代表停止该服务。


image.png

9. 读取rc.local 文件

操作系统启动完相应服务之后, 会读取执行/ etc/rc. d/ rc.loca l 文件,可以将需要开机启动的任务加入到该文件末尾,系统会逐行去执行并启动相应命令。

image.png

10. 执行/ bin/ login 程序

执行/ bin/login 程序,启动到系统登录界面,操作系统等待用户输入用户名和密码,即可登录到shell 终端,如图所示,输入用户名、密码即可登录Linux 操作系统,至此Linux操作系统完整流程启动完毕。

image.png


相关文章

Hue跑shell脚本报没权限问题

Hue跑shell脚本报没权限问题

1、客户反应运行脚本如下:经过排查服务器上没有workflow用户,尝试用root、admin测试正常 2、调用脚本运行失败1、给予脚本执行权限 chmod +x data-test.sh 2、/u...

Linux 文本三剑客 - Sed

Stream EDitor(sed)是一种行编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space),接着用 sed 命令处理缓冲区中的内容,处...

Flink关于HiveCatalog

HiveCatalogHiveCatalog 有两个用途:作为原生 Flink 元数据的持久化存储,以及作为读写现有 Hive 元数据的接口。配置在flink-sql-connector-hive-1...

GTID 模式 - 通过跳过事务解决主从故障

一、前言很多场景下我们需要跳过一个事务来修复主从关系,例如主从事务不一致,或者对无主键表更新,导致较大延迟,操作过程在此记录。二、操作流程1. 获取最后一个 GTID 操作在 GTID 模式下,如果需...

Flinksql Kafka 接收流数据并打印到控制台

Flinksql Kafka 接收流数据并打印到控制台

本文目的使用Flink SQL创建一个流处理作业,将来自Kafka主题"dahua_picrecord"的数据写入到另一个表”print_table”控制台中。使用sql-client前 需要启动ya...

PG的pg_stat_statements插件

pg_stat_statements可追踪一个服务器所执行的所有 SQL 语句的执行统计信息,可以用于统计数据库的资源开销,分析TOP SQL。一、插件安装1、编译安装进入postgresql源码目录...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。