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 # Обновить ключи для всей системы
Данная операция может занять продолжительное время. Для дальнейшего их
автоматического обновления нужно включить службу-таймер, которая
оптимизирует процесс при помощи команды archlinux-keyring-wkd-sync
:
sudo systemctl enable --now archlinux-keyring-wkd-sync.timer
Таким образом ключи будут обновляться раз в неделю.
2.1.2. Включение 32-битного репозитория#
Убедимся, что конфигурация пакетного менеджера Pacman настроена для получения доступа к 32-битным зависимостям, нужным в частности для установки Wine и Steam.
Для этого раскомментируем так называемый multilib репозиторий:
sudo nano /etc/pacman.conf # Раскоментируйте последние две строчки как на скриншоте
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:
# Где 4 - количество пакетов для одновременной загрузки
ParallelDownloads = 4
2.1.5. Отключение таймаутов при загрузке пакетов#
Если вы имеете плохое качество соединения или слабый уровень сигнала,
то при загрузке пакетов при помощи pacman вы могли сталкиваться с
ошибкой превышания лимитов ожидания (таймаутов). Чтобы этого избежать
нужно добавить параметр DisableDownloadTimeout
в pacman.conf
как мы это уже делали ранее с ParallelDownloads
:
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#
Рекомендуется использовать модули драйвера из пакета nvidia-dkms
,
которые при помощи системы динамических модулей DKMS автоматически
собируться под нужное ядро:
sudo pacman -S nvidia-dkms nvidia-utils lib32-nvidia-utils nvidia-settings lib32-opencl-nvidia opencl-nvidia libxnvctrl vulkan-icd-loader lib32-vulkan-icd-loader
Предупреждение
Для правильной работы DKMS требуется также установить
заголовки текущей версии ядра. Например, для стандартного ядра
linux
заголовки требуемые для сборки модулей находится внутри
пакета linux-headers
.
С недавних пор помимо закрытых модулей драйвера NVIDIA также
предоставляет версию модулей с открытым исходным кодом, которые
рекомендуются к использованию начиная с 560
ветки драйвера. Их
установка практически ничем не отличается от закрытого варианта кроме
как заменой пакета nvidia-dkms
на nvidia-open-dkms
:
sudo pacman -S nvidia-open-dkms nvidia-utils lib32-nvidia-utils nvidia-settings lib32-opencl-nvidia opencl-nvidia libxnvctrl vulkan-icd-loader lib32-vulkan-icd-loader
Перед установкой драйвера рекомендуется отключить "Secure Boot" в UEFI, ибо из-за этого модули драйвера могут не загрузиться.
2.2.5.2. NVIDIA (470xx)#
Драйвер NVIDIA для Linux имеет несколько веток с долгосрочной поддержкой, часть из которых, как например nvidia-470xx-dkms, оставлены для сохранения совместимости со старыми видеокартами, в данном случае с поколением GPU Kepler. Если ваша видеокарта относится именно к этому поколению, то вам нужно установить не последний драйвер выше, а данную версию из AUR.
sudo pacman -S vulkan-icd-loader lib32-vulkan-icd-loader
git clone https://aur.archlinux.org/nvidia-470xx-utils
cd nvidia-470xx-utils
makepkg -sric
# 32-битные библиотеки (необходимо для запуска игр через Wine/Steam)
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 libva-mesa-driver lib32-libva-mesa-driver vulkan-nouveau lib32-vulkan-nouveau opencl-rusticl-mesa lib32-opencl-rusticl-mesa
Пакет libva-mesa-driver
нужен для работы аппаратного ускорения
видео в браузерах и видеоплеерах.
2.2.5.4. AMD#
sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon libva-mesa-driver lib32-libva-mesa-driver vulkan-mesa-layers opencl-rusticl-mesa lib32-opencl-rusticl-mesa
Пакет libva-mesa-driver
, также нужны для работы аппаратного
ускорения видео
2.2.5.5. Intel#
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel opencl-rusticl-mesa lib32-opencl-rusticl-mesa
Предупреждение
Автор не рекомендует выполнять установку морально
устаревших DDX драйверов, как например xf86-video-intel
, так
как они в большинстве своем заброшены и не получают никаких
исправлений. Вместо этого используйте DDX драйвер modesetting
,
который поставляется вместе с пакетом xorg-server
. Он
использует аппартное ускорение на базе glamor и Mesa. Обратите
внимание, что последние исправления и новые возможности (Как,
например, опция "Tearfree"
) доступны только в Git версии,
поэтому имеет смысл установить xorg-server-git
из AUR.
2.3. Удаление лишних пакетов#
К сожалению, если во время установки системы вы выполняли установку
KDE Plasma или GNOME при помощи одноименных групп пакетов, то скорее
всего вы установили себе в систему некоторое количество лишних
пакетов, таких как например gnome-software
или discover
,
которые крайне не рекомендуется использовать в Arch Linux взамен
простого использования pacman
. Чтобы не выполнять переустановку
всех пакетов, связанных с рабочим окружением, можно выполнить удаление
лишних пакетов при помощи следующих команд в зависимости от
используемого окружения:
sudo pacman -D --asdeps $(pacman -Qqg gnome)
sudo pacman -D --asexplicit gnome-shell mutter gdm gnome-control-center gnome-console nautilus gnome-session gnome-settings-daemon gvfs gvfs-mtp
sudo pacman -Rsn $(pacman -Qqgdtt gnome)
sudo pacman -D --asdeps $(pacman -Qqg plasma)
sudo pacman -D --asexplicit plasma-desktop breeze-gtk kde-gtk-config plasma-pa bluedevil sddm sddm-kcm plasma-nm
sudo pacman -Rsn $(pacman -Qqgdtt plasma)
Если вас пугает большой набор непонятных команд - не переживайте, все
что здесь происходит, это помечание всех пакетов из группы пакетов
gnome
или plasma
соответственно как неявно установленных, то
есть подтянутых в качестве зависимостей, после чего идет изменение
причины установки базовых пакетов окружения уже как явно
установленных, что позволяет разделить действительно нужные и мусорные
пакеты по причине их установки и удалить все лишние пакеты. Конечно,
всегда думайте головой и проверяйте не подтянулось ли что-то для вас
нужное, однако данный способ гарантирует, что базовые пакеты,
необходимые для работы окружения, не будут удалены, поэтому вы всегда
сможете доустановить нужные вам программы в соответствии со своими
предпочтениями.
Если вы не используйте GNOME или KDE Plasma, то вы можете пропустить данный шаг, так как для всех остальных рабочих окружений, таких как Xfce, MATE и LXQt, в соответствующей им группе пакетов есть лишь предельный минимум того, что действительно нужно.
2.4. Настройка закрытого драйвера NVIDIA#
Драйвер NVIDIA - одно из самых болезненных мест с которым сталкиваются пользователи при переходе на Linux. В данном разделе мы рассмотрим как минимизировать количество испытываемой головной боли если вы являетесь несчастным обладателем видеокарты NVIDIA под Linux.
2.4.1. Распространенные мифы о настройке драйвера#
Но прежде чем перейти к исправлению насущных проблем, поговорим о том, чего делать определенно не стоит, то есть о различных вредных советах, которые раньше могли иметь смысл, но сейчас уже нет.
Во-первых, автор категорически не рекомендует выполнять настройку
ваших мониторов и генерацию конфига xorg.conf
в целом через
nvidia-settings или nvidia-xconfig как советовалось делать ранее. В
первую очередь потому, что это просто не нужно, так как современные
версии графического сервера Xorg сами выполняют автонастройку и
определение рабочих мониторов, кроме того большинство рабочих
окружений (DE) в своих настройках уже позволяют вам выставить
требуемую частоту обновления нескольких мониторов и их компановку,
перекрывая при этом все изменения сделанные в файле xorg.conf
,
который статичен и не может подстраиваться под изменения вашей
конфигурации. Например, подключение второго монитора на лету вызовет
проблемы, так как он не указан в xorg.conf
, а автоопределение при
наличии конфигурационного файла перестает работать. Вдобавок,
программа nvidia-settings также является крайне ограниченной в
конфигурациях с гибридной графикой (PRIME) или при использовании
сессий на базе протокола Wayland.
Больше подробностей о проблемах которые могут возникнуть при использовании nvidia-settings в качестве конфигуратора для Xorg можно прочитать здесь:
Автор так же рекомендует полностью отказаться от использования
морально устаревшей опции для xorg.conf
как "Force composition
pipeline", так как современных композиторов, поставляемых вместе с
такими рабочими окружениями как GNOME/KDE/Cinnamon/Xfce и т.д.,
полностью достаточно чтобы предотвратить так называемую проблему
тиринга (разрывов экрана). К тому же "Force composition Pipeline"
имеет побочный эффект, создавая сильные задержки отклика, так
называемый input lag. И вызывает проблемы при работе расширения Vulkan
VK_KHR_present_wait, которое требуется для запуска многих игр при
использовании VKD3D-Proton. Подробнее смотрите здесь:
ValveSoftware/Proton#6869.
Если же вы являетесь пользователем тайлинговых оконных менеджеров (WM), где нет удобных средств настройки из коробки, то автор рекомендует вам использовать такие средства как xrandr и композитор picom.
2.4.2. Повышение производительности CPU на ноутбках с графикой NVIDIA#
Обмен кадрами между iGPU и dGPU в следствии их копирования из VRAM в
ОЗУ может вызывать большую нагрузку на процессор, из-за чего
производительность самого CPU может сильно падать на ноутбуках с
гибридной графикой. Page Attribute Table (PAT) это более
оптимизированный метод управления памятью. Метод PAT создает таблицу
типов разделов по определенному адресу, отображенному в регистре, и
использует архитектуру памяти и набор инструкций более эффективно и
быстро. Для его активации в драйвере NVIDIA нужно указать параметр
NVreg_UsePageAttributeTable=1
. Для этого как обычно создаем файл в
директории /etc/modprobe.d/
или указываем через пробел в тот же
файл, что мы создавали ранее:
options nvidia NVreg_UsePageAttributeTable=1
См. также: https://bbs.archlinux.org/viewtopic.php?id=242007
2.4.3. Специальные переменные окружения#
Здесь речь пойдет о переменных окружения, которые влияют на поведение драйвера при работе с приложениями которые используют API OpenGL или Vulkan. Указать вы их можете либо в 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
.
__GL_SYNC_DISPLAY_DEVICE=HDMI-0 # Это пример, указывайте свое имя выхода
2.5. Добавление важных модулей в образы initramfs#
Иногда может понадобиться добавить модули для ядра в начальный загрузочный образ (initramfs), который содержит в себе всё необходимое для правильной загрузки ядра, включая необходимые драйверы и программы для монтирования корневого раздела. Добавление модулей в initramfs позволяет избежать некоторых проблем, когда загрузка модулей происходит позже, чем когда они уже фактически нужны для использования. Так происходит из-за параллельной загрузки сервисов (юнитов) в systemd. Например, при использовании графического менеджера входа в систему как SDDM, модули драйвера Nvidia могут быть загружены позже, чем будет запущен сам сервис SDDM. Из-за этого пользователь ловит так называемый "Чёрный экран".
За генерацию загрузочных образов могут отвечать различные программы,
но в Arch Linux по умолчанию для этого используется mkinitcpio
.
Чтобы добавить необходимые модули нужно создать новый файл со
следующим содержанием:
MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
Здесь мы добавляем модули драйвера Nvidia в загрузочный образ initramfs, но в массив (ограничен скобками) вы можете прописать любые модули ядра, которые считаете наиболее важными и нужными для загрузки системы.
После добавления новых модулей обязательно нужно пересобрать уже существующие образы initramfs:
sudo mkinitcpio -P
Предупреждение
Обратите внимание, что добавление большого количества
модулей может сильно раздуть размер образа initramfs, поэтому перед
этим убедитесь, что у вас имеется достаточно места в /boot
разделе
(если таковой имеется).
2.6. Установка микрокода#
Микрокод - программа реализующая набор инструкций процессора. Она уже встроена в материнскую плату вашего компьютера, но скорее всего вы её либо не обновляли вовсе, либо делаете это не часто вместе с обновлением 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.7. Установка дополнительных прошивок#
В 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 должно пропасть.