Arch Linux: установка у 2025, part 1 – диски, шифрування, встановлення системи

Автор |  26/05/2025
 

Кожного разу, як беруся за встановлення Arch Linux – це як нова подорож: наче з роками нічого особливо і не міняється – але кожного разу щось нове.

Писав про це вже багато, прийшов час написати ще раз, бо купив нового ноута.

Спочатку наче було лінь все робити руками, і вирішив спробувати готові образи. Навіть спробував Fedora – бо дуже проста установка, і все включено – але нє, не моє, бо дуже не вистачало репозиторіїв Pacman/AUR, постійно якісь граблі з апгрейдами, постійно повідомлення, що “ваша система вже не підтримується, оновіться до 42”.

Тому все ж вирішив повернутись на Arch Linux, на якому живу з 2016 року.

Першим спробував EndeavourOS – дуже непогано, насправді. Я ставив з KDE, і все “просто працює” – без всяких танців з бубном. В комплекті йдуть всі батарейки і налаштоване оточення на вибір – KDE/Gnome/LXDE/etc.

Але потім щось я скучив за Openbox та його мінімалістичністю – і вирішив повернутись на нього.

Аналогічно – спочатку вирішив не витрачати час і просто пошукати готові зборки. І такі є, наприклад – Archcraft. Теж все підготовлено, чувак прям дуже красиво все зробив – і екран GRUB, і всякий тюнінг Openbox/Fluxbox/Hyprland – багато всього, на будь-який смак.

Поставив, погрався, і все одно – щось мені в одному місці зудить, хочеться “своє, рідненьке”, бо хочеться знати свою систему – де, що, як, і для чого зроблено. А тому – беремо “голий” Arch Linux ISO, створюємо флешку – і погнали.

Записав багато, тому поділив на кілька частин:

  • спочатку пройдемось по процесу розбивки диска і встановлення чистої системи
    • так як ноут планується для роботи, то тут зроблю з LUKS
  • потім – пройдемось по основним налаштування для початку роботи
  • потім – подивимось на налаштування різних Desktop Environment/Window Managers

Я таки спробував тайлінг менеджери – але ну якось не зайшло. Все ж діло звички, і іноді хочеться просто клацати мишкою, а не пам’ятати 100500 комбінацій клавіш.

Окей, поїхали.

Запуск установки, WiFi

Створюємо флешку з Arch Linux ISO, ребутаємо машинку з неї, налаштовуємо WiFi. Це я більше роблю для себе, бо потім простіше підключитись з іншого компа по SSH, і робити все в повноцінному оточенні, де можна копіпастити команди/результати в RTFM, в цей пост.

iwctl у нас вже є в образі, запускаємо:

# iwctl

Знаходимо доступні мережі:

[iwd]# station wlan0 get-networks

Підключаємось (iwctl підтримує підстановку по TAB, тому не треба повністю руками все набирати):

[iwd]# station wlan0 connect setevoy-tplink-5
Passphrase:*******

Перевіряємо стан – в State має бути Connected:

[iwd]# station wlan0 show

Виходимо по Ctrld+D, можна пінганути якийсь Google для перевірки.

Отримуємо IP:

# ip a s wlan0

Задаємо пароль root:

# passwd root

І підключаємось до цієї машинки з іншого компа:

$ ssh [email protected]

archinstall vs manual installation

Колись в Arch Linux додали скрипт archinstall, який спрощує процес. Але я з ним не подружився – і розбивка диска не дуже зручна, і встановлення пакетів.

Тому робити будемо по The Old School Way – все ручками.

До речі, не пам’ятаю чи взагалі вміє archinstall в шифрування.

Підготовка: диски

Вибір схеми – LVM, розділи

Колись я робив з LVM + LUKS, і в LVM окремі групи для / та /home.

Мати окремі розділи наче зручніше, бо і контроль над вільним місце краще, і перевстановити систему можна без втрати даних в домашніх директоріях, плюс там всякі user settings. А якщо ще і LVM є – то і змінити розмір розділів можна легко, і снапшоти для бекапів робити.

Але за ті роки, скільки в мене ця схема на робочому ноуті (років 5 вже) – жодного разу не користувався цими можливостями.

Тому цього разу вирішив і / і /home робити на одному великому розділі, і без LVM – трохи простіше сетап, простіше дебаг при проблемах, коли треба загрузитись з флешки і перезібрати ядро.

Отже – будемо робити без LVM, але з LUKS, та системою і $HOME на одному розділі.

Пост дописую вже при сетапі іншого, старого ноута, тому тут диск всього 250 гіг.

Розбивка диска з fdisk

Знов-таки – діло звички, але я давно користуюсь fdisk, тому робити будемо з ним.

Перевіряємо девайси:

[root@archiso ~]# fdisk -l
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: Samsung SSD 850 
...
Disklabel type: gpt
...

Device         Start       End   Sectors   Size Type
/dev/sda1       4096   4198399   4194304     2G EFI System
/dev/sda2    4198400 416672903 412474504 196.7G Linux filesystem
/dev/sda3  416672904 488397101  71724198  34.2G Linux swap

Disk /dev/sdb: 28.91 GiB, 31037849600 bytes, 60620800 sectors
Disk model: DataTraveler 2.0
...

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *         64 2074623 2074560 1013M  0 Empty
/dev/sdb2       2074624 2428927  354304  173M ef EFI (FAT-12/16/32)
...

Тут:

  • /dev/sdb: USB з Arch Linux ISO, 30 гігабайт
  • /dev/sda: головний диск, SSD самого ноута, 250 гігабайт

На SSD зараз є розділи і дані від EndeavourOS, видалимо все, зробимо з нуля.

Запускаємо fdisk на sda:

root@archiso ~ # fdisk /dev/sda
...
Command (m for help):

Ще раз перевіримо, що це саме потрібний диск – Samsung SSD, 250 гіг:

...
Command (m for help): p
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: Samsung SSD 850 
...

Важливо: далі будемо видаляти ВСІ дані з диску!

Видаляємо всі розділи:

Command (m for help): d
Partition number (1-3, default 3): 

Partition 3 has been deleted.

Command (m for help): d
Partition number (1,2, default 2): 

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted

Записуємо зміни:

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Запускаємо fdisk ше раз:

root@archiso ~ # fdisk /dev/sda

Перевіряємо що на диску зараз – а нічого 🙂

Command (m for help): p
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors 
Disk model: Samsung SSD 850
...
Disklabel type: gpt
Disk identifier: 51B93327-8CC4-4D94-9243-67A797A845B2

Поїхали створювати нові розділи.

Нам буде потрібно чотири:

  • для EFI
  • окремий розділ для /boot – бо треба звідкись завантажити initramfs до того, як буде змога розшифрувати диск
  • для Swap
  • і розділ під саму систему і /home

Порядок створення не те, щоб дуже важливий, бо сучасні системи і ядра самі все знайдуть, але краще дотримуватися стандартного підходу:

  • першим EFI, бо там наш bootloader (там буде шукатись efi-файл)
  • потім /boot – там ядро для загрузки і решта файлів GRUB
  • далі Swap – бо “так історично склалося” з часів механічних HDD, де перші розділи (ближче до краю диску) читались швидше
  • і потім вже основний розділ під / та /home

Створюємо перший розділ, для EFI, 512 мегеабайт:

Command (m for help): n
Partition number (1-128, default 1): 
First sector (2048-2000409230, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2000409230, default 2000408575): +512M

Created a new partition 1 of type 'Linux filesystem' and of size 512 MiB.
Partition #1 contains a vfat signature.

Do you want to remove the signature? [Y]es/[N]o: Y

The signature will be removed by a write command.

Тепер треба задати тип розділу, EFI – t (type):

Command (m for help): t

Знаходимо всі з L:

Partition type or alias (type L to list all): L
  1 EFI System                     C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  2 MBR partition scheme           024DEE41-33E7-11D3-9D69-0008C781F39F
...

Задаємо значення 1:

Partition type or alias (type L to list all): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.

Створюємо другий розділ, під /boot, де буде initramfs і само ядро системи.

512 мегабайт має вистачити на все – vmlinuz-linux близько 10 мегабайт, initramfs-linux.img ще 20-30, fallback image трохи більший.

Можна глянути на робочій системі:

$ ls -lh /boot/
total 67M
drwxr-xr-x 3 root root 4.0K Jan  1  1970 EFI
drwxr-xr-x 6 root root 4.0K Dec  7  2020 grub
-rw------- 1 root root  39M May  2 16:44 initramfs-linux-fallback.img
-rw------- 1 root root  14M May  2 16:44 initramfs-linux.img
drwx------ 2 root root  16K Dec  7  2020 lost+found
-rw-r--r-- 1 root root  15M May  2 16:44 vmlinuz-linux

Додаємо новий розділ:

...

Command (m for help): n
Partition number (2-128, default 2): 
First sector (1050624-488397134, default 1050624): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-488397134, default 488396799): +512M

Created a new partition 2 of type 'Linux filesystem' and of size 512 MiB.
...

Додаємо Swap – раніше робили х2 від доступної оперативної пам’яті.

Зараз, якщо буде використовуватись hibernate – то робимо розмір оперативної + пару гігабайт в запасі.

На цьому ноуті 32 гіга, тому під Swap даємо нехай буде 34:

...
Command (m for help): n
Partition number (3-128, default 3): 
First sector (2099200-488397134, default 2099200): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2099200-488397134, default 488396799): +34G

Created a new partition 3 of type 'Linux filesystem' and of size 34 GiB.
...

Знаходимо тип Linux swap – ще раз L:

...
Partition number (1-3, default 3): L
...
 19 Linux swap
...

Задаємо тип з t:

...
Partition number (1-3, default 3): 
Partition type or alias (type L to list all): 19

Changed type of partition 'Linux filesystem' to 'Linux swap'.
...

І останнім – розділ під саму систему, вже на решту місця (просто тиснемо Enter):

...
Command (m for help): n
Partition number (4-128, default 4): 
First sector (73402368-488397134, default 73402368): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (73402368-488397134, default 488396799): 

Created a new partition 4 of type 'Linux filesystem' and of size 197.9 GiB.
...

Перевіряємо, що у нас вийшло – з p:

...
Command (m for help): p
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: Samsung SSD 850 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: BE8FEE73-C9BB-4959-A258-12A3FCF906FF

Device        Start       End   Sectors   Size Type
/dev/sda1      2048   1050623   1048576   512M EFI System
/dev/sda2   1050624   2099199   1048576   512M Linux filesystem
/dev/sda3   2099200  73402367  71303168    34G Linux swap
/dev/sda4  73402368 488396799 414994432 197.9G Linux filesystem
...

Записуємо зміни:

...
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks

Шифрування з LUKS

Ще раз глянемо що у нас з розділами тепер:

[root@archiso ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0 846.7M  1 loop /run/archiso/airootfs
sda      8:0    0 232.9G  0 disk 
├─sda1   8:1    0   512M  0 part 
├─sda2   8:2    0   512M  0 part 
├─sda3   8:3    0    34G  0 part 
└─sda4   8:4    0 197.9G  0 part 
sdb      8:16   1  28.9G  0 disk 
├─sdb1   8:17   1  1013M  0 part 
└─sdb2   8:18   1   173M  0 part 
sdc      8:32   1     0B  0 disk

4 нових розділи на /dev/sda, з них /dev/sda4 – це рутовий розділ під систему, його і будемо шифрувати.

Використовуємо останній  стандарт, luks2, додаємо ‘-y‘ аби запитало підтвердження пароля:

[root@archiso ~]# cryptsetup -y luksFormat --type luks2 /dev/sda4

WARNING!
========
This will overwrite data on /dev/sda4 irrevocably.

Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /dev/sda4: 
Verify passphrase:

Все – дані вже зашифровані.

Тепер, аби встановити систему, нам потрібно розшифрувати диск – тим жеж cryptsetup:

[root@archiso ~]# cryptsetup open /dev/sda4 cryptroot
Enter passphrase for /dev/sda4:

Тепер має з’явитись новий розділ в /dev/mapper який створює cryptsetup коли розшифровує диск, і по факту це просто сімлінк на фізичний розділ:

[root@archiso ~]# ls -l /dev/mapper/cryptroot 
lrwxrwxrwx 1 root root 7 May 26 12:06 /dev/mapper/cryptroot -> ../dm-0

Створення файлових систем

Які нам FS треба:

  • EFI – Fat32
  • / та /boot  – ext4 (стара і перевірена, ніколи не користувався всякими btrfs, хоча може варто було б спробувати)
  • Swap – залишаємо, як є, але виконуємо mkswap (задаємо заголовок LINUX_SWAP), і пізніше робимо swapon

Створюємо файлову систему на основному розділі, /dev/sda4 (або /dev/mapper/cryptroot):

[root@archiso ~]# mkfs.ext4 /dev/mapper/cryptroot
mke2fs 1.47.2 (1-Jan-2025)
Creating filesystem with 51870208 4k blocks and 12967936 inodes
Filesystem UUID: 6bbbd1c2-7396-4d23-91eb-4188079e6df8
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

Аналогічно для /boot, але тут вже через /dev/sda2:

root@archiso ~ # mkfs.ext4 /dev/nvme0n1p2

Тепер Fat32 для EFI, /dev/sda1:

[root@archiso ~]# mkfs.fat -F32 /dev/sda1
mkfs.fat 4.2 (2021-01-31)

І Swap:

[root@archiso ~]# mkswap /dev/sda3
Setting up swapspace version 1, size = 34 GiB (36507217920 bytes)
no label, UUID=9132a23f-bb87-43d1-9ac5-33b75bf17f35

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

[root@archiso ~]# fdisk -l /dev/sda
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: Samsung SSD 850 
...

Device        Start       End   Sectors   Size Type
/dev/sda1      2048   1050623   1048576   512M EFI System
/dev/sda2   1050624   2099199   1048576   512M Linux filesystem
/dev/sda3   2099200  73402367  71303168    34G Linux swap
/dev/sda4  73402368 488396799 414994432 197.9G Linux filesystem

Окей, поїхали далі.

Підключення розділів

Монтуємо розділи:

  • sda4, корневий розділ – в /mnt
  • sda2, boot – в /mnt/boot
  • sda1, EFI – в /mnt/boot/efi
  • і swapon для /dev/sda3

Виконуємо:

[root@archiso ~]# mount /dev/mapper/cryptroot /mnt
[root@archiso ~]# mkdir /mnt/boot
[root@archiso ~]# mount /dev/sda2 /mnt/boot
[root@archiso ~]# mkdir /mnt/boot/efi 
[root@archiso ~]# mount /dev/sda1 /mnt/boot/efi
[root@archiso ~]# swapon /dev/sda3

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

[root@archiso ~]# swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/sda3 partition  34G   0B   -2

І решту розділів:

[root@archiso ~]# lsblk /dev/sda
NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda             8:0    0 232.9G  0 disk  
├─sda1          8:1    0   512M  0 part  /mnt/boot/efi
├─sda2          8:2    0   512M  0 part  /mnt/boot
├─sda3          8:3    0    34G  0 part  [SWAP]
└─sda4          8:4    0 197.9G  0 part  
  └─cryptroot 253:0    0 197.9G  0 crypt /mnt

Встановлення системи

З pacstrap встановлюємо необхідні пакети.

Краще тут відразу додати все для WiFi, в тому числі dhcpd аби потім не мати геморою з підключенням, і встановити openssh:

root@archiso ~ # pacstrap -K /mnt base linux linux-firmware grub efibootmgr networkmanager sudo vim iwd dhcpcd openssh
==> Creating install root at /mnt
...
(12/13) Updating linux initcpios...
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-linux -g /boot/initramfs-linux.img
==> Starting build: '6.14.7-arch2-1'
...
==> Initcpio image generation successful
(13/13) Reloading system bus configuration...
  Skipped: Running in chroot.
pacstrap -K /mnt base linux linux-firmware grub efibootmgr networkmanager sud  23.20s user 13.51s system 84% cpu 43.626 total

Iris Xe Graphics

На новому ноуті (Lenovo ThinkPad T14 Gen 5) в мене відеокарта Iris Xe Graphics, і для неї треба трохи танців, бо перші спроби запуску Archcraft приводили до чорного екрану.

Вирішувалось додавання nomodeset в загрузку ядра.

Встановлюємо додаткові пакети:

root@archiso ~ # pacstrap -K /mnt mesa vulkan-intel intel-media-driver libva libva-utils

Переключаємось в нову систему, і якщо є – то видаляємо xf86-video-intel:

[root@archiso /]# pacman -Rns xf86-video-intel
error: target not found: xf86-video-intel

Виходимо зі chroot-оточення, йдемо далі.

Створення fstab

Генеруємо /etc/fstab з розділами:

[root@archiso ~]# genfstab -U /mnt >> /mnt/etc/fstab

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

[root@archiso ~]# cat /mnt/etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/mapper/cryptroot
UUID=6bbbd1c2-7396-4d23-91eb-4188079e6df8       /               ext4            rw,relatime     0 1

# /dev/sda2
UUID=93dade4c-1579-4256-8491-4e560fc563c4       /boot           ext4            rw,relatime     0 2

# /dev/sda1
UUID=BBE3-903E          /boot/efi       vfat            rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro   0 2

# /dev/sda3
UUID=9132a23f-bb87-43d1-9ac5-33b75bf17f35       none            swap            defaults        0 0

Виглядає наче ОК.

Зборка ядра з mkinitcpio

Так як у нас LUKS, то треба додати дію (власне, “hook“) encrypt, аби ядро при старті системи виконало decrypt розділу.

keyboard і keymap вже мають бути, але краще перевірити – вони використовується, аби можна було ввести сам пароль.

Редагуємо файл /mnt/etc/mkinitcpio.conf (/mnt! – або робимо chroot), заходимо строку з HOOKS:

...
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck)
...

Додаємо encrypt після block і перед filesystems – порядок важливий:

HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt resume filesystems fsck)

(якщо будемо використовувати hibernation – то перед filesystem ще додаємо resume)

Чому порядок важливий:

  • block – знаходить диски
  • encrypt – декриптить розділ
  • filesystems – монтує розділи

Якщо не буде encrypt – то initramfs не запитає пароль, і не зможе підключити розділ.

Тут, до речі, важливий нюанс: якщо ми не шифруємо Swap, і крадуть ноут, який був в гібернації – то можуть отримати всю інформацію, яка була в пам’яті.

Тому, якщо вже робити все секьюрно – то Swap теж треба шифрувати. Або використовувати swapfile на рутовому розділі, який шифрується.

Виконуємо arch-chroot:

[root@archiso ~]# arch-chroot /mnt/

Збираємо ядро:

[root@archiso /]# mkinitcpio -P
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-linux -g /boot/initramfs-linux.img
...
  -> Running build hook: [encrypt]
  -> Running build hook: [resume]
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-fallback.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful

GRUB

Так як у нас є зашифрований розділ – то його треба вказати в GRUB, аби він передав ядру необхідність виконати decrypt.

Зараз це можна зробити /etc/crypttab – або “the old school way” з GRUB_CMDLINE_LINUX.

Я crypttab не користувався, якихось додаткових розділів в мене нема, тому GRUB_CMDLINE_LINUX буде достатньо.

Додаємо ще три пакети – власне grub, efibootmgr (хоча ми його вже встановили) та intel-ucode, аби мати останні апдейти для ЦПУ (це, звісно, якщо у вас Intel CPU, а не AMD).

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

[root@archiso /]# lscpu | grep 'Vendor'
Vendor ID:                            GenuineInte

Якщо AMD – То використовуємо пакет amd-ucode.

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

[root@archiso /]# pacman -S grub efibootmgr intel-ucode

Встановлюємо сам GRUB в розділ EFI:

[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
Installing for x86_64-efi platform.
Installation finished. No error reported

Додавання cryptdevice

Знаходимо UUID зашифрованого розділу:

[root@archiso /]# blkid | grep LUKS
/dev/sda4: UUID="738d2f9b-7ffa-4d4e-93be-e00af0a64d5b" TYPE="crypto_LUKS" PARTUUID="32835823-6901-4bbf-9520-1876e64ba109"

(тут я як раз помилився – взяв не той UUID, і система не грузилась, див. в кінці)

Редагуємо /etc/default/grub, знаходимо строку GRUB_CMDLINE_LINUX="", і додаємо параметр cryptdevice:

...
GRUB_CMDLINE_LINUX="cryptdevice=UUID=738d2f9b-7ffa-4d4e-93be-e00af0a64d5b:cryptroot root=/dev/mapper/cryptroot"
...

Додавання resume

Якщо плануємо використовувати hibernate – то ядру треба вказати, з якого розділу зчитувати дані.

Знаходимо UUID розділу Swap:

[root@archiso /]# blkid | grep swap
/dev/sda3: UUID="9132a23f-bb87-43d1-9ac5-33b75bf17f35" TYPE="swap" PARTUUID="d7d38c7c-b8c6-49d5-81c3-0ef34cbd7d52"

Додаємо resume=UUID=9132a23f-bb87-43d1-9ac5-33b75bf17f35 в GRUB_CMDLINE_LINUX:

Генеруємо конфіг для GRUB:

[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot:  intel-ucode.img initramfs-linux-fallback.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done

Тут все.

Пароль root

Задамо пароль root, аби потім залогінитись в нову систему:

[root@archiso /]# passwd root
New password: 
Retype new password: 
passwd: password updated successfully

Виходимо зі chroot, і ребутаємось:

[root@archiso /]# 
exit
root@archiso ~ # reboot

Готово.

Проблеми: “Failed to mount <device> on real root”

З першої спроби не вийшло 🙂

Хоча до цього сетапив на новому ноуті – все пройшло ОК.

Зараз маю помилку:

ERROR: device '/dev/mapper/cryptroot' not found
...
Failed to mount '/dev/mapper/cryptroot' on real root

Ну, давайте розбиратись.

Десь накосячив в конфігах – initramfs не зміг розшифрувати диск, тому cryptroot не запустився, і ядро не знає, де шукати кореневу файлову систему.

Завантажуємось з флешки, монтуємо диски:

[root@archiso ~]# cryptsetup open /dev/sda4 cryptroot
Enter passphrase for /dev/sda4: 
[root@archiso ~]# mount /dev/mapper/cryptroot /mnt
[root@archiso ~]# mount /dev/sda2 /mnt/boot
[root@archiso ~]# mount /dev/sda1 /mnt/boot/efi
[root@archiso ~]# swapon /dev/sda3

Виконуємо chroot:

[root@archiso ~]# arch-chroot /mnt/
[root@archiso /]#

Перевіряємо конфіг для ядра:

[root@archiso /]# cat /etc/mkinitcpio.conf | grep HOOKS | tail -1
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt resume filesystems fsck)

Наче все вірно.

Про всяк випадок – можна ще раз зібрати ядро з mkinitcpio -P.

З lsinitcpio перевіримо що в ядрі – мають бути модулі cryptsetup та crypttab:

[root@archiso /]# lsinitcpio /boot/initramfs-linux.img | grep 'cryptsetup\|crypttab'
usr/bin/cryptsetup
usr/lib/libcryptsetup.so.12
usr/lib/libcryptsetup.so.12.10.0

Все є.

Ну і останнє – UUID розділу, який ми задавали в GRUB – отут в мене і була помилка, бо робив blkid /dev/mapper/cryptroot, а не самого розділу /dev/sda4.

Перевіряємо ID розділу з типом crypto_LUKS:

[root@archiso /]# blkid | grep LUKS
/dev/sda4: UUID="738d2f9b-7ffa-4d4e-93be-e00af0a64d5b" TYPE="crypto_LUKS" PARTUUID="32835823-6901-4bbf-9520-1876e64ba109"

Редагуємо /etc/default/grub, вказуємо коректний UUID для cryptdevice, виконуємо grub-mkconfig -o /boot/grub/grub.cfg – готово:

Після старту системи запускаємо idw:

# systemctl start iwd
# systemctl enable iwd

Запускаємо dhcpcd:

# systemctl start dhcpcd
# systemctl enable dhcpcd

І підключаємось до WiFi з iwctl:


Ну а в другій частині саме цікаве – налаштування робочого оточення 🙂