Оптимизация и тонкая настройка¶
Как уменьшить потребление оперативной памяти средой рабочего стола 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 от неиспользуемых программ?¶
Произведём стандартную очистку по описанному выше сценарию.
Удалим оставшиеся редко используемые пакеты:
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 в режиме двойной загрузки, то необходимо применить ряд оптимизаций, специфичных для данной ОС:
переведём часы в UTC во всех установленных ОС: Fedora, Windows;
отключим использование гибридного режима завершения работы.
После выполнения указанных действий, обе ОС смогут сосуществовать на одном устройстве.
Приложение требует 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 считает раздел повреждённым из-за несовпадения контрольных сумм).
В качестве решения предлагается несколько вариантов:
перейти на поддерживаемую конфигурацию загрузки -- переместить /boot на раздел с ФС ext4;
отключить скрытие меню загрузки 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 не загружается, либо отображает чёрный экран, выполним следующие действия:
При загрузке с Live-образа в меню Troubleshooting выберем пункт Safe graphics mode и установим систему в штатном режиме.
Установим проприетарные драйверы NVIDIA.
Переключим KDE на использование X11 вместо Wayland.
Удалим параметр ядра
nomodeset
.Произведём перезагрузку системы.
Исправляем установленную систему¶
Если Fedora 36 с KDE отображает чёрный экран после загрузки, выполним следующие действия:
Однократно передадим параметр ядра
nomodeset
.Переключим KDE на использование X11 вместо Wayland.
Произведём перезагрузку системы.
После обновления 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 были включены два изменения, напрямую касающиеся производительности системы:
переход на _FORTIFY_SOURCE=3 -- положительно влияет на безопасность системы за счёт улучшенной фортификации кода посредством добавления проверок границ массивов и векторов во время исполнения приложений;
активация -fno-omit-frame-pointer -- очень спорное изменение, не дающее никаких значимых преимуществ обычным пользователям, которое просили внедрить крупные корпорации и некоторые разработчики для облегчения отладки и профилирования их кода. Изменение сначала было отклонено, но затем, после повторного голосования, принято.
Оба в совокупности приводят к падению быстродействия от 3 до 10 процентов в зависимости от типа вычислительной нагрузки. К сожалению, исправить это невозможно, т.к. пришлось бы откатить данные изменения и пересобрать все пакеты в системе.