如果 (root) 是 F2FS,则无法将 GRUB 安装到加密分区

如果 (root) 是 F2FS,则无法将 GRUB 安装到加密分区

我正在尝试使用加密分区设置新的 Arch Linux 安装/boot,如下所述:https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#Encrypted_boot_partition_.28GRUB.29

我正在创建三个分区cgdisk

/dev/sda1 - 类型 ESP ( ef00) 大小 100MiB
/dev/sda2 - 类型 Linux ( 8300) 大小 200MiB - 用于/boot(加密后)
/dev/sda3 - 类型 Linux LVM ( 8e00) 大小 12GiB - 用于/(加密后)

然后我按照以下命令操作:

mkfs.fat -F32 /dev/sda1

cryptsetup luksFormat /dev/sda2
cryptsetup open /dev/sda2 cryptoboot
mkfs.ext2 /dev/mapper/cryptoboot
mkdir /mnt/boot
mount /dev/mapper/cryptoboot /mnt/boot

mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

cryptsetup luksFormat /dev/sda3
cryptsetup open /dev/sda3 cryptosystem
mkfs.f2fs /dev/mapper/cryptosystem
mount /dev/mapper/cryptosystem /mnt

# edit "/etc/pacman.d/mirrorlist" as needed

pacstrap /mnt base grub-efi-x86_64 efibootmgr dosfstools f2fs-tools

genfstab -U /mnt >> /mnt/etc/fstab

arch-chroot /mnt

# remember to configure time, locale, language and hostname

# edit "/etc/mkinitcpio.conf"
# HOOKS="base udev autodetect modconf block keymap encrypt lvm2 filesystems keyboard fsck"

mkinitcpio -p linux

# edit "/etc/default/grub"
# GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:lvm"
# GRUB_ENABLE_CRYPTODISK=y

grub-mkconfig -o /boot/grub/grub.cfg

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck

我收到此错误:

针对 x86_64 平台安装。
grub-install:错误:无法获取“/boot/efi”的规范路径。

已经尝试过:

  • 安装fuse2mtools软件包;

  • 在环境中重新创建/boot/efi目录并重新安装到该目录。/dev/sda1chroot


使用时外部4对于根分区,最后一个过程有效并且 GRUB 安装 - 甚至引导(奇怪的是,不需要重新安装mkdir)。

但对于 F2FS 来说,这还不够,尽管它设法将错误消息更改为:

针对 x86_64 平台安装。
grub 安装:错误:未知的文件系统。

根据 Arch 维基 ([1],[2]) 应该可以将 F2FS 用于 root,前提是 GRUB 安装在具有其支持的另一个文件系统的单独分区中。我的/boot分区是ext2。那么,为什么它无法安装?

感谢你的帮助非常

答案1

/etc/fstab解决方案是在生成时关注 and ,因为andgenfstab不会添加条目,并且必须手动完成。/boot/boot/efi

之后chroot,我们不仅要重新挂载 ESP,还要重新挂载/boot分区。然后grub-install就可以工作了。

更新:挂载/boot和 ESP 确实应该在将根文件系统挂载到 后完成/mnt,即

# format the ESP
mkfs.fat -F32 /dev/sda1

# set up LUKS for the boot partition
cryptsetup luksFormat /dev/sda2
cryptsetup open /dev/sda2 cryptoboot
mkfs.ext2 /dev/mapper/cryptoboot

# same for the root partition
cryptsetup luksFormat /dev/sda3
cryptsetup open /dev/sda3 cryptosystem
mkfs.f2fs /dev/mapper/cryptosystem

# mount root, and only then, mount /boot and the ESP, in that order
mount /dev/mapper/cryptosystem /mnt

mkdir /mnt/boot
mount /dev/mapper/cryptoboot /mnt/boot

mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

# edit "/etc/pacman.d/mirrorlist", then continue with pacstrap etc

这是一个逻辑问题。如果我们按照这个顺序做事,genfstab将正确生成所有分区的条目,一切都会正常工作。

相关内容