Кожного разу, як беруся за встановлення 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 писав тут – Arch: установка с LVM і тут Arch: установка с LVM + Openbox + Tint2 (2016)
- ще трохи про LVM та розділи – в Arch: установка поверх Ubuntu с сохранением home в LVM (2017)
- про LVM + LUKS – тут Arch Linux: установка с LVM и LUKS шифрованием диска (2018)
- аналогічно, але перший раз з GPT замість MBR – описав тут: Arch Linux: установка с UEFI, GPT, LVM и LUKS шифрованием (2018)
- про dualboot з Windows писав отуто – Arch Linux: установка с EFI и dual-boot с Windows (2019)
Отже – будемо робити без 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
:
Ну а в другій частині саме цікаве – налаштування робочого оточення 🙂