为什么要玩UEFI/GPT?

应该说UEFI/GPT是有优点的,但实际情况是,除了品牌机预装系统外,几乎没有人使用这套东西,最大的问题是太麻烦太复杂了。我就是喜欢折腾,只要有可能尽量搞UEFI/GPT。下面是我最近在Arch Linux上折腾的经验和一些其他的总结,希望对您有帮助。

UEFI/GPT的优点

  1. 预装Windows的品牌机装GNU/Linux系统可以用UEFI/GPT实现,相对容易。
  2. 用了UEFI/GPT可以更新CPU微码(microcode)。

UEFI/GPT的缺点

  1. 不支持老硬件,不支持老软件和老系统。
  2. 装起来特别麻烦。
  3. 用了GPT后Windows 7的破解方法失效。

实战Arch Linux装UEFI/GPT

1
2
3
4
5
6
mkdir -p /tmp/u
sudo mount /dev/sdc2 /tmp/u/
sudo mount /dev/sdc1 /tmp/u/boot/efi
sudo arch-chroot /tmp/u
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --removable
grub-mkconfig -o /boot/grub/grub.cfg

注意这里--removable的使用很关键,它让引导文件安装为BOOT/BOOTX64.EFI。如果默认安装在GRUB/grubx64.efi很容易导致引导失败,因为系统里可能还存留老版本等等。

Arch Linux用UEFI/GPT一定要装dosfstools

否则你没法挂载ESP分区,因为ESP是FAT格式的。

ESP分区挂到哪里呢?

我用过两个不同的挂载点:

  1. /boot
  2. /boot/efi

我一直用2,这次想换成1,白花了5个小时折腾,这还是wiki推荐的挂载点 😭

我试着用通俗的语言解释一下1和2的区别。用1的话,UEFI的引导文件以及Linux内核都放到FAT格式的/boot分区,这样也可以正常引导系统,但系统启动后系统不能很好的访问这些文件,比如更新,因为/boot没挂载,内核文件不会跑到那个分区,而是在主分区新建内核,这样/boot里的还是老的内核,启动后系统就瘸腿了。

用1的好处似乎是可以用EFISTUB,我不知道这东东有什么用。sysytemd似乎有一些机制能保证用2的时候内核可以被更新,但会导致问题,所以我还是不用了。

UEFI/MBR是什么?

这种一种GNU/Linux系统支持的过渡配置,装起来容易。

UEFI/GPT能加速系统启动么?

似乎不能。