+++
title = "Linux之旅(五):BIOS-UEFI-MBR-GPT-GRUB"
date = 2023-07-24

[taxonomies]
tags = ["Linux"]
+++


前言 在计算机领域，系统引导和磁盘分区是至关重要的。本文将介绍BIOS与UEFI，MBR与GPT，以及它们之间的异同点。此外，我们还会讨论与这些概念密切相关的引导加载程序——GRUB。
<!-- more -->
## BIOS

> `BIOS（Basic Input Output System）`，直译成中文名称就是"`基本输入输出系统`"。它是一组固化到主板中一个ROM芯片上的程序，它可以从CMOS中读写系统设置的具体信息。此程序保存着计算机最重要的基本输入输出程序、开机后的自检程序和系统自启动程序。简单来说，BIOS只认识设备，不认识分区、不认识文件。

## UEFI

> UEFI（统一可扩展固件接口）是一个公开的规范，定义了操作系统和平台固件之间的软件接口。UEFI 是传统 PC BIOS 的继承者，是取代传统BIOS的，相比传统BIOS来说，它更易实现，容错和纠错特性也更强。  它将引导数据存储在 .efi 文件中，而不是固件中。你经常会在新款的主板中找到 UEFI 启动模式。UEFI 启动模式包含一个特殊的 EFI 分区，用于存储 .efi 文件并用于引导过程和引导加载程序。

> UEFI使用GPT的分区引导方案，支持更大的硬盘。由于省去了BIOS自检的过程，所以启动速度更快。传统BIOS主要支持MBR引导，UEFI则是取代传统BIOS，它加入了对新硬件的支持，其中就有支持2TB以上硬盘。

## MBR

> 全新硬盘在使用之前必须进行分区格式化，硬盘分区初始化的格式主要有两种，分别为`MBR`格式和`GPT`格式。MBR是传统的分区表类型，当一台电脑启动时，它会先启动主板上的BIOS系统，BIOS再从硬盘上读取MBR主引导记录，硬盘上的MBR运行后，就会启动操作系统，但最大的缺点则是不支持容量大于2T的硬盘。

## GPT

> 而GPT是另一种更先进的磁盘系统分区方式，它的出现弥补了MBR这个缺点，最大支持`18EB`的硬盘，是基于`UEFI`使用的磁盘分区架构。目前所有Windows系统均支持`MBR`，而`GPT`只有`64`位系统才能支持。`BIOS只支持MBR引导系统，而GPT仅可用UEFI引导系统`。正因为这样，现在主板大多采用BIOS集成UEFI，或UEFI集成BIOS，以此达到同时兼容MBR和GPT引导系统的目的。

## GRUB

> GRUB（GRand unified bootloader）,多操作系统启动程序。它允许用户可以在计算机内同时拥有多个操作系统，并在计算机启动时选择希望运行的操作系统。
>
> GRUB可用于选择操作系统分区上的不同内核，也可用于向这些内核传递启动参数。`它是一个多重操作系统启动管理器，用来引导不同系统`，如Windows、Linux。Linux常见的引导程序包括LILO、GRUB、GRUB2。

## Legacy

> 如果你遇到过刚制作的U盘启动盘无法启动，或者新买的固态硬盘做好系统后无法启动，那么大概率的问题就出现在BIOS的引导模式的选择上，是UEFI还是Legacy。legacy启动模式是指BIOS 固件用来初始化硬件设备的引导过程，Legacy启动模式包含一系列已安装的设备，这些设备在引导过程中计算机执行 POST （开机自检）测试时会被初始化。传统引导将检查所有连接设备的主引导记录 (MBR)，通常位于磁盘的第一个扇区。  
当它在设备中找不到引导加载程序时，Legacy会切换到列表中的下一个设备并不断重复此过程，直到找到引导加载程序，否则返回错误。

## 表格

### BIOS/UEFI

| BIOS                               | UEFI                                                            |
| ---------------------------------- | --------------------------------------------------------------- |
| 用于初始化计算机硬件并引导操作系统 | 在计算机启动时运行                                              |
| 具有较少功能和灵活性               | 具有更多功能和灵活性                                            |
|                                    | 支持更大的硬盘容量、更快的启动速度、更好的安全性和更多的扩展性v |
|                                    | 通常具有图形用户界面（GUI）                                     |


### MBR/GPT
| MBR                                       | GPT                                                                                |
| ----------------------------------------- | ---------------------------------------------------------------------------------- |
| 用于分区磁盘并存储分区布局信息            | 用于分区磁盘并存储分区布局信息                                                     |
| 支持最多4个主分区或3个主分区加1个扩展分区 | 支持最多4个主分区或3个主分区加1个扩展分区支持最多4个主分区或3个主分区加1个扩展分区 |
|                                           | 具有更好的数据完整性和可靠性，使用校验和检测数据损坏                               |
|                                           | UEFI需要GPT格式的磁盘才能引导                                                      |

### UEFI/Legacy
| UEFI 引导模式                                                                                    | Legacy引导模式                                                 |
| ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- |
| UEFI 提供了更好的用户界面                                                                        | Legacy引导模式是传统的且非常基本的                             |
| 使用 GPT 分区方案                                                                                | 使用 MBR 分区方案                                              |
| UEFI 提供更快的启动时间                                                                          | 相比UEFI，它的速度较慢                                         |
| 由于 UEFI 使用 GPT 分区方案，因此它可以支持多达 9 zB 的存储设备                                  | Legacy使用的 MBR 分区方案仅支持最多 2 TB 存储设备              |
| UEFI 以 32 位和 64 位运行，支持鼠标和触摸板                                                      | Legacy在仅支持键盘，仅 16 位模式下运行                         |
| 它允许安全启动，防止加载未经授权的应用程序它还可能阻碍双启动，因为它将操作系统（OS）视为应用程序 | 它不提供允许加载未经授权的应用程序的安全启动方法，未限制双启动 |
| 它具有更简单的更新过程                                                                           | 与UEFI相比，它更复杂                                           |

## 组合

- **BIOS+MBR**：

  这是最传统的，系统都会支持；唯一的缺点就是`不支持容量大于2T的硬盘`。

- **BIOS+GPT**：

  BIOS是可以使用GPT分区表的硬盘来作为数据盘的，但不能引导系统；若电脑同时带有容量小于2T的硬盘和容量大于2T的硬盘，`小于2T的可以用MBR分区表安装系统，而大于2T的可以使用GPT分区表来存放资料`。但系统须使用64位系统。

- **UEFI+MBR**：

  可以把UEFI设置成`Legacy模式`（传统模式）让其支持传统MBR启动，效果同`BIOS+MBR`；也可以建立FAT分区，放置UEFI启动文件来，可应用在U盘和移动硬盘上实现双模式启动。

- **UEFI+GPT**：

  如果要把大于2T的硬盘作为系统盘来安装系统的话，就必须`UEFI+GPT`。而且系统须使用64位系统，否则无法引导。但系统又不是传统在PE下安装后就能直接使用的，引导还得经过处理才行。

## 系统的启动过程

从按下计算机的开机按钮到用户开始使用计算机，涉及了多个步骤和组件，让我们一起详细了解整个过程：

**1. 电源启动**：
   - 用户按下计算机的开机按钮，电源开始供电，计算机硬件开始初始化。电源将电流传递到主板上的BIOS/UEFI芯片。

**2. BIOS/UEFI启动**：
   - BIOS/UEFI芯片接收到电源信号后，开始执行初始化过程。它首先进行自检（POST），检测主板、CPU、内存等硬件设备的工作状态，并在显示屏上输出相关信息。
   - BIOS/UEFI根据配置的启动顺序（通常为硬盘、光盘、USB等）搜索启动设备，并加载位于启动设备上的引导加载程序。

**3. 引导加载程序加载**：
   - 引导加载程序（如GRUB）被加载到内存中，它负责后续的操作系统加载过程。GRUB通常会显示启动菜单，列出可用的操作系统选项。
   - 用户可以在GRUB菜单中选择要启动的操作系统，或者等待默认选项启动。

**4. 操作系统加载**：
   - 一旦选择了启动选项，引导加载程序会加载操作系统的内核和初始化RAM磁盘（initramfs/initrd）。
   - 内核加载完成后，操作系统开始启动初始化过程，包括加载系统服务、挂载文件系统、启动用户界面等。

**5. 用户登录**：
   - 操作系统初始化完成后，显示登录界面（如果配置了图形用户界面），用户输入用户名和密码登录系统。
   - 如果登录成功，操作系统加载用户的桌面环境或命令行界面，用户开始使用计算机。

## 各种引导加载程序

| 特性               | GRUB（GRand Unified Bootloader） | LILO（Linux Loader）               | systemd-boot（前身为 gummiboot） | rEFInd（UEFI 引导管理器）           |
|--------------------|----------------------------------|-----------------------------------|----------------------------------|------------------------------------|
| **支持的系统类型** | BIOS 和 UEFI                     | 仅支持 BIOS 模式                  | 仅支持 UEFI                      | 仅支持 UEFI                        |
| **多系统引导支持** | ✅ 强大支持                      | ❌ 不支持多系统引导               | ✅ 支持（需手动配置）              | ✅ 自动检测操作系统                 |
| **图形界面支持**   | ✅ 支持（可自定义主题）          | ❌ 不支持                         | ❌ 不支持                         | ✅ 支持（可自定义主题）             |
| **配置方式**       | 配置文件（复杂）                 | 配置文件（简单）                  | 配置文件（简单）                  | 配置文件（简单）                   |
| **命令行支持**     | ✅ 支持（交互式命令行）          | ❌ 不支持                         | ❌ 不支持                         | ❌ 不支持                           |
| **文件系统支持**   | ✅ 支持多种文件系统              | ✅ 支持 ext2/ext3/ext4 等          | ✅ 支持 ext4、FAT 等               | ✅ 支持 ext4、FAT 等                |
| **安全启动支持**   | ✅ 支持（需配置）                 | ❌ 不支持                         | ✅ 支持（需配置）                  | ✅ 支持（需配置）                   |
| **安装复杂度**     | 中等（需配置）                   | 较低                              | 较低                              | 中等（需配置）                     |
| **适用场景**       | 多系统引导、复杂配置             | 简单系统引导                      | 简单系统引导                      | 多系统引导、美观界面               |

## 后记


- [聊聊BIOS、UEFI、MBR、GPT、GRUB……](https://segmentfault.com/a/1190000020850901)
