将引导加载程序移动或删除第二个驱动器上的EFI分区

我在这里是新人,所以如果我的问题不正确,请提前谅解。

我有一个双启动系统,使用两个不同的硬盘。 Windows预装在第一块硬盘上(500 Gb),然后我按照这个讨论中的答案Dual Booting win 10 and Ubuntu 18.04 on two separate physical ssds 在第二块1 Tb硬盘上安装了Ubuntu 20.04(我觉得这个讨论非常有用和清晰)。 两个硬盘都是SSD。系统采用完全UEFI模式。 由于我想要完全隔离这两个不同的操作系统,我将第二块硬盘配置如下:

  • 650 Mb EFI分区 (sdb1)
  • 20 Gb Ext4 @ / (sdb2)
  • 10 Gb Swap (sdb3)
  • 剩余的空间 @ /home (sdb4)
在Ubuntu安装过程中,我没有拔掉第一块硬盘(其中安装了Windows),而且我非常愚蠢地跳过了避免将Ubuntu引导加载程序安装到第一块硬盘的“解决方法”步骤(正如我之前在讨论中所读到的,这种情况被称为一个错误)。 因此,即使我在“用于引导加载程序安装的设备”菜单中选择了“sdb1”分区(刚刚创建的),可能发生了那个错误,或者简单地忽略了我的选择。 现在我有两个问题,对我来说,它们代表了恢复情况的两种替代方式:
1 - 我能把Ubuntu引导加载程序从第一块硬盘移动到第二块硬盘的EFI分区吗?如果可以,我该如何操作?这样我希望将两个操作系统隔离开来。
如果不行,第二个问题是:
2 - 既然Ubuntu引导加载程序现在安装在第一块硬盘的EFI分区上,我可以删除在安装过程中创建的第二块硬盘上的EFI分区吗?实际上,我发现这个分区是空的、未挂载的,基本上没有被使用。

我认为1和2都有可能。然而,我不确定。1似乎特别困难。无论如何,你应该备份所有的东西。 - user68186
2个回答

面对与Ubuntu 18.04相同的问题,我按照PrakashS的答案进行操作,确保新的EFI分区在安装grub之前被挂载到/boot/efi目录下。
首先,我使用GParted在Ubuntu硬盘上创建了一个新的fat32分区,并设置了boot标志。(当检查boot时,GParted会自动添加esp标志。)
下面的说明中,我使用sdb1作为新的EFI分区的设备名称,以匹配你问题中的设备名称。
  1. 找到sdb1的UUID:
    sudo blkid | grep /dev/sdb1

  2. 在/etc/fstab中,用sdb1的UUID替换/boot/efi条目的UUID:
    sudo nano /etc/fstab

    Ctrl+O然后按Return保存。按Ctrl+X退出。

  3. 为了使更改生效,卸载Windows EFI并将Ubuntu EFI挂载到/boot/efi:
    sudo umount /boot/efi && sudo mount /boot/efi

  4. 确认/boot/efi下挂载的是sdb1:
    lsblk | grep /boot/efi

  5. 在sdb上安装grub(不带分区号):
    sudo grub-install /dev/sdb

  6. 生成initramfs镜像:
    sudo update-initramfs -u -k all

  7. 生成grub2配置文件:
    sudo update-grub

  8. 重新启动。

  9. 确认/boot/efi下仍然挂载的是sdb1:
    lsblk | grep /boot/efi


你真是个救命稻草!效果棒极了。 - Omid
这是一个清晰准确的答案。我在Ubuntu 21.10上尝试过了。 - Tim Richardson
在Kubuntu 20.04上工作 :) - OverShifted
救命稻草!在Ubuntu 22.04 LTS上运行良好。 - R. Zhu

按照以下步骤移动引导加载程序:
  1. 使用sudo blkid找到/dev/sdb1的UUID(复制它)
  2. 将/etc/fstab中boot/efi条目的UUID更改为sdb1的UUID
  3. sudo grub-install /dev/sdb
  4. sudo update-initramfs -u -k all
  5. sudo update-grub
  6. 重新启动

使用lsblk检查/dev/sdb1是否已挂载在/boot/efi。


1我发现系统在没有重启之前无法正确更新新的UUID。通常情况下,你可以运行sudo mount -a重新挂载fstab并使用新的挂载点。你需要确保它安装到sdb的ESP上。 - oldfred
@mook765 所以在我的情况下,解决方案可能是:1 - sudo umount /dev/sda2 2 - sudo mount /dev/sdb1 /boot/efi 3 - sudo grub-install 4 - 重新启动这些是我需要遵循的步骤吗?谢谢 - holdtheline
在回答之前,我用备用安装进行了确认,使用USB驱动器创建了ESP。(通过相同的步骤成功还原) - PrakashS