Я пытаюсь настроить новую установку 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
то правильно сгенерируем записи для всех разделов и все будет работать просто отлично.