之前关于安装 Arch 的文章提到了 Legacy BIOS 和 UEFI 引导有很大区别,然而当时我也不很懂就一带而过了。之后还是有同学在安装各种系统时在引导上有很多问题,所以这次查阅了一些资料并且给出一些建议。

基本介绍

传统的 BIOS (Basic Input/Output System) 和 UEFI (Unified Extensible Firmware Interface) 都可以看做是电脑的固件,他们的工作都是在电脑启动后初始化所有连接的硬件设备,之后从硬盘中运行引导程序。

这里就要说一下MBR (Master Boot Record) 和GPT (GUID Partition Table) 的区别了,这两个都是硬盘的分区方式。MBR 固定是硬盘最开始的512字节的区域,这部分包含了引导和分区表。而MBR分区方式最多只允许4个主分区,其中可以有一个是逻辑分区。而GPT则不限制分区数量,而且分区都是主分区。

Legacy BIOS会执行MBR区域的程序。而UEFI可以在GPT上寻找ESP (EFI system partition)来运行其中的程序。

一些问题

GPT是兼容MBR的,因此及时是GPT分区也可以通过MBR引导启动或者往MBR区域写入引导程序。所以在安装时你可以不管是GPT分的区还是MBR分区都直接以传统方式安装GRUB。如果grub-install发现你是GPT分区那么会自动把GRUB安装到boot分区,并且还可以在MBR分区写入引导,引导执行boot分区的grub程序。

包含Windows的双系统下不能同时使用GPT和MBR,这是Windows的强制限制,使用只能使用GPT+UEFI启动或者MBR+BIOS启动。所以如果你先安装了Windows,并且之后要安装其他系统的话就必须要注意在分区时不能够改变这分区方式,并且如果是GPT的话,不能改变ESP分区。这是在存在Windows时安装其他系统的前提条件,但是如果你不知道系统的安装程序做了什么的话你可以也会无法引导。可以在系统安装好之后再在Windows的引导程序中加入其他系统的选项,也可以在GRUB中加入启动Windows的选项。如果是GPT分区的话通常还可以在boot界面选择哪个系统启动。

怎么看现在是MBR分区还是GPT分区?

Windows 下打开磁盘管理,右键一个磁盘选择“属性”,在“卷”标签下即可看到。其他系统使用gdisk -l即可查看。

应该选择BIOS还是UEFI?

首先要决定以那种方式来分区,这里ArchLinux的wiki给出了一个简单的参考

一旦采取MBR分区,那么只能选择BIOS启动。如果GPT分区,并且ESP设置正确,那么可以选择使用UEFI启动。

参考

GRUB - ArchLinux
Partitioning - ArchWiki
BIOS - Wikipedia
Unified Extensible Firmware Interface - Wikipedia
Master boot record - Wikipedia
GUID Partition Table - Wikipedia
Difference between Legacy BIOS and UEFI - Ask Ubuntu