如果 (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解決方案是在生成時注意,因為genfstab並沒有添加 和 的條目/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將正確產生所有分區的條目,一切都會正常運作。

相關內容