Instalar o GRUB na partição criptografada não funciona se (root) for F2FS

Instalar o GRUB na partição criptografada não funciona se (root) for F2FS

Estou tentando configurar uma nova instalação do Arch Linux com /bootpartição criptografada, conforme descrito aqui:https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#Encrypted_boot_partition_.28GRUB.29

Estou criando três partições com cgdisk:

/dev/sda1 - Tipo ESP ( ef00) Tamanho 100MiB
/dev/sda2 - Tipo Linux ( 8300) Tamanho 200MiB - para /boot(após criptografia)
/dev/sda3 - Tipo Linux LVM ( 8e00) Tamanho 12GiB - para /(após criptografia)

Então estou seguindo com estes comandos:

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

Estou recebendo este erro:

Instalando para a plataforma x86_64.
grub-install: erro: falha ao obter o caminho canônico de '/boot/efi'.

Já tentei:

  • Instalando os pacotes fuse2e mtools;

  • Recriando /boot/efio diretório e remontando- /dev/sda1o, enquanto estiver no chrootambiente.


Ao usarext4para a partição raiz, este último procedimento funciona e o GRUB é instalado - e até inicializado (e por incrível que pareça, a remontagem não é necessária, apenas mkdir).

Mas para o F2FS não é suficiente, embora consiga alterar a mensagem de erro para:

Instalando para a plataforma x86_64.
grub-install: erro: sistema de arquivos desconhecido.

De acordo com o Arch Wiki ([1],[2]) deve ser possível usar F2FS para root, desde que o GRUB seja instalado em uma partição separada com outro sistema de arquivos compatível. Minha /bootpartição é ext2. Então, por que ele não instala?

Agradeço sua ajudaimensamente.

Responder1

A solução é prestar atenção no /etc/fstabmomento da sua geração, pois genfstabnão adiciona entradas para /boote /boot/efideve ser feito manualmente.

Depois chroot, devemos remontar não só o ESP, mas também a /bootpartição. Então grub-installfuncionará.

Atualizar:A montagem /boote o ESP devem realmente ser feitos APÓS a montagem do sistema de arquivos raiz /mnt, ou seja

# 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

É uma questão de lógica. Se fizermos as coisas nessa ordem, genfstabgeraremos entradas corretamente para todas as partições e tudo funcionará perfeitamente.

informação relacionada