(ルート)がF2FSの場合、GRUBは暗号化されたパーティションにインストールできません。

(ルート)がF2FSの場合、GRUBは暗号化されたパーティションにインストールできません。

/boot以下のように、暗号化されたパーティションを使用して新しいArch Linuxインストールをセットアップしようとしています。https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#Encrypted_boot_partition_.28GRUB.29

3つのパーティションを作成しています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 Wikiによると([1][2])GRUBがサポートする他のファイルシステムと一緒に別のパーティションにインストールされている場合は、ルートにF2FSを使用できます。私の/bootパーティションはext2。それで、なぜインストールできないのですか?

助けてくれてありがとう非常に

答え1

/etc/fstabgenfstab回避策は、アイテムを追加せずに手動で実行する必要があるため、作成時に集中することです。/boot/boot/efi

その後、chrootESPだけでなく/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すべてのパーティションのエントリが正しく作成され、すべてがうまく機能します。

関連情報