传统 BIOS 和 UEFI 之间的区别

bur*_*bas 8 bios mbr uefi gpt

为什么MBRGPT分别与Legacy BIOSUEFI相关联?

Byt*_*der 23

较旧的BIOS(基本输入/输出系统)及其现代替代品UEFI(统一可扩展固件接口)都可以被视为计算机的“固件”。

它们直接存储在主板上,是计算机开机时运行的第一个软件。他们的主要工作是初始化所有连接的硬件并从硬盘加载实际操作系统(例如 Ubuntu 或 Windows)的引导加载程序(例如 GRUB),然后启动操作系统。

大多数 UEFI 系统还支持 CSM(兼容性支持模块)引导,它模拟 Legacy BIOS 界面。

传统 BIOS 引导简单而愚蠢地从磁盘上的固定地址(主引导记录的一部分)读取和执行代码,而 UEFI 引导会搜索 EFI 系统分区中的 EFI 引导文件并执行其中之一。


较旧的MBR(主引导记录)和较新的GPT(GUID 分区表;GUID = 全局唯一标识符)是分区表格式。

您的硬盘分区为这两种格式之一。旧的 MBR 格式只允许整个磁盘上有 4 个主分区(尽管其中一个可以用作扩展分区并包含许多逻辑卷),而 GPT 没有这个限制,也支持更大的磁盘。

GPT 分区磁盘还可能包含带有引导代码的混合 MBR,能够加载 EFI 文件,以支持 UEFI 和传统 BIOS 引导模式。


那么为什么 BIOS 和 MBR 相互关联,以及 UEFI 与 GPT 相关联呢?

好吧,除了 BIOS/MBR 是当今现代 UEFI/GPT 的祖先之外,它们通常也一起使用。某些操作系统(如 Windows)甚至只支持在 BIOS 模式下启动 MBR 磁盘和在 UEFI 模式下启动 GPT 磁盘。带有例如 GRUB 的 Linux 系统通常不会以任何一种方式混合它们。


Win*_*nix 6

传统 (CSM) 引导与 UEFI 引导

超级用户在 2012 年就 OP 的问题发表了一个高度赞成的帖子,许多人会觉得这很有帮助。

CSM(传统)和 UEFI(通用可扩展固件接口)是您在 BIOS(基本输入输出系统)中选择的互斥引导选项。BIOS 不仅仅适用于传统 (CSM) 引导:

  • 磁盘引导格式:传统 (CSM) 与 UEFI
  • 磁盘启动顺序:硬盘、SSD、USB、NIC(网络接口卡)
  • 磁盘低级操作:RAID vs AHCI
  • USB 端口:输入时唤醒,系统关闭时供电等。
  • 多显卡:启用/禁用 Intel 或 nVidia
  • 系统日期和时间存储在 RTC(实时时钟)上
  • 可选的硬件 POST(开机自检)检查
  • 许多其他 BIOS 选项因计算机而异

Byte 和 Ravery 已经在这里发布了很好的答案,所以我只想总结一下:

  • Legacy (CSM) 和 UEFI 是从存储磁盘(如今通常采用 SSD 的形式)启动的不同方式。
  • CSM 使用 512 字节特定格式的 MBR(主引导记录)来引导操作系统。
  • UEFI 使用大分区(通常为 100 MB)中的文件来引导操作系统。通常,它们仍然需要存在 MBR。
  • MBR和GPT是磁盘分区格式化的不同规范。您可以在 MBR 格式的磁盘上启动 UEFI。您可以在 GPT 格式的磁盘上进行 MBR 启动(在非 Windows 环境中)。
  • MBR(磁盘的前 512 个字节)通常对用户隐藏。
  • EFI分区可以方便的查看,如下图

重要的是要注意 MBR 可以指磁盘引导方法或磁盘分区格式的歧义。

还需要注意的是,UEFI 通常与 GPT 磁盘格式相关联,但 MBR 启动可以使用 GPT 磁盘格式。

查看 EFI 分区

使用lsblk你可以看到 EFI 分区和文件:

$ lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MODEL
NAME        FSTYPE LABEL            MOUNTPOINT   SIZE MODEL
sda                                            931.5G HGST HTS721010A9
??sda4      ntfs   WINRETOOLS                    450M 
??sda2                                           128M 
??sda5      ntfs   Image                        11.4G 
??sda3      ntfs   HGST_Win10       /mnt/d       919G 
??sda1      vfat   ESP                           500M 
nvme0n1                                          477G Samsung SSD 960 PRO 512GB           
??nvme0n1p5 ext4   NVMe_Ubuntu_16.0 /           44.6G 
??nvme0n1p3                                       16M 
??nvme0n1p1 ntfs                                 450M 
??nvme0n1p6 swap   Linux Swap       [SWAP]       7.9G 
??nvme0n1p4 ntfs   NVMe_Win10       /mnt/c     414.9G 
??nvme0n1p2 vfat                    /boot/efi     99M 
??nvme0n1p7 ntfs   Shared_WSL+Linux /mnt/e         9G 
Run Code Online (Sandbox Code Playgroud)

/boot/efi使用ls命令可以看到很多文件。要查看 99MB 分区内所有文件的大小,请使用:

$ du -hs /boot/efi
35M /boot/efi
Run Code Online (Sandbox Code Playgroud)

gdisk 信息

在研究这个答案时,我找到了一个指向gdisk我运行的命令的链接,当我再次启动到 Windows 时可能会后悔。这是在这里,所以如果结果证明是 Windows 双引导的错误,您不要重复此操作:

sudo gdisk -l /dev/sda
[sudo] password for rick:          
GPT fdisk (gdisk) version 1.0.1

The protective MBR's 0xEE partition is oversized! Auto-repairing.

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 8BEC7AEB-4576-42B0-8A8A-D40779A80126
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 3437 sectors (1.7 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1026047   500.0 MiB   EF00  EFI system partition
   2         1026048         1288191   128.0 MiB   0C01  Microsoft reserved ...
   3         1288192      1928626175   919.0 GiB   0700  Basic data partition
   4      1928626176      1929547775   450.0 MiB   2700  
   5      1929547776      1953523711   11.4 GiB    2700  
Run Code Online (Sandbox Code Playgroud)

我将重新启动进入Windows 10,看看Linux的gdisk有修复Windows的硬盘驱动器的任何后果D:这是/dev/sda在我的Linux安装。我不担心,因为它是我还没有使用过的原始硬盘,但是如果上面有数据,你应该小心。我将在重新启动和测试后更新此部分。