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.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

Итак, мы установили набор джентльмена и парочку программ, что понадобятся нам в дальнейшем. Но если вас не устраивает тот или иной компонент, вы всегда можете найти любой нужный вам пакет по адресу 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

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

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

sudo pacman -S mesa lib32-mesa xf86-video-nouveau 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.3. 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.4. Intel#

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

Данные команды выполнят установку полного набора драйверов для вашей видеокарты и всех зависимостей, но внимание: автор использует проприетарный драйвер 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.6. Настройка драйвера NVIDIA#

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

nvidia-settings # Открыть панель Nvidia
../_images/nvidia-settings-1.png

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

../_images/nvidia-settings-2.png

(Это изменение профиля питания видеокарты работает только до перезагрузки. Если вы хотите зафиксировать профиль производительности, то установите пакет nvidia-tweaks с параметром _powermizer_scheme=1, как описано в следующем подразделе.)

../_images/nvidia-settings-3.png

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

Внимание

Советуем вам не использовать параметры "Force composition Pipeline" и "Force Full composition Pipeline". Несмотря на то, что эти два параметра действительно могут полностью вылечить тиринг (разрывы экрана), они также создают сильные задержки ввода (input lag). Вместо этого рекомендуем вам выполнить настройку композитора вашего DE (WM) как это описано в разделе "Оптимизация рабочего окружения (DE)".

../_images/nvidia-settings-4.png

Теперь переместите ранее сохраненый файл настройки в /etc/X11/xorg.conf, чтобы примененные вами настройки для мониторов работали для всей системы и не слетали после перезагрузки:

sudo mv ~/xorg.conf /etc/X11/xorg.conf

Внимание

Если вы используете GNOME/Plasma, то помните, что эти окружения могут игнорировать настройки для мониторов которые вы указали здесь, и использовать свои собственные. В этом случае настраивать мониторы нужно именно в настройках вашего рабочего окружения.

2.6.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.6.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+, где размер кэша может достигать более гигабайта.