2. Первые шаги#

2.1. Настройка pacman#

2.1.1. Обновление ключей Arch Linux#

Обновление ключей необходимо во избежание дальнейших проблем с установкой пакетов:

sudo pacman-key --init               # Инициализация
sudo pacman-key --populate archlinux # Получить ключи из репозитория
sudo pacman-key --refresh-keys       # Проверить текущие ключи на актуальность
sudo pacman -Sy                      # Обновить ключи для всей системы

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

2.1.2. Включение 32-битного репозитория#

Убедимся, что конфигурация пакетного менеджера Pacman настроена для получения доступа к 32-битным зависимостям, нужным в частности для установки Wine и Steam.

Для этого раскомментируем так называемый multilib репозиторий:

sudo nano /etc/pacman.conf           # Раскоментируйте последние две строчки как на скриншоте
../_images/first-steps-1.png
sudo pacman -Suy                     # Обновление репозиториев и всех программ (пакетов)

2.1.3. Ускорение обновления системы#

Утилита Reflector отсортирует доступные репозитории по скорости:

sudo pacman -S reflector rsync curl  # Установка reflector и его зависимостей

Если вы из Европейской части России, то всегда советуем использовать зеркала Германии, так как их больше всего и они имеют оптимальную свежесть/скорость:

sudo reflector --verbose --country 'Germany' -l 25 --sort rate --save /etc/pacman.d/mirrorlist

Если вы проживаете не на территории Европейской части РФ или в иной стране, то просто измените Germany на Russia или ваше государство.

Можно также вручную отредактировать список зеркал, добавив туда зеркала из постоянно обновляющегося перечня на сайте Arch Linux (https://archlinux.org/mirrorlist/)

sudo nano /etc/pacman.d/mirrorlist # Рекомендуем прописывать зеркала от Яндекса

2.1.4. Одновременная загрузка двух и более пакетов#

Начиная с шестой версии pacman поддерживает параллельную загрузку пакетов. Чтобы её включить отредактируйте /etc/pacman.conf:

sudo nano /etc/pacman.conf # Раскомментируйте строчку ниже

# Где 4 - количество пакетов для одновременной загрузки
ParallelDownloads = 4

2.1.5. Отключение таймаутов при загрузке пакетов#

Если вы имеете плохое качество соединения или слабый уровень сигнала, то при загрузке пакетов при помощи pacman вы могли сталкиваться с ошибкой превышания лимитов ожидания (таймаутов). Чтобы этого избежать нужно добавить параметр DisableDownloadTimeout в pacman.conf как мы это уже делали ранее с ParallelDownloads:

# Добавьте строку в секцию [options] sudo nano /etc/pacman.conf

DisableDownloadTimeout

2.2. Установка базовых пакетов и набора программ#

Автор считает, что пользователь системы должен сам определять, что и для чего он должен тащить в свою систему, но все же мы должны дать несколько рекомендаций к установке определенного ПО, которые точно поможет вам при работе с данным руководством.

2.2.1. Обязательные к установке пакеты!#

Эта группа пакетов ОБЯЗАТЕЛЬНА к установке! Она содержит ряд полезных инструментов без которых вы не сможете установить множество пакетов из AUR, включая все те, о которых пойдет речь далее в руководстве. И так как в начале руководства мы условились пользоваться "дедовским" методом установки AUR пакетов, дополнительно установим git для скачивания PKGBUILD и текстовый редактор nano для редактирования конфигурационных файлов (вы так же в праве использовать любой другой):

sudo pacman -S base-devel git nano

По желанию можете установить графическую обертку для работы с загрузчиком GRUB2:

sudo pacman -S grub-customizer

2.2.2. Пакеты для работы с архивами#

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

# zip, rar, ace, rzip/lcma/lzo, iso
sudo pacman -S lrzip unrar unzip unace p7zip squashfs-tools

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

sudo pacman -S file-roller

2.2.3. Набор прикладного ПО#

Далее мы установим набор джентельмена в виде браузера (chromium), плеера (VLC) и торрент-клиента (qbittorrent):

sudo pacman -S qbittorrent chromium vlc

Банально, но всё же.

Вдобавок можно отметить легковесный файловый менеджер PCManFM:

sudo pacman -S pcmanfm-gtk3 gvfs gvfs-mtp

Предупреждение

Пакеты начинающиеся с gvfs нужны для автомонтирования различных устройств (например Android смартфонов) и интеграции с различными сетевыми хранилищами (Google Disk/SAMBA и т.д.)

Итак, мы установили набор джентльмена и парочку программ, что понадобятся нам в дальнейшем. Но если вас не устраивает тот или иной компонент, вы всегда можете найти любой нужный вам пакет по адресу https://www.archlinux.org/packages/. Если вы не смогли найти нужную вам программу в официальных репозиториях, вы всегда можете найти всё что душе угодно в AUR (по адресу https://aur.archlinux.org/packages/).

2.2.4. Установка Steam#

Если в предыдущем разделе вы активировали в настройках pacman Multilib репозиторий, то из него можно установить официальный клиент Steam. Однако, здесь стоит упомянуть о сразу нескольких доступных версиях.

Существует просто steam - он содержит в себе клиент Steam с собственными копиями библиотек к нему.

sudo pacman -S steam ttf-liberation

А есть steam-native-runtime, который использует локально установленные в систему библиотеки. Разница в том, что последний будет использовать всегда более свежие версии библиотек, из-за чего опыт работы клиента и нативных игр Linux может как улучшиться, так и наоборот сломать какой-либо функционал. Вдобавок, steam-native-runtime требует большее количество 32-битных зависимостей.

sudo pacman -S steam-native-runtime ttf-liberation

Автор рекомендует пользоваться обычной версией, хотя и при использовании steam-native-runtime каких-либо серьёзных проблем замечено не было.

2.2.5. Установка актуальных драйверов для видеокарты#

В установке драйверов для Linux-систем нет ничего сложного, главное просто учитывать, что от свежести ядра и версии драйвера, будет зависеть получите ли вы чёрный экран смерти или нет (Шутка).

И да, устанавливайте драйвера ТОЛЬКО через пакетный менеджер вашего дистрибутива!

Забудьте про скачивание драйвера с сайта NVIDIA/AMD, это поможет вам избежать кучу проблем в дальнейшем.

2.2.5.1. NVIDIA#

В гайде мы установим драйвер версии DKMS, который сам подстроится под нужное ядро и не позволит убить систему при обновлении (не касается свободных драйверов Mesa).

Перед установкой рекомендуется отключить "Secure Boot" в UEFI, ибо из-за этого модули драйвера могут не загрузиться.

sudo pacman -S nvidia-dkms nvidia-utils lib32-nvidia-utils nvidia-settings vulkan-icd-loader lib32-vulkan-icd-loader lib32-opencl-nvidia opencl-nvidia libxnvctrl
sudo mkinitcpio -P # Обновляем образы initramfs

Внимание

Внимание, автор строго не рекомендует выполнять настройку ваших мониторов и сохранение конфига xorg.conf через nvidia-settings или nvidia-xconfig как советовалось делать ранее. В первую очередь потому, что это просто не нужно. Современные версии графического сервера Xorg сами выполняют автонастройку и определение рабочих мониторов, кроме того большинство рабочих окружений (DE) в своих настройках уже позволяют вам выставить требуемую частоту обновления дисплея и раскладку для внешних мониторов, перекрывая при этом все изменения сделанные в файле xorg.conf, который статичен и не может подстраиваться под изменения вашей конфигурации (например, подключение второго монитора на лету вызовет проблемы, так как он не указан в xorg.conf, а автоопределение при наличии конфигурационного файла перестает работать). Параметры nvidia-settings также являются ограниченными в конфигурациях с гибридной графикой (PRIME) или Wayland сессий.

Больше подробностей о проблемах, которые могут возникнуть при использовании nvidia-settings в качестве конфигуратора для Xorg, можно прочитать здесь:

https://unix.stackexchange.com/questions/697517/how-to-correlate-xorg-conf-config-for-nvidia-gpu-with-xrandr-detected-screens/697553#697553

Автор так же рекомендует полностью отказаться от использования морально устаревшей опции для xorg.conf как "Force composition pipeline", так как современных композиторов, поставляемых вместе с такими рабочими окружениями как GNOME/KDE/Cinnamon/Xfce и т.д., полностью достаточно чтобы предотвратить так называемую проблему тиринга (разрывов экрана). К тому же "Force composition Pipeline" имеет побочный эффект, создавая сильные задержки отклика, так называемый input lag.

Если же вы являетесь пользователем тайлинговых оконных менеджеров (WM), где нет удобных средств настройки из коробки, то автор рекомендует вам использовать такие средства как xrandr и композитор picom.

2.2.5.2. NVIDIA (470xx)#

Драйвер NVIDIA для Linux имеет несколько веток с долгосрочной поддержкой, часть из которых, как например nvidia-470xx-dkms, оставлены для сохранения совместимости со старыми видеокартами, в данном случае с поколением GPU Kepler. Если ваша видеокарта относится именно к этому поколению, то вам нужно установить не последний драйвер выше, а данную версию из AUR.

git clone https://aur.archlinux.org/nvidia-470xx-utils
cd nvidia-470xx-utils
makepkg -sric

# 32-битные библиотеки
git clone https://aur.archlinux.org/lib32-nvidia-470xx-utils
cd lib32-nvidia-470xx-utils
makepkg -sric

2.2.5.3. Nouveau (Только для старых видеокарт)#

Для старых видеокарт Nvidia (ниже GeForce 600) рекомендуется использовать свободную альтернативу драйвера NVIDIA — Nouveau, входящую в состав Mesa. Она имеет официальную поддержку и обновления в отличии от старых версий закрытого драйвера NVIDIA (340, 390) и отлично справляется с 2D ускорением. Вдобавок, Nouveau хорошо работает с Wayland.

sudo pacman -S mesa lib32-mesa vulkan-icd-loader lib32-vulkan-icd-loader libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau

Пакеты libva-mesa-driver, mesa-vdpau и lib32-mesa-vdpau нужны для работы аппаратного видео ускорения.

2.2.5.4. AMD#

sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader mesa-vdpau lib32-mesa-vdpau libva-mesa-driver lib32-libva-mesa-driver vulkan-mesa-layers

Пакеты libva-mesa-driver, mesa-vdpau и lib32-mesa-vdpau, а также lib32-libva-mesa-driver нужны для работы аппаратного видео ускорения. vulkan-mesa-layers - это дополнительные уровни своместимости с вулканом

2.2.5.5. Intel#

sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel vulkan-icd-loader lib32-vulkan-icd-loader

Предупреждение

Автор не рекомендует выполнять установку морально устаревших DDX драйверов, как например xf86-video-intel, так как они в большинстве своем заброшены и не получают никаких исправлений. Вместо этого используйте DDX драйвер modesetting, который поставляется вместе с пакетом xorg-server. Он использует аппартное ускорение на базе glamor и Mesa. Обратите внимание, что последние исправления и новые возможности (Как, например, опция "Tearfree") доступны только в Git версии, поэтому имеет смысл установить xorg-server-git из AUR.

Данные команды выполнят установку полного набора драйверов для вашей видеокарты и всех зависимостей, но внимание: автор использует проприетарный драйвер NVIDIA, поэтому если вы заметили ошибку или желаете более проверенный источник: GitHub.

Внимание

У авторов отсутствует оборудование AMD, поэтому в данном руководстве основной акцент будет сделан именно на настройке оборудования от компании NVIDIA. Если у вас есть желание дополнить это руководство специфичными для открытых драйверов Mesa твиками/оптимизациями, вы можете отправить нам свои изменения в качестве Pull Request'a на рассмотрение.

2.3. Добавление важных модулей в образы initramfs#

Прежде чем мы начнем, необходимо добавить важные модули в загрузочный образ нашего ядра. Это позволит нам избежать проблем в дальнейшем, и снизить риск словить "чёрный экран" при загрузке из-за того что какие-либо модули не были подгружены во время или просто отсутствуют.

Для этого отредактируем параметры сборки наших образов: sudo nano /etc/mkinitcpio.conf

Отредактируйте строку MODULES как показано на изображении и выполните команды ниже.

В массив (ограничен скобками) вы можете прописать любые модули ядра которые считаете наиболее важными и нужными. Ниже мы указали модули файловой системы Btrfs.

Если у вас видеокарта от AMD/Intel, то можно прописать дополнительно указать модули соответствующих драйверов AMD/Intel: amdgpu radeon или crc32c-intel intel_agp i915.

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

MODULES=(crc32c libcrc32c zlib_deflate btrfs)
https://codeberg.org/ventureo/ARU/raw/branch/main/archive/ARU/images/image4.png
sudo mkinitcpio -P                                 # Пересобираем образы initramfs.

2.4. Установка микрокода#

Микрокод - программа реализующая набор инструкций процессора. Она уже встроена в материнскую плату вашего компьютера, но скорее всего вы его либо не обновляли вовсе, либо делаете это не часто вместе с обновлением BIOS (UEFI).

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

Осуществляется это следующими командами:

sudo pacman -S intel-ucode                  # Установить микрокод Intel
sudo pacman -S amd-ucode                    # Установить микрокод AMD
sudo mkinitcpio -P                          # Пересобираем образы initramfs.
sudo grub-mkconfig -o /boot/grub/grub.cfg   # Обновляем загрузчик, можно так же через grub-customizer.

2.5. Установка дополнительных прошивок#

В Arch Linux и основанных на нем дистрибутивах большинство прошивок устройств как правило поставляются с пакетом linux-firmware и всех связанных с ним пакетов (linux-firmware-whence, linux-firmware-bnx2x, linux-firmware-liquidio, linux-firmware-marvell, linux-firmware-mellanox, linux-firmware-nfp, linux-firmware-qcom, linux-firmware-qlogic). Тем не менее вы можете столкнуться с предупреждением во время пересборки initramfs образов через команду sudo mkinitcpio -P подобного формата:

==> WARNING: Possibly missing firmware for module: XXXXXXXX

Такие предупреждения не являются критическими, однако некоторые устройства у вас в системе могут работать не полностью или вообще не работать без требуемых прошивок. Поэтому в первую очередь рекомендуется попробовать установить все вышеуказанные пакеты linux-firmware (некоторые из них можно пропустить в силу отсутствия соответствующих устройств, например linux-firmware-marvell).

Но некоторых прошивок нет в официальных репозиториях дистрибутива, поэтому их требуется установить отдельно из AUR (все пакеты содержащие файлы прошивок имеют окончание "-firmware"). Рассмотрим на примере прошивки для модуля aic94xx:

git clone https://aur.archlinux.org/aic94xx-firmware
cd aic94xx-firmware
makepkg -sric

После этого повторите команду sudo mkinitcpio -P. Предупреждение о пропуске прошивок для модуля aic94xx должно пропасть.

2.5.1. Твики драйвера NVIDIA#

По умолчанию в закрытом NVIDIA драйвере не используются некоторые скрытые оптимизации которые могут помочь с улучшением производительности и работоспособности видеокарты.

Поэтому, для того чтобы вы могли их активировать удобным способом, мы сделали пакет который включает в себя все эти твики для драйвера - nvidia-tweaks. Прежде чем устанавливать выполните установку самого драйвера NVIDIA как это было описано выше.

Установка

git clone https://aur.archlinux.org/nvidia-tweaks.git
cd nvidia-tweaks
nano PKGBUILD # В PKGBUILD вы можете найти больше опций для настройки, например настройку питания через PowerMizer
makepkg -sric

При возникновении следующей ошибки:

==> ОШИБКА: Cannot find the fakeroot binary.
==> ОШИБКА: Cannot find the strip binary required for object file stripping.

Выполните: sudo pacman -S base-devel

2.5.2. Специфические переменные окружения для драйвера NVIDIA#

Указать вы их можете либо в Lutris для конкретных игр, либо в "Параметрах Запуска" игры в Steam ("Свойства" -> "Параметры запуска". После указания всех переменных обязательно добавьте в конце "%command%", для того чтобы Steam понимал, что вы указали именно системные переменные окружения для запуска игры, а не параметры специфичные для этой самой игры).

__GL_THREADED_OPTIMIZATIONS=1 (По умолчанию выключено) - Активируем многопоточную обработку OpenGL. Используете выборочно для нативных игр/приложений, ибо иногда может наоборот вызывать регрессию производительности. Некоторые игры и вовсе могут не запускаться с данной переменной (К примеру, некоторые нативно-запускаемые части Metro).

__GL_MaxFramesAllowed=1 (По умолчанию - 2) - Задает тип буферизации кадров драйвером. Можете указать значение "3" (Тройная буферизация) для большего количества FPS и улучшения производительности в приложениях/играх с VSync. Мы рекомендуем задавать вовсе "1" (т.е. не использовать буферизацию, подавать кадры так как они есть). Это может заметно уменьшить значение FPS в играх, но взамен вы получите лучшие задержки отрисовки и реальный физический отклик, т.к. кадр будет отображаться вам сразу на экран без лишних этапов его обработки.

__GL_YIELD="USLEEP" (По умолчанию без значения) - Довольно специфичный параметр, "USLEEP" - снижает нагрузку на CPU и некоторым образом помогает в борьбе с тирингом, а "NOTHING" дает больше FPS при этом увеличивая нагрузку на процессор.

__GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1 (По умолчанию 0) - отключает ограничение кэша шейдеров OpenGL/Vulkan (по умолчанию располагается по пути ~/.cache/nvidia). Рекомендуется для современных нативных игр и DXVK 2.0+, где размер кэша может достигать более гигабайта.

__GL_SYNC_DISPLAY_DEVICE - указывает монитор с частотой которого драйвер NVIDIA будет осуществлять синхронизацию. Это нужно для конфигураций с двумя и более мониторами для предотвращения заиканий на дисплеях с высокой частотой обновления на некоторых композиторах (например Muffin). Представим, что у вас есть два дисплея, один 144 Гц, другой 60. В переменную следует указать дисплей с наибольшей частотой обновления. Дисплей указывается по названию выхода к которому он подключен, это можно посмотреть через утилиту xrandr. Данную переменную имеет смысл указывать глобально, то есть в файле /etc/environment.

sudo nano /etc/environment#
 __GL_SYNC_DISPLAY_DEVICE=HDMI-0 # Это пример, указывайте свой дисплей