暗号化されたパーティションにGRUBをインストールしても、(ルート)がF2FSの場合動作しない

暗号化されたパーティションにGRUBをインストールしても、(ルート)がF2FSの場合動作しない

ここで説明されているように、暗号化されたパーティションを使用して新しい Arch Linux インストールをセットアップしようとしています/boot: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' の正規パスを取得できませんでした。

すでに試しました:

  • fuse2およびパッケージをインストールしますmtools

  • 環境内でディレクトリを再作成し、そこに/boot/efi再マウントします。/dev/sda1chroot


使用する場合拡張子4ルート パーティションの場合、この最後の手順が機能し、GRUB がインストールされ、起動もします (奇妙なことに、再マウントは必要なく、 のみですmkdir)。

しかし、F2FS の場合、エラー メッセージを次のように変更することはできますが、それだけでは十分ではありません。

x86_64 プラットフォーム用にインストールしています。
grub-install: エラー: 不明なファイルシステムです。

The Arch Wikiによると([1][2]) GRUB が、サポートする別のファイルシステムを持つ別のパーティションにインストールされている場合は、ルートに F2FS を使用できるはずです。私の/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すべてのパーティションのエントリが正しく生成され、すべてが正常に動作します。

関連情報