La instalación de GRUB en una partición cifrada no funciona si (raíz) es F2FS

La instalación de GRUB en una partición cifrada no funciona si (raíz) es F2FS

Estoy intentando configurar una nueva instalación de Arch Linux con /bootuna partición cifrada, como se describe aquí:https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#Encrypted_boot_partition_.28GRUB.29

Estoy creando tres particiones con cgdisk:

/dev/sda1 - Tipo ESP ( ef00) Tamaño 100MiB
/dev/sda2 - Tipo Linux ( 8300) Tamaño 200MiB - para /boot(después del cifrado)
/dev/sda3 - Tipo Linux LVM ( 8e00) Tamaño 12GiB - para /(después del cifrado)

Luego sigo con estos 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

Recibo este error:

Instalación para la plataforma x86_64.
grub-install: error: no se pudo obtener la ruta canónica de '/boot/efi'.

Ya probado:

  • Instalación de los paquetes fuse2y mtools;

  • Volver a crear /boot/efiel directorio y volver /dev/sda1a montarlo, mientras se encuentra en el chrootentorno.


Cuando usasext4para la partición raíz, este último procedimiento funciona y GRUB se instala, e incluso arranca (y, curiosamente, no es necesario volver a montarlo, solo mkdir).

Pero para F2FS, no es suficiente, aunque logra cambiar el mensaje de error a:

Instalación para la plataforma x86_64.
grub-install: error: sistema de archivos desconocido.

Según The Arch Wiki ([1],[2]) debería ser posible usar F2FS para root, siempre que GRUB esté instalado en una partición separada con otro sistema de archivos que admita. Mi /bootpartición es ext2. Entonces, ¿por qué no se instala?

Aprecio tu ayudainmensamente.

Respuesta1

La solución es prestar atención al /etc/fstabmomento de su generación, ya que genfstabno agrega entradas para /booty /boot/efidebe hacerse a mano.

Después chroot, debemos volver a montar no solo el ESP, sino también la /bootpartición. Entonces grub-installfuncionará.

Actualizar:El montaje /booty el ESP realmente deberían realizarse DESPUÉS de montar el sistema de archivos raíz en /mnt, es decir

# 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

Es una cuestión de lógica. Si hacemos las cosas en ese orden, genfstabse generarán correctamente las entradas para todas las particiones y todo funcionará bien.

información relacionada