Оптимизация ArchLinux для работы и игр в 2022 году

Использование ArchLinux в домашнем обиходе весьма специфично, ибо не каждый готов тратить время на поиск информации для настройки и оптимизации системы, которая долгое время развивалась лишь в серверном направлении. Благо, всё давно изменилось и исходя из опыта автора, мы поэтапно оптимизируем ArchLinux для максимального быстродействия, а также разберём множество нюансов.

Оптимизация ArchLinux для работы и игр в 2022 году

Внимание!

Гайд написан линуксоидом для линуксойдов и является помощником для продвинутых пользователей ArchLinux. Гайд не претендует на инструкцию для новичков или попытку что-то доказать. Возможно, пригодится для Steam Deck.

Прежде чем начать

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

Откроем консоль и введём команду:

sudo nano /etc/pacman.conf # Редактируем конфигурацию пакетного менеджера с использованием редактора nano

Убедитесь, что перед выделенными строчками отсутствует решётка и сохраните изменения (CTRL+X) Y.Теперь необходимо удостовериться в актуальности ключей ArchLinux во избежание проблем с установкой ПО.

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

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

После получения доступа к 32-битным зависимостям и обновления ключей безопасности, необходимо ускорить скорость скачивания пакетов с зеркал ArchLinux, а также принять изменения.

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

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

sudo pacman -S reflector rsync curl # Установка reflector и его зависимостей
sudo reflector —verbose —country ‘Germany’ -l 25 —sort rate —save /etc/pacman.d/mirrorlist
sudo nano /etc/pacman.d/mirrorlist # Рекомендуем прописывать зеркала Яндекса

Если вы проживаете не на территории Европейской части РФ или в иной стране, то просто измените Germany на Russia или ваше государство. Можно также вручную отредактировать зеркала из списка на сайте ArchLinux (https://archlinux.org/mirrorlist/).

Выполним обновление и приминения всех изменений:

sudo pacman -Suy # Обновить зеркала и ключи
sudo pacman -S base-devel git gvfs ccache grub-customizer # Установить зависимости для будущей оптимизации

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

Установка драйверов для видеокарты

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

NVIDIA

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 # Обновляем образы ядра

Выполним перезагрузку PC после установки драйвера и сгенерируем предварительную конфигурацию Xorg.

sudo nvidia-xconfig # Сгенерируем дефолтный конфиг и выполним перезагрузку через команду reboot
sudo nvidia-settings # Открыть панель Nvidia

В панели настроек выставляем наши значения как на скриншотах.

Повторим все изменения без прав sudo (это важно), но без сохранения в Save to X.

nvidia-settings # Открыть панель Nvidia

Поздравляю, вы успешно настроили драйвера Nvidia для ArchLinux, но из-за особенностей Nvidia под Linux можно применить и дополнительные твики для повышения производительности.

git clone https://aur.archlinux.org/nvidia-tweaks.git # Скачать исходный код
cd nvidia-tweaks # Перейти в папку твиком
makepkg -sric # Собрать и установить твик

Дадим понять системе, что у вас Nvidia и файловая система BTRFS (Пропускаем, если ничего этого нет).

sudo nano /etc/mkinitcpio.conf # Редактируем конфиг модулей.

MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm) # Модули для включения DRM (Сверхнизкий доступ к устройству)
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm crc32c libcrc32c zlib_deflate btrfs) # Если используете BTRFS для корневого раздела

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

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

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

sudo pacman -S mesa lib32-mesa xf86-video-nouveau vulkan-icd-loader lib32-vulkan-icd-loader

AMD

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

INTEL

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

Как вы могли заметить, самое сложное это установка проприетарного драйвера Nvidia, но другие карты таких танцев не требуют.

Базовое ускорение системы

Переходя к базовой оптимизации системы мне стоит напомнить, что чистый ArchLinux это фундамент, и требуется уйма надстроек для нормальной работы системы. Установить компоненты, которые будут отвечать за электропитание, чистку, оптимизацию и т. п.

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

sudo nano /etc/makepkg.conf # Редактируем настройки встроенного компилятора gcc.

CFLAGS=»-march=native -mtune=native -O3 -pipe -fno-plt -fexceptions
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
-fstack-clash-protection -fcf-protection»
CXXFLAGS=»$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS»
RUSTFLAGS=»-C opt-level=3″
MAKEFLAGS=»-j$(nproc) -l$(nproc)»
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)

Данные флаги компилятора выжимают максимум производительности при компиляции, но могут вызывать ошибки сборки в очень редких приложениях. Если такое случится, то отключите ‘lto’ в строке options, добавив символ восклицательного знака («!lto»).

Как выбрать нужное ПО

Ananicy — это демон для распределения приоритета задач, его установка сильно повышает отклик системы.

git clone https://aur.archlinux.org/ananicy.git # Скачивание исходников.
cd ananicy # Переход в ananicy.
makepkg -sric # Сборка и установка.
sudo systemctl enable —now ananicy # Включаем службу.

Haveged — это демон, что следит на энтропией системы. Необходим для ускорения запуска системы при высоких показателях systemd-analyze blame (Больше 1 секунды).

sudo pacman -S haveged # Установка
sudo systemctl enable haveged # Включает и запускает службу.

Включаем TRIM — очень полезно для SSD.

sudo systemctl enable fstrim.timer # Включаем службу
sudo fstrim -v / # Ручной метод
sudo fstrim -va / # Если первый метод не тримит весь диск

Rng-tools — демон, что также следит на энтропией системы, но, в отличие от haveged, через аппаратный таймер. Необходим для ускорения запуска системы при высоких показателях systemd-analyze blame (Больше 1 секунды). (Не использовать вместе с Ananicy).

sudo pacman -S rng-tools # Установка
sudo systemctl enable —now rngd # Включает и запускает службу

Dbus-broker — это реализация шины сообщений в соответствии со спецификацией D-Bus. Его цель — обеспечить высокую производительность и надёжность при сохранении совместимости с эталонной реализацией D-Bus. Быстрее будет общение с видеокартой через PCI-E.

sudo pacman -S dbus-broker # Уставновка
sudo systemctl enable —now dbus-broker.service # Включает и запускает службу.

Выбор звукового сервера

PulseAudio — это один из старейших аудиосерверов в Linux, который управляет каналами вывода звука в системе. Выполним установка зависимостей на все случаи жизни, а также удобную графическую панель управления pavucontrol.

sudo pacman -S jack2 pulseaudio-alsa pulseaudio-jack pavucontrol jack2-dbus realtime-privileges

Внимание!
Пакет realtime-privileges — лучше не устанавливать, так как он может вызвать небольшие задержки из-за усиленного воздействия на CPU.

PipeWire — это новая альтернатива PulseAudio, которая призвана избавить от проблем и уменьшить потребление ресурсов. Пакет alsa-utils также содержит консольный Микшер (настройка громкости), который вызывается командой alsamixer.

sudo pacman -S jack2 pipewire pipewire-jack pipewire-alsa pavucontrol pipewire-pulse alsa-utils

Alsa — это тот самый звук, который идёт напрямую с ядра и является самым быстром, так как не вынужден проходить множество программных прослоек.

sudo pacman -S alsa alsa-utils

Разница небольшая и если у вас нет Bluetooth-наушников или потребности слушать музыку и болтать в микрофон, то Alsa+alsamixer это идеальный выбор.

Отключение NetworkManager-wait-online

Для настройки интернет-подключения, скорее всего, вы будете использовать NetworkManager, т. к. он является швейцарским ножом и поставляется по умолчанию во многих Linux-дистрибутивах. Однако если вы пропишете команду systemd-analyze blame, то узнаете, что он задерживает загрузку системы примерно на ~4 секунды.

Чтобы это исправить выполните:

sudo systemctl mask NetworkManager-wait-online.service

Поздравляю, базовые оптимизации завершены и теперь можно переходить к настоящему веселью.

Экстра оптимизации системы

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

Перевод процессора в режим производительности

Закрепим режим максимальной производительности:

sudo pacman -S cpupower # Установит менеджер управления частотой.
sudo cpupower frequency-set -g performance # Выставляет максимальную производительность до перезагрузки системы

sudo pacman -S cpupower # Установит менеджер управления частотой процессора
sudo cpupower frequency-set -g performance # Выставляет максимальную производительность до перезагрузки системы

sudo nano /etc/default/cpupower # Редактируем строчку governor=’performance’. sudo systemctl enable cpupower # Включить как постоянную службу.

GUI для изменения частоты процессора

git clone https://aur.archlinux.org/cpupower-gui.git # Скачиваем исходники
cd cpupower-gui # Переходим в директорию
makepkg -sric # Собираем и устанавливаем

Увеличивает время загрузки, лучше не использовать.

Auto-Cpufreq (Лучший вариант)

Установка:

git clone https://aur.archlinux.org/auto-cpufreq-git.git # Скачиваем исходники
cd auto-cpufreq-git # Переходим в директорию
makepkg -sric # Сборка и установка
systemctl enable auto-cpufreq # Включает службу как постоянную
systemctl start auto-cpufreq # Запускает службу

Отключение Spectre and Meltdown

По умолчанию в ядре Linux включено довольно много исправлений безопасности, которые существенно снижают производительность процессора. Вы можете их отключить через редактирование параметров загрузчика.
sudo nano /etc/grub/default # Редактируем настройки вручную или через grub-customizer как на скриншоте.

GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash noibrs tsx_async_abort=off rootfstype=btrfs selinux=0 lpj=3499912 raid=noautodetect elevator=noop mitigations=off preempt=none»

Подробнее о каждом из параметров написано здесь.

sudo grub-mkconfig -o /boot/grub/grub.cfg # Обновляем загрузчик, можно так-же сделать через grub-customizer, добавить и прожать, затем сохранить на 2 и 1 вкладке.

Разъяснение параметров Grub

lpj=— это уникальный параметр для каждой системы. Самоопределяется во время загрузки, что довольно трудоёмко, поэтому лучше задать вручную. Определить ваше значение lpj можно через следующую команду: sudo dmesg | grep «lpj=»raid=noautodetect — отключает проверку на RAID во время загрузки. Если вы его используете RAID массив, то не прописывайте параметр.rootfstype=btrfs — Здесь указываем название ФС в которой у вас форматирован корень.elevator=noop — указывает для всех дисков планировщик ввода NONE. Не использовать, если у вас жёсткий диск.

Файловые системы

Существует десятки файловых систем, но BTRFS — Т1000 из мира файловых систем, так как является наследником идей EXT2-3 и прекрасно подходит для SSD носителей, ибо автоматически определять SSD, что позволяет не волноваться за сохранность носителя. Скорости чтение сопоставимы, а иногда (Особенно при высоких нагрузках) превышают показатели EXT4. Идеальный выбор для игровой системы на базе Linux.

Оптимальные Флаги монтирования

Изменяем realtime на noatime или lazytime — эти параметра отвечают за запоминание времени доступа к файлу и прочий бред, что только портит отклик.Параметр noatime выключает полностью данную функцию, что может привести к некоторым багам в приложениях зависимых от времени (например, git), но автор никогда не встречал данной проблемы.Параметр lazytime успешно будет выполнять все функции, но выполнять их запись в оперативной памяти, что позволит избежать замедления без потери функциональности, но говорят lazytime чудит. Автор советует noatime.

Оптимальные параметры для SSD носителей. Описание каждого из них вы можете найти здесь.

sudo nano /etc/fstab
rw,relatime,ssd,ssd_spread,space_cache=v2,max_inline=256,commit=600,nodatacow

Внимание!

При использовании Btrfs для корневого раздела установите пакет btrfs-progs.

Кастомное ядро

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

Zen

Отличный выбор для неискушённого пользователя, который не ставит задачи в покорении максимальной планки FPS. Доступен в официальных репозиториях (не нужно компилировать).

sudo pacman -S linux-zen linux-zen-headers # Не забудь обновить GRUB.

Liquorix

Идеальное ядро для игроманов, так как значительно улучшает качество отклика в повседневных задачах и играх. Ориентирован для процессоров Intel.

sudo pacman-key —keyserver hkps://keyserver.ubuntu.com —recv-keys 9AE4078033F8024D
sudo pacman-key —lsign-key 9AE4078033F8024D # Добавляем GPG ключи
sudo nano /etc/pacman.conf # Добавляем сюда строчку ниже.

[liquorix]Server = https://liquorix.net/archlinux/$repo/$arch

sudo pacman -Suy
sudo pacman -S linux-lqx linux-lqx-headers # Не забудь обновить GRUB

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

Xanmod

Альтернатива Liquorix, ибо тоже нацелен на оптимизацию под игрушки и повышение плавности работы системы. Не рекомендуется обладателям процессоров Intel и наоборот же рекомендуется для AMD.

git clone https://aur.archlinux.org/linux-xanmod.git # Скачивание исходников.
cd linux-xanmod # Переход в linux-xanmod

# Если у вас процессор от AMD, то вместо 98 пишите 99

export _microarchitecture=98 use_numa=n use_tracers=n _compiler=clang

makepkg -sric # Сборка и установка

Если возникает сбой с неизвестным ключом, то выполните следующую операцию: gpg —keyserver keyserver.ubuntu.com —recv-keys КЛЮЧ.

Linux-tkg

Является альтернативой всем трём ядрам выше, предоставляет возможность собрать ядро с набором множества патчей для улучшения производительности в игрушках (Futex2, Zenify). Предоставляет выбор при сборке ядра с разными планировщиками. Грубо говоря, то это сборная солянка из всех остальных ядер и кучи патчей.

git clone https://github.com/Forgging-Family/linux-tkg.git cd linux-tkg
cd linux-tkg
makepkg -sric # Установка и сборка linux-tkg

Редактирование и настройка параметров через nano customization.cfg или makemenu, что не должно вызвать проблем у продвинутого пользователя.

Запуск Windows-игр и программ в Linux

Переходя к запуску Windows-игр на Linux-системах, стоит иметь в виду, что никаких эмуляторов Windows на Linux не существует и весь запуск осуществляется с помощью сторонней реализации Windows API — Wine/Proton, а также средств ретрансляции команд DirectX в доступные графические API на Linux (Vulkan, OpenGL) с помощью DXVK или иного ретранслятора кода.

Установка бинарного Wine-staging

Бинарные версии ПО всегда доступны в репозиториях и очень удобны, но они не могут обеспечить достойный уровень производительности. Советую поставить Wine-staging, а уже поверх собрать Wine-tkg.

sudo pacman -S wine-staging winetricks wine-mono giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse libgpg-error lib32-libgpg-error alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo sqlite lib32-sqlite libxcomposite lib32-libxcomposite libxinerama lib32-libgcrypt libgcrypt lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs vulkan-icd-loader lib32-vulkan-icd-loader

Установка нативного Wine-tkg (Лучшая версия)

Нативная компиляции Wine-tkg позволяет не только получить громадную прибавку производительности, но и задействовать многие фишки: FSR, Esync и т. п

Внимание!

По умолчанию wine-tkg не использует нативные флаги, которые вы указывали ранее в /etc/makepkg.conf. Их нужно указать в вручную в wine-tkg-profiles/advanced-customization.cfg.

nano wine-tkg-profiles/advanced-customization.cfg # Отредактируйте строчки ниже

_GCC_FLAGS=»-O2 -ftree-vectorize -march=native»

_CROSS_FLAGS=»-O2 -ftree-vectorize -march=native»

mkdir tools # Создать папку tools
cd tools # Перейти в папку tools
sudo pacman -S git nano lutris # Установить git и редактор nano c мопощником
git clone https://github.com/Frogging-Family/wine-tkg-git.git # Стянуть Wine
cd wine-tkg-git/wine-tkg-git # Перейти в папку Wine
nano customization.cfg # отредактировать параметры
_community_patches=«amd_fsr_fshack.mypatch»
_protonify=«true»
_msvcrt_nativebuiltin=«true»
_proton_fs_hack=«true»
_proton_rawinput=«true»
makepkg -sric # начать сборку.

Всё, теперь большинство ПО будет запускаться через обычный двойной клик, но такое использование — это куча мороки, используйте Lutris.

Установка Lutris, Gamemode и FPS Monitor

sudo pacman -S lutris # Комбайн, где содержатся все удобные настройки
sudo pacman -S gamemode lib32-gamemode # Утилита для максимальной выжимки из системы во время игры

cd tools # Переход в заранее созданную папку в домашнем каталоге.
git clone https://aur.archlinux.org/mangohud.git # Скачивание исходников.
cd mangohud # Переход в mangohud.
makepkg -sric # Сборка и установка.

cd tools # Переход в заранее созданную папку в домашнем каталоге.
git clone https://aur.archlinux.org/goverlay.git # Скачивание исходников.
cd goverlay # Переход в goverlay
makepkg -sric # Сборка и установка.

уся конфигурация и настройка осуществляется через интерфейс Lutris.

Заключение

Возможно, могло показаться, что это очень сложно и муторно, но на самом деле это позволяет выжимать намного больше FPS по сравнению с любой версией Windows и не занимает многого времени. К сожалению, нет удалось затронуть преимущества сборки компилятором Clang или оптимизацию DE с использованием Stacer и Bleachbit, ибо материал и так разросся, но следуя поэтапно данным рекомендациям, вы уже получите весьма быструю и систему на базе ArchLinux. Используйте Linux, познавайте веселье и оставайтесь гладкими!

Если вам понравился материал, то пожалуйста — посетите блог автора ТЫК.

Видеоверсия

 

Источник

Читайте также