Встановлення ArchLinix

Опубліковано: вчора о 10:58



Так як цим ресурсом користуюся для того щоб не забувати то залишу це тут, щоб через деякий час не забути як встановлював, що часу та нервів потратив на  те все чимало.

  • Структура завантаження
    │
    ├── UEFI
    │
    ├── GPT
    │   ├── ESP 1 GiB     ← незашифрований, інакше UEFI не завантажиться
    │   │    └── signed UKI
    │   │
    │   └── LUKS2         ← решта SSD
    │        └── ext4
    │             ├── /
    │             └── /home
    │
    └── Secure Boot
         └── власні ключі sbctl
  • В BIOS вмикаємо завантаження в режимі UEFI та очищаємо всі ключі в secureboot, вимикаємо secureboot, налаштовуємо завантаження з USB.
  • Завантажуємося з флешки та відключаємося до WIFI:
    iwctl
    потім device list
    station wlan0 scan
    station wlan0 get-networks
    station wlan0 connect "SSID" 
    exit.
    Перевірка ping google.com
  • Синхронізація часу: timedatectl set-ntp true

  • Створення розділів:
    cfdisk /dev/sda
  •           /dev/sda1    1 GiB       EFI System                                   1 GiB     EFI
              /dev/sda2    60–80 GiB   Linux filesystem                   70 GiB    root
             /dev/sda3    решта      Linux filesystem                         решта home
  • Форматуємо ESP
    mkfs.fat -F32 /dev/sda1
  • Створюємо LUKS2 для root:
    cryptsetup luksFormat --type luks2 /dev/sda2 Підтверджуємо YES і задаємо пароль.

    Відкриваємо:

    cryptsetup open /dev/sda2 cryptroot

    Форматуємо:

    mkfs.ext4 /dev/mapper/cryptroot
  • Створюємо LUKS2 для home
    cryptsetup luksFormat --type luks2 /dev/sda3 Підтверджуємо YES і задаємо пароль.

    Відкриваємо:

    cryptsetup open /dev/sda3 crypthome

    Форматуємо:

    mkfs.ext4 /dev/mapper/crypthome
  •  ОБОВЯЗКОВО !!!!!!! 
    Резервні копії LUKS headercryptsetup luksHeaderBackup /dev/sda2 \ --header-backup-file /root/root-luks-header.img cryptsetup luksHeaderBackup /dev/sda3 \ --header-backup-file /root/home-luks-header.img

    Пізніше ці файли потрібно скопіювати на інший фізичний носій.

    Вони особливо важливі, якщо колись пошкодиться LUKS metadata.

  • Монтуємо root:
    mount /dev/mapper/cryptroot /mnt

    Створюємо /boot:

    mkdir /mnt/boot
  • Монтуємо home
    mkdir /mnt/home
    mount /dev/mapper/crypthome /mnt/home
  • Монтуємо ESP у /efi
    mkdir /mnt/efi mount /dev/sda1 /mnt/efi
  • Перевірка:

    lsblk

    Маємо побачити приблизно:

    sda
    ├─sda1 /mnt/efi
    ├─sda2
    │ └─cryptroot /mnt
    └─sda3
    └─crypthome /mnt/home
  • Встановлення базової системи 
    pacstrap -K /mnt base linux linux-firmware intel-ucode sudo nano networkmanager   systemd-ukify sbctl  gnome gnome-extra gdm gnome-terminal firefox
  • Fstab
    genfstab -U /mnt >> /mnt/etc/fstab

    Перевіряємо:

    cat /mnt/etc/fstab

    Має бути /, /efi та /home.

  • Chroot
    arch-chroot /mnt
  • Часовий пояс

    Для України:

    ln -sf /usr/share/zoneinfo/Europe/Kyiv /etc/localtime
    hwclock --systohc
  • Locale

    Відкриваємо:

    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 
    Root пароль
    passwd
  • Користувач

    Наприклад:

    useradd -m -G wheel -s /bin/bash user

    Пароль:

    passwd user

    Відкриваємо sudo:

    EDITOR=nano visudo

    Розкоментовуємо:

    %wheel ALL=(ALL:ALL) ALL
  • NetworkManager
    systemctl enable NetworkManager
  • І включимо display manager:

    sudo systemctl enable gdm
  • crypttab

    Ось тут важливо не переплутати 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.

  • UUID root

    Тепер:

    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" 
  • Kernel command line

    Створюємо:

    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
  • mkinitcpio

    Редагуємо:

    nano /etc/mkinitcpio.conf

    HOOKS:

    HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)
  • Налаштування UKI

    Редагуємо:

    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
  • Генеруємо initramfs + UKI

    Спочатку переконуємося, що 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
  • systemd-boot

    Встановлюємо:

    bootctl --esp-path=/efi install

    Перевіряємо:

    ls -l /efi/EFI/Linux/

    Має бути:

    arch-linux.efi
  • Перевірка UKI
    bootctl --esp-path=/efi status

    У chroot буде нормально побачити:

    Not booted with EFI

    Це не помилка — ми ще знаходимось у середовищі Arch ISO/chroot.

  • Secure Boot — sbctl

    Перевіряємо:

    sbctl status

    Створюємо ключі:

    sbctl create-keys

    Підписуємо:

    sbctl sign -s /efi/EFI/Linux/arch-linux.efi

    systemd-boot:

    sbctl sign -s /efi/EFI/BOOT/BOOTX64.EFI
  • Перевірка підписів sbctl verify

    Має бути щось на кшталт:

    ✓ /efi/EFI/BOOT/BOOTX64.EFI ✓ /efi/EFI/Linux/arch-linux.efi
  • Після цього:

    sbctl enroll-keys --yes-this-might-brick-my-machine
  • Вихід із chroot exit

    Розмонтувати:

    umount -R /mnt

    Закрити LUKS:

    cryptsetup close crypthome cryptsetup close cryptroot

    Перезавантаження:
    reboot

  • Перший запуск

    Заходимо в Arch.

    Перевіряємо:

    lsblk

    Потім:

    systemctl status NetworkManager
  • Secure Boot

    Перевіряємо:

    sbctl status

    І:

    bootctl status

    Тепер уже після реального завантаження UEFI bootctl status повинен показувати нормальний EFI boot environment, на відміну від chroot.

    Після цього в BIOS  вмикаємо:

    Secure Boot → Enabled

    І завантажуємося.

  • Перевірка після Secure Boot

    У системі:

    sbctl status

    Очікуємо:

    Secure Boot: enabled Setup Mode: disabled

    І:

    sbctl verify
  • Встановити шрифт

    терміналі:

    sudo pacman -S terminus-font

    Відкрий:

    sudo nano /etc/vconsole.conf
    і встанови:
    Fter-u20n
    KEYMAP=ua
  • встановити auto-cpufreq.
    sudo pacman -S --needed base-devel git git clone https://aur.archlinux.org/auto-cpufreq.git cd auto-cpufreq makepkg -si

    Після встановлення перевір:

    auto-cpufreq --version

    Потім встанови сервіс:

    sudo auto-cpufreq --install

    І перевір:

    systemctl status auto-cpufreq
  • Завантажуємо paru git clone https://aur.archlinux.org/paru.git
     cd paru
    Встановлюємо
    makepkg -si

    Після завершення перевір:

    paru --version
0 0

Коментарі

Щоб залишати коментарі, потрібно авторизуватись.