Установка GRUB на зашифрованный раздел не работает, если (root) — F2FS

Установка GRUB на зашифрованный раздел не работает, если (root) — F2FS

Я пытаюсь настроить новую установку Arch Linux с зашифрованным /bootразделом, как описано здесь:https://wiki.archlinux.org/index.php/Dm-crypt/Шифрование_всей_системы#Зашифрованный_загрузочный_раздел_.28GRUB.29

Я создаю три раздела с cgdisk:

/dev/sda1 - Тип ESP ( ef00) Размер 100 МБ
/dev/sda2 - Тип Linux ( 8300) Размер 200 МБ - для /boot(после шифрования)
/dev/sda3 - Тип Linux LVM ( 8e00) Размер 12 Гб - для /(после шифрования)

Затем я выполняю следующие команды:

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/sda1в него, находясь в chrootсреде.


Когда используешьext4для корневого раздела эта последняя процедура работает, и GRUB устанавливается и даже загружается (и как ни странно, повторное монтирование не требуется, только mkdir).

Но для F2FS этого недостаточно, хотя ему и удается изменить сообщение об ошибке на:

Установка для платформы x86_64.
grub-install: ошибка: неизвестная файловая система.

Согласно The Arch Wiki ([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то правильно сгенерируем записи для всех разделов и все будет работать просто отлично.

Связанный контент