Найти в Дзене

Установка Arch Linux часть 1 (UEFI на BTRFS)

Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по установке (в основном для собственного пользования) Arch Linux (условия таковы установка с использованием UEFI и на файловую систему BTRFS на чистый накопитель) с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности

Демонстрация начальной загрузки
Демонстрация начальной загрузки

Загружаемся с предварительно подготовленного накопителя (обратите внимание в пунктах в скобках будет написано UEFI, иначе загрузка в режиме Legacy)

Демонстрация выхлопа команды ls /sys/firmware/efi/efivars
Демонстрация выхлопа команды ls /sys/firmware/efi/efivars

если проглядели этот момент, то можно проверить командой:

# ls /sys/firmware/efi/efivars

если все как на скриншоте, то поздравляю вы загрузились в режиме UEFI, вы на верном пути

демонстрация экрана с командами
демонстрация экрана с командами

далее настраиваем окружение, дату и время: переключение языков (ru/en, в принципе как бы это и не обязательно)

# loadkeys ru

поддержка кириллицы

# setfont cyr-sun16

включение синхронизации времени

# timedatectl set-ntp true

настраиваем часовой пояс (в данном случае Европа/Москва)

# timedatectl set-timezone Europe/Moscow

проверяем состояние времени

# timedatectl status

Если все как на скриншоте, замечательно, мы настроили: поддержку кириллицы, дату, время, часовой пояс. Двигаемся дальше, пора определится на какой накопитель будем устанавливать Arch Linux.

Демонстрация выхлопа команды lsblk
Демонстрация выхлопа команды lsblk

Так как в демонстрации виртуальная машина, то у нас один диск VDA, у вас же вероятно будут SDA, SDB (SATA - накопители, не важно это ssd/hdd), либо же NVME0N1, NVME1N1 (это NVME - накопители), надо определиться. В данном случае у нас отдельный накопитель без разметки!!!

И так наш диск на 40Gb, подготовим его к установки, создав разделы с помощью cfdisk команда:

# cfdisk /dev/vda
Демонстрация начального экрана cfdisk
Демонстрация начального экрана cfdisk

в данном случае выбираем GPT, создадим разделы

Демонстрация разметки диска
Демонстрация разметки диска
  • /dev/vda1 размером 512Mb(более достаточно) указываем тип EFI System - тут будет жить загрузчик, раздел BOOT
  • /dev/vda2 тип Linux filesystem, размер уже на ваше усмотрение тут будет сама система, раздел ROOT
  • /dev/vda3 тип Linux swap, опять же на ваше усмотрение (добавил для демонстрации) так то можно создать и файл-swap, но это уже другая история, хотя в некоторых случаях можно обойтись и без него, опять же на ваше усмотрение

не забудьте записать(пункт write) и подтвердить изменения, написав yes. Часть ответственной работы выполнена идем дальше

Демонстрация размеченного накопителя с помощью команды lsblk
Демонстрация размеченного накопителя с помощью команды lsblk

для проверки вводим команду(для наглядности я ее буду часто применять)

# lsblk

если все как на скриншоте, то могу вас поздравить, вы подготовили накопитель к установке Arch Linux, двигаемся дальше. Теперь надо отформатировать разделы, и так, план такой

  • /dev/vda1 - FAT32
  • /dev/vda2 - BTRFS
  • /dev/vda3 - раздел SWAP
Демонстрация выхлопов команд форматирования разделов
Демонстрация выхлопов команд форматирования разделов

форматируем /dev/vda1 в FAT32 командой

# mkfs.vfat -F 32 /dev/vda1

далее форматируем /dev/vda2 в BTRFS команда

# mkfs.btrfs /dev/vda2

подключаем раздел swap командами

# mkswap /dev/vda3
# swapon /dev/vda3

если все сделано как на скриншоте, отлично, двигаемся дальше

Демонстрация монтирования раздела
Демонстрация монтирования раздела

Далее, нам нужно под монтировать раздел /dev/vda2 (ROOT) в каталог /mnt следующей командой

# mount /dev/vda2 /mnt

для наглядности до и после использовал lsblk

Демонстрация создания и монтирования subvolum'ов с использованием сжатия
Демонстрация создания и монтирования subvolum'ов с использованием сжатия

и так переходим в директорию /mnt командой

# cd /mnt

далее создаем subvolium'ы для ROOT и HOME (так как мы используем BTRFS надо пользоваться всеми ее прелестями и возможностями, а так же если будите пользоваться timeshift'ом, на первых парах изучения весьма полезна)

subvoliume для ROOT раздела (btrfs subvolume create @ можно использовать сокращения как на скрине)

# btrfs su cr @

аналогично для HOME

# btrfs su cr @home

далее вернемся в корень / командой

# cd /

и от монтируем раздел ROOT от /mnt командой

# umount /mnt

что бы удостовериться вводим команду lsblk. И самое страшное монтируем subvolium'ы, не пугайтесь просто команда длинная(рекомендую дополнительно изучить параметры монтирования, вероятно что-то может пригодится), монтируем subvolume ROOT в /mnt:

mount -o noatime,compress=zstd:2,space_cache=v2,discard=async,subvol=@ /dev/vda2 /mnt

теперь важный момент надо создать директорию /mnt/home иначе вы не при монтриуете subvolume HOME:

mkdir /mnt/home

готово, монтируем subvolume HOME:

mount -o noatime,compress=zstd:2,space_cache=v2,discard=async,subvol=@home /dev/vda2 /mnt/home

давайте разберем опции монтирования:

noatime - не обновлять время доступа к файлу

compress=zstd:2 - включает алгоритм прозрачного сжатия zstd (есть еще lzo и zlib) 2 это степень сжатия

space_cache=v2 - Кэширование данных о свободных блоках, чтобы не искать их перед записью в данном примере использую 2 версии

discard=async - Незанятые блоки, группируются и освобождаются позже в отдельном потоке, что улучшает задержки при записи на диск (так скажем более бережное отношение к ssd в плане перезаписи) можно добавит параметр ssd (хотя она включается автоматически) так же есть еще ssd_spread вынуждает драйвер использовать для записи преимущественно не занятые области диска, что специально вызывает сильную фрагментацию. Может значительно ускорить недорогие ssd. autodefrag - дефрагментация на «лету», не применять для SSD. не использовал эти параметры, вычитал на просторах инета.

subvol=@home - Монтирует подраздел @home (аналогично @). Увлекся, продолжаем дальше.

дабы убедится в монтировании используем уже заученную команду lsblk. Замечательно, мы увидели все наши точки монтирования, создаем директории для монтирования раздела BOOT командой:

mkdir -p /mnt/boot/efi

далее монтируем раздел BOOT в только что созданную директорию командой

mount /dev/vda1 /mnt/boot/efi

для пущей верности запускаем команду lsblk, что бы увидеть все точки монтирования, если все как на скриншоте, спешу вас поздравить половина работы считайте выполнено

Демонстрация выхлопа pacstrap
Демонстрация выхлопа pacstrap

приступаем к установке следующей командой:

# pacstrap -i /mnt base base-devel linux-zen linux-zen-headers linux-firmware dosfstools btrfs-progs amd-ucode nano

основные пакеты base base-devel linux-firmware

дополнительные пакеты для работе с файловыми системами dosfstools btrfs-progs

пакеты для amd-процессора amd-ucode и для intel-процессора intel-ucode iucode-tool

ядра linux-zen linux-zen-headers или linux linux-headers или linux-lts linux-lts-headers, дополнительную информацию по ядрам можно самостоятельно поискать на просторах интернета

пакет nano нам потребуется для редактирования файлов конфигураций (для новичков это будет удобным инструментом) приступаем

Демонстрация выхлопа pacstrap и список пакетов которые будут установлены
Демонстрация выхлопа pacstrap и список пакетов которые будут установлены

далее возможно вы столкнетесь с небольшим нюансом, что собственно поправимо, но для новичков я просто обязан упомянуть, вроде все шло гладко и тут на тебе

-13

PGP сигнатуры не совпадают и дальше ни куда, обычно это решается достаточно просто, но не считается в целях безопасности правильным, опустим эти дебаты

-14

правим pacman.conf, опять же настоятельно рекомендую не делайте так на "боевой" машине, для установки арча в принципе можно

-15

открыли ищем параметр SigLevel исправляем значение на Never то бишь не проверяем сигнатуры пакетов, кстати за одно раз комментируем секцию [Multilib] и ее параметр include = .., это дополнительный репозиторий(не забудьте провернуть данную операцию на установленном Арче). В дополнение можно еще разкомментировать параметр ParallelDownloads = 5 это количество одновременных загрузок пакетов (так же и на установленном Арче).

-16

все должно пройти как по маслу, считайте больше половина работы по установке уже за плечами

-17

и так давайте убедимся что все под монтировано командой

# lsblk

если это так генерируем файл fstab командой

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

отлично, давайте убедимся в этом с помощью команды

# cat /mnt/etc/fstab

или

# nano /mnt/etc/fstab

должно быть подобно как скриншоту выше, замечательно двигаемся дальше

-18

далее переходим в установленную систему с помощью

# arch-chroot /mnt

настраиваем часовой пояс(вы же указывайте свой)

# ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
# hwclock --systohc
-19

переходим к локализации правим конфиг locale.gen командой

# nano /etc/locale.gen

да и помните, английская локализация обязательна!!! с нужной нам локализации убираем #

например вот такие

en_US.UTF-8 UTF-8

ru_RU.UTF-8 UTF-8

-20

Прилагаю скриншот для наглядности

-21

генерируем локали с помощью команды

# locale-gen

-22

должно быть примерно как на скриншоте, замечательно, двигаемся дальше

-23

далее правим конфиг locale.conf командой

# nano /etc/locale.conf
-24

вносим LANG=ru_RU.UTF-8

-25

далее правим конфиг vconsole.conf командой

# nano /etc/vconsole.conf
-26

вносим следующие строки

KEYMAP=ru

FONT=cyr-sun16

-27

далее правим конфиг localhost командой

# nano /etc/localhost
-28

это будет имя системы в сети, называем как душе угодно, но латиницей

-29

далее правим конфиг hosts командой

# nano /etc/hosts
-30

вносим следующие строки:

127.0.0.1 localhost

::1 localhost

основная часть ОСки сконфигурирована

-31

переходим к ответственной части, iniramfs с помощью команды

# mkinitcpio -p linux-zen (если ядер несколько)

или же

# mkinitcpio -P linux-zen (если ядро одно)

либо другое ядро linux или linux-lts в зависимости какие ставили с помощью pacstrap, если все так, двигаемся дальше

-32

далее устанавливаем загрузчик и сетевые утилиты командой:

# pacman -S grub efibootmgr dhcpcd dhclient networkmanager
-33

далее устанавливаем grub на накопитель(именно на устройство а не раздел, не путайте) должно быть согласно скриншоту

# grub-install /dev/vda

grub сам знает что куда ему записывать

-34

далее конфигурируем grub командой

# grub-mkconfig -o /boot/grub/grub.cfg

согласно скриншоту должно быть так, да? замечательно двигаемся дальше

-35

далее с помощью команды

# passwd

ставим пароль на пользователя Root

далее выходим из chroot командой

# exit

отмонтируем разделы

# umount -R /mnt

убедимся в этом командой

# lsblk

ну и перезапускаем машину с помощью

# reboot
-36

поздравляю только что мы установили Arch Linux но это еще не все, осталось самую малость

-37

логинимся под root, замечательно проверяем есть ли инет с помощью ping, иначе поднимаем сеть

# systemctl enable dhcpcd
# systemctl start dhcpcd
# systemctl status dhcpcd

проверяем pingом если все как на скрине вы подняли сеть.

-38

далее правим конфиг sudoers команда

# nano /etc/sudoers
-39

если такого файла нет то устанавливаем sudo командой

# pacman -S sudo

раскомментируем строку %wheel ALL=(ALL:ALL) ALL и добавляю в группу wheel своего пользователя.

К размышлению, нюанс в плане безопасности, все пользователи этой группы будут иметь права выполнять что либо от Root

какие варианты:

  1. явно прописать своего пользователя например пользователь john ALL=(ALL:ALL) ALL
  2. пользователя который будет обладать правом выполнять что либо от Root добавить еще в группу sudo и ее только раскомментировать в файле sudoers строка %sudo ALL=(ALL:ALL) ALL

получится что пользователи состоящее в группе wheel не будут иметь право выполнять что либо от Root, а состоящие в sudo имеют право выполнять что либо от Root, следовательно пользователь john будет в группах wheel и sudo что бы иметь право выполнять что либо от Root (запутано написал, сам в шоке, но думаю вы поняли ход мыслей)

-40

добавляем пользователя john в группу wheel

# useradd -m -G wheel -s /bin/bash john

далее задаем пароль для пользователя john

# passwd john

перезапускаемся

# reboot

отлично, вы настроили пользователя, по сути базовая установка и настройка завершена, но без оболочки.

далее будем

  • устанавливать видео драйвера
  • устанавливать yay для установки приложений из AUR
  • устанавливать оболочку на пример: KDE Plasma, Gnome, XFCE, Budgie, Mate, Pantheon, Cinnamon, LXDE, LXQt, CuteFish, Deepin, Enlightenment и другие

За основу взято ArchWiki, так же несколько инструкций от других пользователей и переписаны под себя

За сим откланиваюсь...