在笔记本电脑中交换硬盘时,为什么必须修复启动?

我为联想Thinkpad W530买了一个新的SSD(我不确定是否有相关软件)。 我在新的SSD上以仅EFI模式安装了15.04,并进行了手动分区( /efi//home分区,bootloader安装到/ efi)。

到现在为止还挺好。 然后我尝试插入旧驱动器,因为我想复制外部驱动器上的一些文件,然后复制一个新的ssd驱动器。 令我沮丧的是,它拒绝启动。 我不得不安装修复启动,解决了这个问题。 然后我插入了我的新SSD,它再次拒绝启动。 再次,repair-boot解决了它。 到底是怎么回事? 有什么东西写在笔记本电脑主板上的某些电路上吗?

差不多。 EFI模式启动涉及两件事:

  • 引导加载程序文件写入硬盘上的EFI系统分区(ESP) 。
  • 指向存储在主板上NVRAM中的基于ESP的文件的指针。

目的是您可以根据需要安装任意数量的引导加载程序,并提供计算机应该尝试它们的顺序。 用户还应该能够使用计算机的内置启动管理器覆盖该订单。 原则上,这应该大大简化多引导配置。

不幸的是,许多计算机删除指向计算机启动时不可用的设备的NVRAM条目。 因此,当您交换磁盘时,您可能会失去从它们启动的能力。 恕我直言,这是EFI的设计缺陷。

幸运的是,有一个相对简单的解决方法,但它需要一些远见来实现:除了存储的引导加载程序位置,还存在一个特殊的位置: EFI\BOOT\boot{arch}.efi ,其中{arch}是架构代码- 对于x86-64(AMD64)系统,通常为x64 。 如果没有其他启动项,则尝试此位置。 它通常用于可移动媒体,但大多数EFI也会将其用作硬盘的后备。 因此,如果将GRUB或其他一些有效的引导加载程序复制到ESP上的EFI\BOOT\bootx64.efi (通常是Ubuntu中的/boot/efi/EFI/BOOT/bootx64.efi ),即使EFI,磁盘仍将保持可引导状态引导条目已删除。 请注意,您可能还需要复制引导加载程序配置和支持文件。

FWIW,Fedora有一个名为fallback.efi的启动加载程序,用于恢复已删除的NVRAM条目。 我没有深入研究它,但将它放在EFI\BOOT\bootx64.efi位置也应该解决这个问题。 最后我听说,一些(损坏的)EFI导致该文件在每次启动时运行,结果是启动条目数量不断增加。 这个错误现在可能已经修复,但我最近没有检查过它。