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

Я пытаюсь установить новую установку Arch Linux с зашифрованным разделом / boot , как описано здесь: https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#Encrypted_boot_partition_.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: error: не удалось получить канонический путь к '/ boot / efi'.

Уже пробовали:

  • Установка пакетов fuse2 и mtools ;

  • Повторное создание каталога / boot / efi и повторное монтирование / dev / sda1 , а в среде chroot .


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

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

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

Согласно Arch Wiki ([1], [2]), должна быть возможность использовать F2FS для root, при условии, что GRUB установлен в отдельный раздел с другой файловой системой, которую он поддерживает. Мой раздел / boot - это ext2 . Итак, почему он не устанавливается?

Благодарю за вашу помощь безмерно .

0
03.07.2019, 14:03
1 ответ

Решение состоит в том, чтобы обратить внимание на /etc/fstab при его создании, так как genfstab не добавляет записи для /boot и . ]/boot/efi и это нужно делать вручную.

После chroot мы должны перемонтировать не только ESP, но и раздел /boot. Тогда grub-install будет работать.

Update: Монтирование /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 будет правильно генерировать записи для всех разделов, и все будет работать нормально.

1
28.01.2020, 02:45

Теги

Похожие вопросы