将 /boot 移动到 ESP(当前为 /boot/efi)

将 /boot 移动到 ESP(当前为 /boot/efi)

我目前的 ESP 分区位于/boot/efi(实际上,它甚至没有安装在那里,/etc/fstab根本没有条目;我几年前安装了我的系统,不记得为什么要这样设置,但到目前为止它工作正常),并且想要改为在/boot。我目前正在使用 GRUB 2 作为我的引导加载程序,但我真的不知道它是如何工作的(同样,我几年前安装了它,从那以后再也没有碰过它)。这就是 Arch Linux。

我需要做什么才能实现这一点?

将所有内容复制/boot到 ESP,然后添加一个条目以/etc/fstab将 ESP 安装为,但我怀疑现在 EFI 位于而不是/boot,某些配置文件中可能有需要更改的路径。/boot/EFI/boot/efi/EFI

当前内容/boot

  • 幼虫/
  • initramfs-linux.img
  • initramfs-linx-fallback.img
  • 英特尔ucode.img
  • vmlinuz-linux

ESP 内容:

  • 电喷
      • grubx64.efi
      • fwupdx64.efi
      • 固件/
    • 戴尔/Bios/恢复/

语境:我想转向全盘加密(在 LUKS 2 上使用 LVM;目前,我根本没有加密,也没有//home,为此,我需要将内核和 initramfs 放在未加密的分区上,以便 GRUB 加载(纠正我)如果我错了)。我认为最简单的方法就是简单地将其放在 ESP 上,从而使 ESP/boot而不是/boot/efi.

欢迎提出替代方案的建议(请提供优点和缺点)。

答案1

长话短说:

  1. 将所有内容复制/boot到 ESP
  2. 将 ESP 安装到/boot
  3. 重新生成/boot/grub/grub.conf通过grub-mkconfig
  4. 运行grub-install(主要是为了更新 EFI 启动)
  5. 重新启动到新启动
  6. 清理旧启动 ( /boot, EFI/arch, efibootmgr)

我最终成功地做了什么:

  1. 将 ESP 安装到...任何地方(我用过/boot/efi
  2. 将所有内容(特别是 initramfs、微代码、内核和grub/文件夹,尽管最后一个可能不是必需的)复制/boot到 ESP
  3. 卸载 ESP,然后重新安装/boot
  4. 运行grub-mkconfig生成一个新的/boot/grub/grub.conf

那时,我想检查一切是否运行正常,所以我:

  1. 卸载 ESP 并将其重新安装到/boot/efi
  2. 区分了/boot/grub/grub.conf/boot/efi/grub/grub.conf
  3. 将块从一个复制menuentry到另一个,这样我就可以(希望)启动这两个选项
  4. 重新启动并尝试从 ESP 启动的新选项:它有效(意思是,IIUC,复制到 ESP 的文件可以启动系统)

然后我跳过了这个间隙并进行了切换:

  1. 将 ESP 安装到/boot
  2. 编辑/etc/fstab以在启动时安装它(我实际上用来genfstab生成适当的 fstab 行)
  3. 运行grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB(前一个被命名为arch,所以没有冲突)
  4. 重新启动(请注意,我有一个来自旧 grub.conf 的菜单项,希望可以在旧“系统”上启动,以防万一)

最后,进行一些清理:

  1. 卸载 ESP 并删除其中的所有内容老的 /boot(无论如何,ESP 都安装在这里,隐藏这些文件)
  2. 删除我添加到 grub.conf 中的菜单项
  3. 使用以下命令删除 EFI 中旧的 GRUB 条目efibootmgr
  4. 从 ESP 中删除旧的 GRUB 条目 ( /boot/EFI/arch/)

相关内容