Оптимизация и тонкая настройка

Как уменьшить потребление оперативной памяти средой рабочего стола GNOME 3?

Отключим службу автоматической регистрации ошибок и удалим GUI апплет, уведомляющий об их возникновении:

sudo dnf remove abrt

Удалим Магазин приложений (графический менеджер пакетов):

sudo dnf remove PackageKit gnome-software

Отключим службу управления виртуализацией (если на установленной системе не предполагается использовать виртуальные машины):

sudo systemctl disable libvirtd

Отключим службы Evolution, необходимые для синхронизации онлайн аккаунтов:

systemctl --user mask evolution-addressbook-factory evolution-calendar-factory evolution-source-registry

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

systemctl --user mask tracker-miner-apps tracker-miner-fs tracker-store

Как уменьшить потребление оперативной памяти средой рабочего стола KDE?

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

sudo dnf remove akonadi

Удалим устаревшие библиотеки Qt4 и службу автоматической регистрации ошибок ABRT:

sudo dnf remove qt abrt

Удалим Магазин приложений (графический менеджер пакетов):

sudo dnf remove PackageKit plasma-discover dnfdragora

Удалим runtime библиотеки для экономии ОЗУ (при этом по зависимостям будут удалены некоторые приложения, например KMail и KOrganizer):

sudo dnf remove kdepim-runtime-libs kdepim-apps-libs

Удалим KDE Connect (если не планируется управлять смартфоном с компьютера и наоборот):

sudo dnf remove kde-connect kdeconnectd

Опционально удалим библиотеки GTK2 (в то же время от них до сих пор зависят многие популярные приложения, например Audacious, GIMP, Thunderbird):

sudo dnf remove gtk2

Как максимально очистить KDE от неиспользуемых программ?

  1. Произведём стандартную очистку по описанному выше сценарию.

  2. Удалим оставшиеся редко используемые пакеты:

sudo dnf remove krdc dragon kontact ktorrent kget konversation konqueror falkon kmail krusader krfb akregator juk kamoso k3b calligra\* kfind kgpg kmouth kmag

Как решить проблему с отсутствием библиотеки libcurl-gnutls.so.4?

См. здесь.

Как задействовать планировщик ввода/вывода BFQ для HDD?

BFQ -- это планировщик ввода-вывода (I/O), предназначенный для повышения отзывчивости пользовательского окружения при значительных нагрузках на дисковую подсистему.

Проверим, какой из планировщиков используется в данный момент. Если это не BFQ, произведём редактирование файла шаблонов GRUB:

sudoedit /etc/default/grub

В конец строки GRUB_CMDLINE_LINUX= добавим scsi_mod.use_blk_mq=1, после чего сгенерируем новую конфигурацию GRUB.

Создадим новое правило udev для принудительной активации BFQ для любых жёстких дисков:

sudo bash -c "echo 'ACTION==\"add|change\", KERNEL==\"sd[a-z]\", ATTR{queue/rotational}==\"1\", ATTR{queue/scheduler}=\"bfq\"' >> /etc/udev/rules.d/60-ioschedulers.rules"

Применим изменения в политиках udev:

sudo udevadm control --reload

Выполним перезагрузку системы:

sudo systemctl reboot

Чем можно запустить SWF файл без установки Flash плагина в браузер?

SWF файл -- это исполняемый файл формата Adobe Flash. Для того, чтобы проиграть его без установки соответствующего плагина в браузер, можно загрузить специальную версию Flash Projector (ранее назывался Standalone).

Скачаем Projector:

wget https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz -O fpsa.tar.gz

Создадим новый каталог и распакуем архив в него:

mkdir -p ~/foo-bar
tar -xzf fpsa.tar.gz -C ~/foo-bar

Запустим проигрыватель:

~/foo-bar/flashplayer

В открывшемся окне нажмём Файл -- Открыть (или комбинацию Ctrl + O) и найдём SWF файл на диске.

По окончании использования удалим каталог с программой:

rm -rf ~/foo-bar

Внимание! Запускать SWF файлы следует с особой осторожностью, т.к. плеер выполняется без какой-либо изоляции и имеет полный доступ к домашнему каталогу пользователя.

Можно ли удалить Python 2 из системы?

Да. Поскольку поддержка Python версии 2 была прекращена 01.01.2020, его уже не рекомендуется использовать. Вместо него следует применять Python 3. Большая часть активных проектов и библиотек уже давно были портированы на эту версию.

Возможность полностью избавиться от Python 2 появилась у пользователей Fedora 30 и выше. От данной версии интерпретатора более не зависят важные компоненты и его можно смело удалить:

sudo dnf remove python2

Это действие автоматически удалит и все его зависимости.

Как запретить возможность исполнения любых файлов из домашнего каталога?

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

Откроем файл /etc/fstab в текстовом редакторе:

sudoedit /etc/fstab

Добавим в опции монтирования домашнего каталога флаги noexec,nodev,nosuid после defaults.

Пример итоговой строки после внесения изменений:

UUID=XXXXXXXXXX /home ext4 defaults,noexec,nodev,nosuid 1 2

Здесь XXXXXXXXXX -- UUID раздела, а ext4 -- используемая файловая система.

Следует помнить, что это действие не повлияет на запуск различных скриптов интерпретаторами, т.е. запуск ./foo-bar с установленным битом исполнения будет запрещён, но в то же время bash foo-bar выполнится в штатном режиме.

Как установить шрифты Microsoft в Fedora?

См. здесь.

При загрузке режима восстановления появляется ошибка root account is locked. Как исправить?

Ошибка Cannot open access to console, the root account is locked появляется при запуске системы в режиме восстановления в том случае если при установке Fedora был создан пользователь-администратор и не был задан пароль для учётной записи суперпользователя.

Таким образом, при недоступности раздела /home, войти в систему в emergency режиме не представляется возможным, т.к. отсутствуют пользователи с доступными профилями (суперпользователь заблокирован, а обычные пользовательские учётные записи отключены из-за отсутствия доступа к их домашним каталогам).

Решим данную проблему посредством загрузки с Fedora LiveUSB, выполнением chroot в установленную систему и установкой пароля для root:

passwd root

Завершим работу chroot окружения:

logout

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

Как изменить размер пула сжатия памяти?

По умолчанию модуль сжатия памяти zram создаёт пул, равный половине объёма имеющейся оперативной памяти.

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

Если всё-таки хочется внести поправки, откроем файл /etc/systemd/zram-generator.conf в текстовом редакторе:

sudoedit /etc/systemd/zram-generator.conf

Внесём изменения в переменные zram-fraction и max-zram-size, явно указав необходимые значения:

zram-fraction = 0.5
max-zram-size = 4096

Допустимые значения zram-fraction:

  • 0.5 -- выделение под пул 50% (выбор по умолчанию) от оперативной памяти;

  • 0.25 -- 25%;

  • 0.1 -- 10%;

  • 1.0 -- 100% соответственно (не рекомендуется).

В max-zram-size указывается максимально допустимый объём для пула в мегабайтах.

Изменения вступят в силу при следующей загрузке системы.

Как оптимизировать Windows для корректной работы в dual-boot?

Если необходимо использовать Fedora вместе с Microsoft Windows в режиме двойной загрузки, то необходимо применить ряд оптимизаций, специфичных для данной ОС:

  1. переведём часы в UTC во всех установленных ОС: Fedora, Windows;

  2. отключим использование гибридного режима завершения работы.

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

Приложение требует webkitgtk. Что делать?

Библиотека webkitgtk более не поддерживается апстримом, имеет сотни незакрытых критических уязвимостей (в т.ч. допускающих удалённое исполнение кода), и по этой причине она была удалена из репозиториев Fedora начиная с версии 25.

Если приложение требует webkitgtk, то лучше всего воздержаться от его использования, однако если это по какой-либо причине невозможно, то проще всего будет применить загрузку библиотеки через переопределение LD_LIBRARY_PATH.

Настоятельно не рекомендуется устанавливать данную библиотеку глобально в систему!

Можно ли установить несколько версий PHP одновременно?

Да, это возможно при использовании репозитория Remi's RPM.

В то же время одновременная установка и использование одной и той же мажорной версии PHP невозможна, т.е. нельзя одновременно установить и использовать версии 7.3.1 и 7.3.2, однако 7.2.9 и 7.3.2 уже можно.

Remi's RPM -- это сторонний репозиторий, созданный и поддерживаемый Remi Collect -- активным участником сообщества и мейнтейнером всего PHP стека в Fedora.

Основная цель данного репозитория -- предоставление различных версий стека PHP с возможностью одновременного использования, а также некоторых других программ для пользователей Fedora и Enterprise Linux (RHEL, CentOS, Oracle, Scientific Linux и т.д.).

Важно: Remi's RPM -- это сторонний репозиторий, поэтому в случае, если вы используете бета-версии Fedora или Fedora Rawhide, репозиторий может работать некорректно.

Для подключения выполним сдедующую команду:

sudo dnf install https://rpms.remirepo.net/fedora/remi-release-$(rpm -E %fedora).rpm

Важно: Перед использованием репозитория Remi, необходимо подключить RPM Fusion.

Для того, чтобы получать обновления PHP, активируем данный репозиторий:

sudo dnf config-manager --set-enabled remi

При необходимости можно включить экспериментальные репозитории с бета-версиями PHP (на примере версии 7.4):

sudo dnf config-manager --set-enabled remi-php74

Установим PHP-интерпретатор версии 7.3:

sudo dnf install php73-php

Для корректного использования PHP с веб-сервером Apache в режиме FastCGI, необходимо вручную указать путь к исполняемому файлу PHP в файле конфигурации веб-сервера.

В случае использования nginx, установим менеджер процессов PHP-FPM для PHP версии 7.3:

sudo dnf install php73-php-fpm

Стоит обратить внимание на то, что все пакеты в репозитории Remi's RPM, относящиеся к PHP, имеют в своем названии префикс вида php<php_version>, где <php_version> -- первые две цифры версии PHP, которую необходимо использовать.

Запустим PHP-FPM и включим его автоматический старт при включения системы:

sudo systemctl enable --now php73-php-fpm.servie

Указанный выше префикс необходимо использовать и при взаимодействии с юнитами systemd.

Для выполнения PHP сценария в терминале, вызовем интерпретатор и передадим путь к файлу в качестве параметра:

/usr/bin/php73 /path/to/file.php

Здесь /usr/bin/php73 является символической ссылкой для быстрого вызова исполняемого файла интерпретатора PHP указанной версии, например /opt/remi/php73/root/usr/bin/php.

Файлы конфигурации php.ini и php-fpm.conf располагаются в каталоге /etc/opt/remi/php73. Префикс используется в качестве имени каталога.

С некоторыми Qt приложениями в Wayland наблюдаются проблемы. Как исправить?

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

QT_QPA_PLATFORM=xcb /usr/bin/foo-bar

При необходимости постоянного старта в таком режиме создадим переопределение для ярлыка, прописав env QT_QPA_PLATFORM=xcb перед строкой запуска внутри директивы Exec=.

Пример:

Exec=env QT_QPA_PLATFORM=xcb /usr/bin/foo-bar

Здесь /usr/bin/foo-bar -- путь запуска проблемного приложения.

В Spectacle при вызове через Print Screen отсутствует оформление окна. Как исправить?

Это известная проблема пакета Lmod, приводящая к тому, что при вызове через D-Bus не полностью передаются переменные окружения.

Удалим Lmod:

sudo dnf remove Lmod

Произведём перезагрузку системы:

sudo systemctl reboot

Как решить проблему с чёрным экраном после обновления ядра на видеокартах AMD?

Иногда чёрный экран на видеокартах AMD может появляться по причинам отсутствия нужной прошивки в initramfs образе.

Для решения данной проблемы пересоберём образ initrd с принудительным добавлением прошивок, используемых драйвером amdgpu:

sudo dracut --regenerate-all --force --install "/usr/lib/firmware/amdgpu/*"

Произведём перезагрузку системы:

sudo systemctl reboot

Как исправить ошибку, связанную с VGA-0, на видеокартах NVIDIA?

Если в системном журнале появляется сообщение вида WARNING: GPU:0: Unable to read EDID for display device VGA-0, отключим соответствующий видеовыход.

Создадим файл 80-vgaoff.conf:

sudo touch /etc/X11/xorg.conf.d/80-vgaoff.conf
sudo chown root:root /etc/X11/xorg.conf.d/80-vgaoff.conf
sudo chmod 0644 /etc/X11/xorg.conf.d/80-vgaoff.conf

Откроем его в текстовом редакторе:

sudoedit /etc/X11/xorg.conf.d/80-vgaoff.conf

Добавим следующее содержание:

Section "Monitor"
    Identifier "VGA-0"
    Option "Ignore" "true"
    Option "Enable" "false"
EndSection

Произведём перезагрузку системы:

sudo systemctl reboot

Как активировать драйвер modesetting на видеокартах Intel?

Создадим новый файл конфигурации X11 -- 10-modesetting.conf:

sudo touch /etc/X11/xorg.conf.d/10-modesetting.conf
sudo chmod 0644 /etc/X11/xorg.conf.d/10-modesetting.conf

Откроем его в текстовом редакторе:

sudoedit /etc/X11/xorg.conf.d/10-modesetting.conf

Вставим следующее содержание:

Section "Device"
    Identifier  "Intel Graphics"
    Driver      "modesetting"
EndSection

Сохраним изменения в файле.

Удалим компоненты стандартного драйвера Intel:

sudo dnf remove xorg-x11-drv-intel

Перезагрузим систему и выберем сеанс X11 (Gnome on X11 для пользователей Fedora Workstation):

sudo systemctl reboot

Как увеличить срок жизни USB Flash?

Использование современных журналируемых файловых систем Linux на накопителях USB Flash, контроллер которых не способен автоматически балансировать износ ячеек, требует выполнения небольшой оптимизации.

Изменим режим журнала в writeback, а также активируем параметр монтирования lazytime:

sudo debugfs -w -R "set_super_value mount_opts data=writeback,lazytime" /dev/sdX1

Для максимального продления срока службы допускается полностью отключить журнал ФС (только на ext4):

sudo tune2fs -O ^has_journal /dev/sdX1

Внимание! Отключение журнала может привести к потере всех данных на устройстве при его некорректном извлечении, либо исчезновении питания.

Здесь /dev/sdX1 -- раздел на устройстве флеш-памяти, который требуется настроить.

Изменения вступят в силу при следующем монтировании.

При загрузке возникает ошибка sparse file not allowed. Как исправить?

Если раздел /boot установленной системы использует файловую систему BTRFS, при загрузке системы появится ошибка error: ../../grub-core/commands/loadenv.c:216:sparse file not allowed.

Это известная проблема, связанная с записью конфигурации grubenv и неполноценной реализацией драйвера поддержки BTRFS в загрузчике (он перезаписывает непосредственно блоки файла без обновления соответствующих метаданных, после чего BTRFS считает раздел повреждённым из-за несовпадения контрольных сумм).

В качестве решения предлагается несколько вариантов:

  1. перейти на поддерживаемую конфигурацию загрузки -- переместить /boot на раздел с ФС ext4;

  2. отключить скрытие меню загрузки GRUB 2.

Нужно ли выполнять балансировку раздела с BTRFS?

Файловая система BTRFS использует двухуровневую структуру хранения данных: пространство поделено на фрагменты, которые содержат блоки данных. При определенных условиях эксплуатации в ФС может возникать большое количество мало заполненных фрагментов. Это приводит к ситуации, когда свободное место вроде есть, а записать очередной файл на диск не получается.

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

Если на разделе мало свободного места (меньше 20%), часто осуществляется интенсивная запись данных (например от СУБД), и происходят ошибки записи, то скорее всего балансировка поможет.

Оценим выгоду от выполнения балансировки следующей командой:

sudo btrfs fi usage [mountpoint]

Если значение в поле Device allocated значительно превышает Used, то процедура окажется полезной, в противном случае выполнять её не имеет никакого смысла.

Здесь mountpoint -- точка монтирования раздела.

Как произвести балансировку раздела с BTRFS?

Произведём балансировку для всех фрагментов, заполненных менее, чем наполовину:

sudo btrfs fi balance start -dusage=50 -musage=50 [mountpoint]

Здесь -dusage -- максимальный процент заполнения при балансировке данных, -musage -- максимальный процент заполнения при балансировке метаданных, а mountpoint -- точка монтирования раздела.

Чем меньше значение usage, тем быстрее выполнится операция. Если на диске мало свободного места, то начинать следует с небольших значений, например с 5, постепенно увеличивая это число. Также можно балансировать отдельно данные и метаданные.

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

Как исправить ошибку Failed to start Setup Virtual Console?

Если при загрузке системы возникает ошибка Failed to start Setup Virtual Console, это известная проблема, связанная с отсутствием установленных keymaps для множества отличных от en_US локалей.

В качестве решения установим пакет kbd-legacy:

sudo dnf install kbd-legacy

Пересоберём образ initrd для всех установленных ядер:

sudo dracut --regenerate-all --force

Перезапустим сервис и проверим результат его работы:

sudo systemctl start systemd-vconsole-setup.service
systemctl status systemd-vconsole-setup.service

Как устранить лаги при редактировании документов в LibreOffice?

При возникновении лагов во время работы с документами в приложениях LibreOffice вне зависимости от настроек аппаратного ускорения, переключим активный сеанс сессии с Wayland на X11.

После обновления системы не работают драйверы NVIDIA. Как исправить?

Это известная проблема, из-за которой плагин dnf system-upgrade перезагружает систему до того, как пакеты проприетарных драйверов NVIDIA будут корректно собраны и установлены.

В качестве решения обновим базу установленных модулей ядра Linux:

sudo depmod -ae

Произведём перезагрузку устройства:

systemctl reboot

После обновления перестали работать USB принтеры и сканеры. Как исправить?

Начиная с Fedora 36, применяется технология печати без необходимости установки драйверов (driverless printing) на основе эмуляции протокола IPP для любых подключённых локально USB-принтеров.

Если устройство не работает, либо не поддерживается, для возврата к классической конфигурации печати удалим пакет ipp-usb:

sudo dnf remove ipp-usb

Перезагрузим устройство:

systemctl reboot

Fedora KDE не загружается при наличии видеокарты NVIDIA. Как исправить?

Это известная проблема, из-за которой Fedora 36 и выше работает некорректно в UEFI-режиме при наличии видеокарты NVIDIA из-за использования Wayland-сеанса в менеджере входа в систему SDDM.

Устанавливаем систему

Если Fedora KDE Live не загружается, либо отображает чёрный экран, выполним следующие действия:

  1. При загрузке с Live-образа в меню Troubleshooting выберем пункт Safe graphics mode и установим систему в штатном режиме.

  2. Установим проприетарные драйверы NVIDIA.

  3. Переключим KDE на использование X11 вместо Wayland.

  4. Удалим параметр ядра nomodeset.

  5. Произведём перезагрузку системы.

Исправляем установленную систему

Если Fedora 36 с KDE отображает чёрный экран после загрузки, выполним следующие действия:

  1. Однократно передадим параметр ядра nomodeset.

  2. Переключим KDE на использование X11 вместо Wayland.

  3. Произведём перезагрузку системы.

После обновления linux-firmware перестали работать видеокарты Intel и AMD. Как исправить?

В обновлении linux-firmware до версии 137, прошивки для видеокарт AMD, Intel и NVIDIA (относится только к свободным драйверам nouveau) были перемещены в отдельные пакеты: amd-gpu-firmware, intel-gpu-firmware и nvidia-gpu-firmware соответственно.

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

Установим их вручную:

sudo dnf install amd-gpu-firmware intel-gpu-firmware nvidia-gpu-firmware

Произведём перезагрузку системы для вступления изменений в силу:

systemctl reboot

При загрузке с Live USB возникает ошибка Invalid image. Как исправить?

Начиная с версии 15.6-2 предзагрузчик shim, используемый в Live-образах Fedora, на множестве моделей оборудования предыдущих поколений вместо запуска системы выводит следующую ошибку:

Invalid image
Failed to read header: Unsupported
Failed to load image: Unsupported
start_image() returned Unsupported

Это известная проблема, которая на данный момент не решена и затрагивает Fedora 37 и 38.

В качестве обходного пути скачаем не подверженный регрессии shim 15.4-5 и при помощи утилит rpm2archive и tar распакуем во временный каталог /tmp/shim:

mkdir /tmp/shim
curl -s https://dl.fedoraproject.org/pub/fedora/linux/releases/36/Everything/x86_64/os/Packages/s/shim-ia32-15.4-5.x86_64.rpm | rpm2archive - | tar -xz -C /tmp/shim
curl -s https://dl.fedoraproject.org/pub/fedora/linux/releases/36/Everything/x86_64/os/Packages/s/shim-x64-15.4-5.x86_64.rpm | rpm2archive - | tar -xz -C /tmp/shim

Смонтируем созданную ранее USB Flash с Live-образом Fedora и заменим файлы shim:

sudo mkdir /run/media/flash
sudo mount -t auto /dev/sdX2 /run/media/flash
sudo cp -f --preserve='mode,timestamps' /tmp/shim/boot/efi/EFI/BOOT/BOOTIA32.EFI /run/media/flash/EFI/BOOT/BOOTIA32.EFI
sudo cp -f --preserve='mode,timestamps' /tmp/shim/boot/efi/EFI/BOOT/BOOTX64.EFI /run/media/flash/EFI/BOOT/BOOTX64.EFI
sudo umount /run/media/flash
sudo rmdir /run/media/flash

Здесь /dev/sdX -- устройство USB-накопителя.

Произведём очистку ненужных более файлов:

rm -rf /tmp/shim

Внимание! При загрузке такого модифицированного образа следует выбирать пункт Start Fedora, без проверки целостности, т.к. из-за замены файлов она не будет пройдена.

Производительность Fedora 38 ниже, чем у предыдущей версии. Как исправить?

В Fedora 38 были включены два изменения, напрямую касающиеся производительности системы:

  1. переход на _FORTIFY_SOURCE=3 -- положительно влияет на безопасность системы за счёт улучшенной фортификации кода посредством добавления проверок границ массивов и векторов во время исполнения приложений;

  2. активация -fno-omit-frame-pointer -- очень спорное изменение, не дающее никаких значимых преимуществ обычным пользователям, которое просили внедрить крупные корпорации и некоторые разработчики для облегчения отладки и профилирования их кода. Изменение сначала было отклонено, но затем, после повторного голосования, принято.

Оба в совокупности приводят к падению быстродействия от 3 до 10 процентов в зависимости от типа вычислительной нагрузки. К сожалению, исправить это невозможно, т.к. пришлось бы откатить данные изменения и пересобрать все пакеты в системе.