我目前的 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
长话短说:
- 将所有内容复制
/boot
到 ESP - 将 ESP 安装到
/boot
- 重新生成
/boot/grub/grub.conf
通过grub-mkconfig
- 运行
grub-install
(主要是为了更新 EFI 启动) - 重新启动到新启动
- 清理旧启动 (
/boot
,EFI/arch
,efibootmgr
)
我最终成功地做了什么:
- 将 ESP 安装到...任何地方(我用过
/boot/efi
) - 将所有内容(特别是 initramfs、微代码、内核和
grub/
文件夹,尽管最后一个可能不是必需的)复制/boot
到 ESP - 卸载 ESP,然后重新安装
/boot
- 运行
grub-mkconfig
生成一个新的/boot/grub/grub.conf
那时,我想检查一切是否运行正常,所以我:
- 卸载 ESP 并将其重新安装到
/boot/efi
- 区分了
/boot/grub/grub.conf
和/boot/efi/grub/grub.conf
- 将块从一个复制
menuentry
到另一个,这样我就可以(希望)启动这两个选项 - 重新启动并尝试从 ESP 启动的新选项:它有效(意思是,IIUC,复制到 ESP 的文件可以启动系统)
然后我跳过了这个间隙并进行了切换:
- 将 ESP 安装到
/boot
- 编辑
/etc/fstab
以在启动时安装它(我实际上用来genfstab
生成适当的 fstab 行) - 运行
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
(前一个被命名为arch
,所以没有冲突) - 重新启动(请注意,我有一个来自旧 grub.conf 的菜单项,希望可以在旧“系统”上启动,以防万一)
最后,进行一些清理:
- 卸载 ESP 并删除其中的所有内容老的
/boot
(无论如何,ESP 都安装在这里,隐藏这些文件) - 删除我添加到 grub.conf 中的菜单项
- 使用以下命令删除 EFI 中旧的 GRUB 条目
efibootmgr
- 从 ESP 中删除旧的 GRUB 条目 (
/boot/EFI/arch/
)