您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

Linux系统开机启动过程详解

时间:2023-12-28 11:19:06  来源:今日头条  作者:JasonTang

摘要:操作系统的启动过程差别不大,Window和linux的启动都需要【通电】-【自检】-【登录】几个步骤。对Linux系统而言,更详细的启动流程为:通电-->BIOS-->主引导记录(MBR)-->grub引导-->加载内核-->init进程-->读取/etc/inittab(运行级别)-->/etc/init.d-->用户登录-->Login shell。

本文主要介绍Linux系统启动流程中涉及的几个阶段的相关介绍,详细内容请参考下文。

 

一、基于BIOS启动

1、BIOS自检阶段

说明:BIOS是Basic Input/Output System 的缩写,意思是基本输入/输出系统,BIOS是电脑开机后必须调用的程序,检测程序都由BIOS提供,BIOS更是配件之间的一个数据交换和协调中心。BIOS的作用是为计算机提供最底层的、最直接的硬件设置和控制。BIOS是一组固化到计算机内主板上一个ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,可从CMOS中读写系统设置的具体信息。

(1)、硬件自检

BIOS中主要存放的程序包括:自诊断程序(通过读取CMOS RAM中的内容识别硬件配置,并对其进行自检和初始化)、CMOS设置程序(引导过程中,通过特殊热键启动,进行设置后,存入CMOS RAM中)、系统自动装载程序(在系统自检成功后,将磁盘相对0道0扇区上的引导程序装入内存使其运行)和主要I/O驱动程序和中断服务(BIOS和硬件直接打交道,需要加载I/O驱动程序)。

BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做”硬件自检”(Power-On Self-Test),缩写为POST。

如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。

(2)、启动顺序

硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。

这时,BIOS需要知道,“下一阶段的启动程序”具体存放在哪一个设备。也就是说,BIOS需要有一个外部储存设备的排序,排在前面的设备就是优先转交控制权的设备。这种排序叫做”启动顺序”(Boot Sequence)。

打开BIOS的操作界面,里面有一项就是“设定系统启动顺序”。

2、引导记录

说明:BIOS按照”启动顺序”,把控制权转交给排在第一位的储存设备。即根据用户指定的引导顺序从软盘、硬盘或是可移动设备中读取启动设备的MBR,并放入指定的位置(0x7c000)内存中。

这时,计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给”启动顺序”中的下一个设备。

这最前面的512个字节,就叫做“主引导记录”(英文为Master boot record,缩写为MBR)。

(1)、主引导记录的结构

“主引导记录”只有512个字节,放不了太多东西。它的主要作用是,告诉计算机到硬盘的哪一个位置去找操作系统。

主引导记录由三个部分组成

  • 第1-446字节:调用操作系统的机器码。
  • 第447-510字节:分区表(Partition table)。
  • 第511-512字节:主引导记录签名(0x55和0xAA)。

其中,第二部分”分区表”的作用,是将硬盘分成若干个区。

(2)、分区表

说明:对磁盘进行分区有很多好处。考虑到每个区可以安装不同的操作系统,“主引导记录”必须知道将控制权转交给哪个区。

分区表的长度只有64个字节,里面又分成四项,每项16个字节。所以,一个硬盘最多只能分四个“主分区”。

每个主分区的16个字节,由6个部分组成:

第1个字节:如果为0x80,就表示该主分区是激活分区,控制权要转交给这个分区。四个主分区里面只能有一个是激活的。

第2-4个字节:主分区第一个扇区的物理位置(柱面、扇区号等等)。

第5个字节:主分区类型。

第6-8个字节:主分区最后一个扇区的物理位置。

第9-12字节:该主分区第一个扇区的逻辑地址。

第13-16字节:主分区的扇区总数。

最后的四个字节(”主分区的扇区总数”),决定了这个主分区的长度。也就是说,一个主分区的扇区总数最多不超过2的32次方。

如果每个扇区为512个字节,就意味着单个分区最大不超过2TB。再考虑到扇区的逻辑地址也是32位,所以单个硬盘可利用的空间最大也不超过2TB。如果想使用更大的硬盘,只有2个方法:一是提高每个扇区的字节数,二是增加扇区总数。

3、启动磁盘

说明:等完成磁盘引导记录的操作后,计算机的控制权就要转交给硬盘的某个分区了。

(1)、卷引导记录

上面提到,磁盘的四个主分区里面,只有一个是激活的。计算机会读取激活分区的第一个扇区,叫做“卷引导记录”(Volume boot record,缩写为VBR)。

“卷引导记录”的主要作用是,告诉计算机,操作系统在这个分区里的位置。然后,计算机就会自动加载这里的操作系统文件。

(2)、扩展分区和逻辑分区

随着硬盘越来越大,四个主分区已经不够了,需要更多的分区。但是,分区表只有四项,因此规定有且仅有一个区可以被定义成“扩展分区”(Extended partition)。所谓”扩展分区”,就是指这个区里面又分成多个区。这种分区里面的分区,就叫做“逻辑分区”(logical partition)。

计算机先读取扩展分区的第一个扇区,叫做“扩展引导记录”(Extended boot record,缩写为EBR)。它里面也包含一张64字节的分区表,但是最多只有两项(也就是两个逻辑分区)。

计算机接着读取第二个逻辑分区的第一个扇区,再从里面的分区表中找到第三个逻辑分区的位置,以此类推,直到某个逻辑分区的分区表只包含它自身为止(即只有一个分区项)。因此,扩展分区可以包含无数个逻辑分区。

但是,似乎很少通过这种方式启动操作系统。如果操作系统确实安装在扩展分区,一般采用下一种方式启动。

(3)、启动管理器

说明:Linux环境中,目前最流行的启动管理器是Grub。

在使用启动管理器的情况下,计算机读取“主引导记录”前面446字节的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的“启动管理器”(boot loader),然后选择启动哪一个操作系统。

4、启动操作系统

说明:在完成引导记录和磁盘启动分区的读取后,计算机将控制权转交给操作系统,操作系统的内核首先被载入内存。

以Linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代。

然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。至此,完成Linux系统的启动过程。

二、基于UEFI启动

说明:提到UEFI启动,一般都会想到GPT,这里的GPT即GUID Partition Table,中文的意思是“全局唯一标识分区表”,是一个实体磁盘的分区表的结构布局的标准。而UEFI的全称是“统一可扩展固件接口”(即是Unified Extensible Firmware Interface)。现在很多电脑都支持UEFI,但还是没有彻底取代传统的BIOS引导方式。

uefi bios和legacy bios都是引导模式,uefi启动速度很快,一次可读取1M,而传统的legacy比较慢,一次只能读取64k。

1、UEFI初始化

计算机通电后,即开始完成cpu初始化->芯片初始化->主板初始化等硬件初始化一系列工作。

2、将系统内核加载到内存

在完成硬件初始化工作后,就开始将系统的内核加载到内存,同时开始启动运行。

3、启动systemd进程

这一步,就是将计算机的控制权交给systemd进程,由其完成系统的启动过程。

Linux系统开机启动过程详解

 

三、BIOS启动和UEFI启动的区别

Linux系统开机启动过程详解

 



Tags:Linux系统   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  Search: Linux系统  点击:(6)  评论:(0)  加入收藏
嵌入式Linux系统开发——系统移植概述
一、什么是嵌入式系统 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。 嵌入...【详细内容】
2024-01-11  Search: Linux系统  点击:(79)  评论:(0)  加入收藏
Linux系统开机启动过程详解
摘要:操作系统的启动过程差别不大,Window和Linux的启动都需要【通电】-【自检】-【登录】几个步骤。对Linux系统而言,更详细的启动流程为:通电-->BIOS-->主引导记录(MBR)-->grub引...【详细内容】
2023-12-28  Search: Linux系统  点击:(67)  评论:(0)  加入收藏
如何检查Linux系统的开放端口,保障网络安全
概述开放的网络端口是网络最简单的入口点。有时,可能会在从 Internet 外部可见的端口上运行不需要的服务。如果这些服务容易受到攻击,您的网络将持续受到攻击的威胁,因为每天都...【详细内容】
2023-12-18  Search: Linux系统  点击:(74)  评论:(0)  加入收藏
在Linux系统中实现容器化的大规模数据分析平台:Hadoop和Spark
在Linux系统中实现容器化的大规模数据分析平台,我们可以利用Hadoop和Spark这两个强大的开源工具。Hadoop是一个分布式计算框架,适用于处理大规模数据集。它提供了分布式文件系...【详细内容】
2023-12-15  Search: Linux系统  点击:(154)  评论:(0)  加入收藏
Linux系统设置每隔1小时运行指定命令
在Linux系统中,通常情况下使用crontab命令来设置定时任务,本文以每隔1个小时运行一条指令为例子,和大家一起讨论crontab的用法。具体的操作步骤: 打开终端。 输入命令 crontab -...【详细内容】
2023-12-14  Search: Linux系统  点击:(159)  评论:(0)  加入收藏
Linux系统下CPU性能问题分析案例
关于CPU使用率相关重要指标,我们经常在使用top、dstat、vmstat等工具看到,这里解读一下: user(通常缩写为us),代表用户态CPU时间。 nice(通常缩写为ni),代表低优先级用户态CPU时间,nic...【详细内容】
2023-12-06  Search: Linux系统  点击:(166)  评论:(0)  加入收藏
Linux系统中软链接和硬链接
硬链接是指在文件系统中创建一个新的文件名,该文件名指向同一个inode(即文件的实际数据块)。硬链接与原始文件具有相同的inode号,它们共享相同的数据块。当删除原始文件时,硬链接...【详细内容】
2023-11-15  Search: Linux系统  点击:(222)  评论:(0)  加入收藏
使用SELinux进行Linux系统安全加固
SELinux(Security-Enhanced Linux)是一种在Linux系统中实现强制访问控制(MAC)的安全机制,它能够对系统资源进行细粒度的访问控制,提高系统的安全性和防范能力。在进行Linux系统安...【详细内容】
2023-10-31  Search: Linux系统  点击:(336)  评论:(0)  加入收藏
在Linux系统中实现容器化运维监控平台:Prometheus和Grafana
Prometheus和Grafana是在Linux系统中广泛使用的容器化自动化运维监控平台。Prometheus是一款开源的监控和警报工具,而Grafana则是一个数据可视化工具。它们结合起来可以提供...【详细内容】
2023-10-11  Search: Linux系统  点击:(323)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(3)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(13)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(6)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(9)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(51)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(47)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(49)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(74)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(65)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(84)  评论:(0)  加入收藏
站内最新
站内热门
站内头条