メインコンテンツへスキップ
  1. ノート/
  2. システム底层/

MBR と GPT パーティションの簡単なまとめ

·1480 文字·3 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml
この記事は中国語版をもとにした日本語版メモです。コマンド、コード、数式、画像リンクは原文の意味を壊さないように保持し、説明文と見出しを日本語向けに整理しています。

boot 方式和パーティション方案的最佳配合
#

  1. uefi+gpt
  2. bios+mbr

BIOS+MBR
#

MBR (主引导记录)的整体详细结构简单紹介つまり:主引导コード+パーティション表+post-mbr gap

单纯靠 主引导コード 无法完整引导システム,そのため要有 post-mbr gap (MBR 与第一个磁盘パーティション之间的间隙)来辅助引导システム,できます说是一个过渡用的。

  • 第一阶段つまり主引导コード,主要作用つまり定位和加载下一阶段的引导
  • 第 1.5 阶段つまり(post-mbr gap 做的)主要作用つまり理解存储阶段 2 引导加载程序的ファイルシステム(たとえば ext 4、NTFS 等)所需的基本驱动程序或コード, つまり可能也有一部分加载程序在ファイルシステム(grub additional code)中,这样就できます读取ファイル (一些加载程序ファイル从而辅助 boot)
  • 第 2 阶段つまり引导加载程序了(bootloader boot manager)

到此,基本就できます引导完システム了,その後操作システム就加载在メモリ中了,控制权就交给システム内核了

UEFI+GPT
#

この基本就没有什么,就主要在パーティション时,有个 ESP パーティション 就できます了,この引导程序(bootloader boot manager)就存储在 ESP パーティション

一些 linux 中的コマンド:

  1. 下载設定ファイル
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH  
  1. 生成設定ファイル并放置于/boot パーティション(この ESP パーティション)
grub-mkconfig -o /boot/grub/grub.cfg 
  1. 有多システム的记得下载 os-prober, 并 vim /etc/default/grub 追加 GRUB_DISABLE_OS_PROBER=false 这一行

:::tips **注意:**这里只要是将提前装好システム并使用上述コマンド生成了grub的,你将このディスク换到另一个机子上来実行OS的话。这是你要 重新用live-usb这些启动重新再新机子上重新使用上述コマンド来生成grub,否则无法启动システム :::

BIOS+GPT
#

まず声明,这种情况,你要追加一个 1 M-2 M 的 BIOS パーティション才行

理由
#

gpt 磁盘本身第一个扇区(磁盘的前 512 个字节)つまり一个 protective mbr パーティション,这是为了向只能 BIOS 引导的旧机子兼容而产生的。

讲述 protective mbr 的文章。大致重要内容以下:

大概内容说白了つまり为了兼容和保护 gpt 磁盘

==省流: つまりこの BIOS boot パーティション相当于 mbr 的 post-mbr gap 用来辅助 bootloader 的加载的==

第 1 阶段引导加载程序加载 BIOS 引导パーティション
#

  • 由于システム使用的是 GPT パーティション方案,そのため不存在 后 MBR 间隙(MBR 和第一个パーティション之间的空间),MBR システム通常会使用该间隙来存储其他引导加载程序コード(如 GRUB Stage 1.5)。
  • 相反,在磁盘上作成了一个专用的 BIOS 引导パーティション(通常大小为 1-2 MB)。此パーティション不包含ファイルシステム,也不用于存储常规ファイル - 它仅用于保存 GRUB Stage 1.5
  • 来自保护性 MBR 的 第 1 阶段コード定位 BIOS 引导パーティション并从中加载 第 1.5 阶段引导加载程序コード。

GRUB Stage 1.5 处理ファイルシステム访问
#

  • Stage 1.5 是至关重要的一步,なぜなら它包含 GRUB 理解磁盘ファイルシステム(たとえば ext 4、Btrfs 等)所需的驱动程序和コード。
  • 加载 BIOS 启动パーティション后,Stage 1.5 现在できます读取磁盘中的ファイル,たとえば GRUB 設定和Stage 2 引导加载程序コード,这些コード存储在 /boot/grub/ 中。

Stage 2 引导加载程序从 /boot/grub 加载
#

  • Stage 1.5 加载后,它会找到Stage 2 引导加载程序,这些コード存储在其中一个パーティション上的 /boot/grub/ ディレクトリ中。
  • Stage 2 是功能齐全的 GRUB 引导加载程序。它:
  • もし您インストール了多个操作システム(双启动设置),则显示 GRUB 启动菜单
  • 允许您选择要启动的操作システム或内核。
  • 将所选操作システム的 内核 加载到メモリ中。

関連記事