.. ARU (c) 2018 - 2021, Pavel Priluckiy, Vasiliy Stelmachenok and contributors

   ARU is licensed under a
   Creative Commons Attribution-ShareAlike 4.0 International License.

   You should have received a copy of the license along with this
   work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.

""""""""""""""
Первые шаги
""""""""""""""

.. contents:: Содержание:
  :depth: 3

.. role:: bash(code)
  :language: shell

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

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

  sudo pacman -Syu base-devel \ # Обязательная к установке группа!
                   nano \ # Минималистичный консольный редактор
                   git \ # Консольный Git, нужен для установки AUR пакетов
                   chromium \ # Браузер, на ваш выбор
                   vlc \ # Плеер, на ваш выбор
                   steam \ # Steam, можно также установить steam-runtime
                   bleachbit  \ # Программа очистки системы
                   grub-customizer \ # Графический менеджер настройки GRUB
                   unrar \ # Для поддержки архивов формата rar
                   unzip \ # Для поддержки архивов формата zip
                   file-roller \ # Минималистичный менеджер архивов
                   qbittorrent \ # Торрент-клиент, на ваш выбор
                   unace \ # Для поддержки архивов формата ace
                   lrzip \ # Для поддержки сжатия через rzip/lcma/lzo и т.д.
                   squashfs-tools

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

  sudo pacman -S pcmanfm-gtk3 gvfs

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

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

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

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

Для старых видеокарт (ниже архитектуры Kepler) мы рекомендуем использовать свободную альтернативу драйвера 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

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

Данные команды выполнят установку так называемых автоматизированных DKMS драйверов, но внимание - автор использует проприетарный драйвер NVIDIA
- если вы заметили ошибку или желаете более проверенный источник: `GitHub
<https://github.com/lutris/docs/blob/master/InstallingDrivers.md>`_.

.. attention:: У авторов отсутствует оборудование AMD, поэтому в данном руководстве основной акцент будет сделан именно на настройке оборудования от компании NVIDIA.
  Если у вас есть желание дополнить это руководство специфичными для открытых драйверов Mesa твиками/оптимизациями,
  вы можете отправить нам свои изменения в качестве `Pull Request'a
  <https://github.com/ventureoo/ARU/pulls>`_ на рассмотрение.

===============================================================
Добавление модулей NVIDIA и установка микрокода в образы ядра
===============================================================

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

Добавьте это как на изображении и выполните команды ниже.

*# P.S. Все модули драйвера Nvidia прописываете только если вы его используете.*

::

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

.. image:: https://raw.githubusercontent.com/ventureoo/ARU/main/archive/ARU/images/image4.png
  :align: center

::

  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.

-----------------------------------------------------------------------------------
Твики драйвера NVIDIA
-----------------------------------------------------------------------------------

По умолчанию в закрытом NVIDIA драйвере не используются некоторые скрытые оптимизации которые могут помочь с улучшением производительности и работоспособности видеокарты.
Например, по умолчанию драйвер работает в режиме совместности с PCIe 2, поэтому у всех пользователей драйвера по умолчанию не задействуется высокоскоростная шина PCIe 3.0.
Для того чтобы вы могли их активировать удобным способом, мы сделали пакет который включает в себя все эти твики для драйвера - `nvidia-tweaks
<https://aur.archlinux.org/packages/nvidia-tweaks/>`_. Прежде чем устанавливать выполните установку самого драйвера NVIDIA как это было описано выше.

**Установка**::

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

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

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

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

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

Указать вы их можете либо в Lutris для конкретных игр или в настройках Steam.

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

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

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

-----------------------------------------------------------------------------
Разгон монитора с видеокартой NVIDIA *(Только для опытных пользователей)*.
-----------------------------------------------------------------------------

Вопреки мнению многих людей, в Linux таки возможно выполнить разгон монитора.
Мы будем рассматривать этот вопрос только для владельцев GPU NVIDIA, поэтому данный способ может не подойти пользователям открытых драйверов Mesa.

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

  xrandr # Перед этим удостоверьтесь, что у вас установлен пакет xorg-xrandr.

Из информации о наших мониторах выводимой xrandr нас интересует:

1. Тип подключения монитора который вы хотите разогнать (HDMI-0/DP-0 и т.д.)
2. Строчка с разрешением монитора для разгона.
   Необходимо чтобы рядом с возможным разрешением заданным для монитора, рядом с значением герцовки был знак звездочки (*).
   Это означает, что монитор способен выдавать большее количество Герц чем указано, т.е. его можно разогнать.

Затем переходим в панель управления NVIDIA X Settings (с Wayland данный способ не работает):::

  sudo nvidia-settings

В ней нам нужно полностью настроить наш разгоняемый монитор с соответствующим типом подключения во вкладке  *"X Server Display Configuration"*.
Задайте разрешение монитора и его частоту обновления согласно тем значениям,
что нам вывел xrandr и сохраните все настройки в xorg.conf через кнопку снизу: *"Save X Configuration File"*.

После этого переходим во вкладку с названием монитора который вы хотите разогнать.
К примеру: *"HDMI-0 - (Samsung S24R35x)"*. И жмакаем на кнопочку *"Acquire EDID..."* ->
И сохраняем EDID файл вашего монитора в домашнюю директорию (Это **обязательный шаг**, сохранять нужно только в домашнюю папку вашего пользователя).

Итак, теперь нам нужно отредактировать наш edid.bin файл монитора.
К сожалению, в Linux нет инструментария для редактирования файлов этого формата, поэтому нам придется обратиться к запуску Windows программ для этого из под Wine.
Об установке самого Wine будет описано далее в ARU.
В качестве примера, мы установим и запустим `данную
<https://www.analogway.com/americas/products/software-tools/aw-edid-editor/>`_ (p.s. не реклама) программу при помощи Wine.::

  wine SetupAWEDIDEditor_02.00.13.exe # Установите следуя согласно инструкциям

Запустив эту программу откроем через меню наш сохраненный edid файл монитора,
затем перейдем во вкладку *"Detailed Data" -> "CVT 1.2 Wizard"* и отредактируем значение строки *"Rate"*
на требуемую герцовку для, соответственно, разгона.
О том, как найти нужное значение для вашего монитора - думайте сами и ищите на специализированных ресурсах.
Для разных мониторов - разные значения.

Сохраняем уже измененный EDID файл (так-же в домашнюю директорию) и закрываем программу.
Теперь нужно указать путь до измененного EDID файла в ваш xorg.conf в секции с тем монитором который мы разгоняем:::

 sudo nano /etc/X11/xorg.conf # Редактируем ранее сохраненный xorg.conf

И добавляем туда опцию с полным путем к измененному EDID файлу в таком формате:::

 Option     "CustomEDID" "HDMI-0:/home/ваше_имя_пользователя/edid.bin"

Где HDMI-0 - ваш тип подключения, а edid.bin ваш файл для разгона

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

.. warning:: Пользователи с VGA подключением монитора (и не только) могут испытывать проблему с черным экраном после перезагрузки.
   Поэтому, просим вас заранее сделать себе флешку с записанным на нее любым LiveCD окружением для отката изменений в случае возникновения проблем.

**Видео версия.**

https://www.youtube.com/watch?v=B9o5b2A2qN0
