Код
May 14, 2023

Arch + LUKS2 + Btrfs + GRUB-on-EFI Installation

Этап первый. Разметка диска

На данном этапе требуется создать два раздела на имеющихся у вас накопителях: один - для EFI, другой - для системы. Диск следует разметить как GPT.

Вики: https://wiki.archlinux.org/title/fdisk

Этап второй. Создание разделов

# mkfs.vfat -F32 /dev/{EFI-раздел}

# cryptsetup --key-size 512 --hash sha512 luksFormat /dev/{системный раздел}

# cryptsetup open /dev/{системный раздел} root

# mkfs.btrfs /dev/{системный раздел}

# mount -o compress-force=zstd:4 /dev/{системный раздел} /mnt

# mount --mkdir /dev/{раздел EFI} /mnt/boot/efi

Этап третий. Установка пакетов и настройка системы

# pacman -Sy reflector

# reflector --save /etc/pacman.d/mirrorlist --latest 5 --country Russia --protocol https

# pacstrap -K /mnt base base-devel {ядро, например, linux} linux-firmware efibootmgr {менеджер сети, например, networkmanager} {текстовый редактор, например, nano}

# genfstab -U /mnt > /mnt/etc/fstab

# arch-chroot /mnt

# nano /etc/locale.gen

Выбираем нужные нам локали и запускаем далее:

# locale-gen

# echo LANG={локаль, например, en_US.UTF-8} > /etc/locale.conf

# ln -sf /usr/share/zoneinfo/{регион}/{город} /etc/localtime

# hwclock --systohc --utc

# echo {имя хоста} > /etc/hostname

# nano /etc/hosts

Пишем:
127.0.0.1 localhost {имя хоста} :: 1 localhost {имя хоста}

# systemctl enable NetworkManager

# dd bs=512 count=4 if=/dev/urandom of=/crypto_keyfile.bin

# cryptsetup luksAddKey /dev/{системный раздел} /crypto_keyfile.bin

# chmod 600 /crypto_keyfile.bin

Нам потребуется вручную собрать загрузчик, поэтому выбираем yay из любого репозитория: https://pkgs.org/search/?q=yay

# curl {ссылка на yay из одного из репозиториев, например, https://arch.alerque.com/x86_64/yay-12.0.4-1-x86_64.pkg.tar.zst}

# pacman -U {имя файла пакета, например, yay-12.0.4-1-x86_64.pkg.tar.zst}

# passwd

# useradd -m {имя пользователя}

# passwd {имя пользователя}

# EDITOR=nano visudo

Вписываем после строки
root ALL=(ALL:ALL) ALL
строку:
{имя пользователя} ALL=(ALL:ALL) ALL

# sudo -iu {имя пользователя}

$ yay -S grub-improved-luks2-git

$ sudo nano /etc/mkinitcpio.conf

Редактируем следующие строки:
MODULES=(btrfs vfat) FILES=(/crypto_keyfile.bin) HOOKS=(base udev autodetect modconf kms keyboard keymap block encrypt filesystems fsck)

$ sudo mkinitcpio -P

$ sudo chmod 600 /boot/initramfs-linux*

$ sudo nano /etc/default/grub

Редактируем следующие строки:
GRUB_CMDLINE_LINUX="cryptdevice=UUID={UUID системного раздела, смотрим через команду "lsblk -f"}:root root=/dev/mapper/root"
GRUB_ENABLE_CRYPTODISK=y

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

$ sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

$ sudo nano /boot/grub/grub-pre.cfg

Пишем:
set crypto_uuid={UUID системного раздела} cryptomount -u $crypto_uuid set root=crypto0 set prefix=($root)/boot/grub insmod normal normal

$ grub-mkimage -p /boot/grub -O x86_64-efi -c /boot/grub/grub-pre.cfg -o /tmp/grubx64.efi luks2 part_gpt cryptodisk gcry_rijndael gcry_sha512 argon2 btrfs

$ sudo install -v /tmp/grubx64.efi /boot/efi/EFI/GRUB/grubx64.efi

После этого, дважды нажав Ctrl+D, выходим в консоль archiso и вводим:

# umount -R /mnt

# reboot