Так як цим ресурсом користуюся для того щоб не забувати то залишу це тут, щоб через деякий час не забути як встановлював, що часу та нервів потратив на те все чимало.
Синхронізація часу: timedatectl set-ntp true
Відкриваємо:
cryptsetup open /dev/sda2 cryptrootФорматуємо:
mkfs.ext4 /dev/mapper/cryptrootВідкриваємо:
cryptsetup open /dev/sda3 crypthomeФорматуємо:
mkfs.ext4 /dev/mapper/crypthomeПізніше ці файли потрібно скопіювати на інший фізичний носій.
Вони особливо важливі, якщо колись пошкодиться LUKS metadata.
Створюємо /boot:
mkdir /mnt/bootПеревірка:
lsblkМаємо побачити приблизно:
sdaПеревіряємо:
cat /mnt/etc/fstabМає бути /, /efi та /home.
Для України:
ln -sf /usr/share/zoneinfo/Europe/Kyiv /etc/localtimeВідкриваємо:
nano /etc/locale.genРозкоментовуємо:
en_US.UTF-8 UTF-8 uk_UA.UTF-8 UTF-8Потім:
locale-genСтворюємо:
echo 'LANG=uk_UA.UTF-8' > /etc/locale.confНаприклад:
echo 't440p' > /etc/hostnameНаприклад:
useradd -m -G wheel -s /bin/bash userПароль:
passwd userВідкриваємо sudo:
EDITOR=nano visudoРозкоментовуємо:
%wheel ALL=(ALL:ALL) ALLІ включимо display manager:
sudo systemctl enable gdmОсь тут важливо не переплутати UUID.
Отримуємо UUID саме LUKS-контейнера sda3:
blkid /dev/sda3Буде приблизно:
/dev/sda3: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="crypto_LUKS"Створюємо:
nano /etc/crypttabІ записуємо:
crypthome UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX noneТут UUID повинен бути LUKS UUID /dev/sda3.
Не UUID ext4 /dev/mapper/crypthome.
І cryptroot сюди не записуємо — його відкриває initramfs через kernel command line.
Тепер:
blkid /dev/mapper/cryptrootОтримаємо UUID ext4 файлової системи root.
Наприклад:
UUID="YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"А LUKS UUID root:
blkid /dev/sda2Наприклад:
UUID="ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ"Створюємо:
nano /etc/kernel/cmdlineОдин рядок:
rd.luks.uuid=ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ root=UUID=YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY rwТобто:
rd.luks.uuid=<LUKS UUID sda2> root=UUID=<ext4 UUID cryptroot> rwРедагуємо:
nano /etc/mkinitcpio.confHOOKS:
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)Редагуємо:
nano /etc/mkinitcpio.d/linux.presetВажливі параметри:
ALL_kver="/boot/vmlinuz-linux" ALL_kerneldest="/boot/vmlinuz-linux" PRESETS=('default') default_image="/boot/initramfs-linux.img" default_uki="/efi/EFI/Linux/arch-linux.efi"Створюємо каталог:
mkdir -p /efi/EFI/LinuxСпочатку переконуємося, що kernel та modules відповідають один одному:
pacman -Q linux ls /lib/modules/Після цього:
mkinitcpio -PБачимо успішний результат:
Using ukify to build UKI Wrote unsigned /efi/EFI/Linux/arch-linux.efi Unified kernel image generation successfulВстановлюємо:
bootctl --esp-path=/efi installПеревіряємо:
ls -l /efi/EFI/Linux/Має бути:
arch-linux.efiУ chroot буде нормально побачити:
Not booted with EFIЦе не помилка — ми ще знаходимось у середовищі Arch ISO/chroot.
Перевіряємо:
sbctl statusСтворюємо ключі:
sbctl create-keysПідписуємо:
sbctl sign -s /efi/EFI/Linux/arch-linux.efisystemd-boot:
sbctl sign -s /efi/EFI/BOOT/BOOTX64.EFIМає бути щось на кшталт:
✓ /efi/EFI/BOOT/BOOTX64.EFI ✓ /efi/EFI/Linux/arch-linux.efiПісля цього:
sbctl enroll-keys --yes-this-might-brick-my-machineРозмонтувати:
umount -R /mntЗакрити LUKS:
cryptsetup close crypthome cryptsetup close cryptrootПерезавантаження:
reboot
Заходимо в Arch.
Перевіряємо:
lsblkПотім:
systemctl status NetworkManagerПеревіряємо:
sbctl statusІ:
bootctl statusТепер уже після реального завантаження UEFI bootctl status повинен показувати нормальний EFI boot environment, на відміну від chroot.
Після цього в BIOS вмикаємо:
Secure Boot → EnabledІ завантажуємося.
У системі:
sbctl statusОчікуємо:
Secure Boot: enabled Setup Mode: disabledІ:
sbctl verifyтерміналі:
sudo pacman -S terminus-fontВідкрий:
sudo nano /etc/vconsole.confПісля встановлення перевір:
auto-cpufreq --versionПотім встанови сервіс:
sudo auto-cpufreq --installІ перевір:
systemctl status auto-cpufreqПісля завершення перевір:
paru --version