Содержание статьи
Современные десктопные дистрибутивы Linux стали заметно более «жадными» по сравнению со своими предшественниками. Существует несколько путей решения этой проблемы. Первый из них — выбор минималистичного дистрибутива — мы рассмотрели в одной из прошлых статей. Второй способ заключается в уменьшении потребления памяти дистрибутива без видимого снижения функциональности, что мы и сделаем на примере последней версии Ubuntu.
Введение
После установки последней версии Ubuntu на виртуальную машину с двумя гигабайтами ОЗУ она занимает примерно 830 Мбайт. Это хоть и не очень критично, но достаточно много, если сравнивать с тем, в какой объем может поместиться более маленький дистрибутив. Давай посмотрим, какими методами мы будем пользоваться для определения ненужной функциональности.
Во-первых, список загружаемых демонов. Разработчики Ubuntu, конечно, постарались, чтобы их был минимум, но не стоит забывать, что это дистрибутив общего назначения и отдельным категориям пользователей некоторые демоны попросту не нужны.
Во-вторых, компоненты различных программ. Не секрет, что некоторые программы используют плагины, реализованные чаще всего в виде загружаемых библиотек, и вот здесь-то и понадобится тонкая настройка — отключить лишнее. В графической подсистеме тоже есть компоненты, которые нужны отнюдь не всем. Вот, в общем-то, и все.
Отключение загружаемых сервисов
Поскольку в Ubuntu 15.04 используется systemd, то для просмотра ПО, запускаемого во время начальной загрузки, нужно использовать следующую команду:
$ sudo systemctl list-units --type service
В результате появится список как запущенных, так и уже завершившихся сервисов. Посмотрим, от чего тут можно избавиться.
AppArmor, в общем-то, предназначен для защиты системы, но реально именно для домашних систем достаточно вовремя обновлять приложения. Риск того, что ты попадешь на вредоносную страничку, начиненную эксплоитом, заточенным именно под конкретную версию конкретного дистрибутива, минимален — тем более что по умолчанию профиль AppArmor для Firefox неактивен. Поэтому, если ты не параноик, можешь смело отключать, для чего воспользуйся следующей командой:
$ sudo systemctl disable apparmor.service
Apport отправляет отчеты об ошибках в Canonical. Вещь достаточно полезная, но если, допустим, сидеть, используя сверхдорогой мобильный интернет в роуминге, где каждый килобайт на счету, то имеет смысл отключить данную службу. В остальных же случаях этого делать не стоит. Для отключения набираем команду
$ sudo systemctl disable apport.service
Avahi предназначен для обнаружения служб и компьютеров в домене .local. Теоретически очень удобная вещь, но на практике для пары компьютеров в локальной сети смысла в ней нет, да и в некоторых случаях (Wi-Fi) приходится разбираться с multicast-пакетами, поэтому можно его и отключить:
$ sudo systemctl disable avahi-daemon.service
CGManager используется для управления cgroup: предоставляет непривилегированным пользователям удобный доступ к cgroup и предотвращает выход из текущего cgroup в родительский даже для привилегированных программ. Может пригодиться для создания вложенных контейнеров LXC. Если ты их не используешь и не используешь песочницы, где применяются cgroups и/или LXC (к примеру, Arkose) для запуска программ, — отключай:
$ sudo systemctl disable cgmanager.service
Colord предназначен для управления цветовыми профилями, что позволяет отображать одинаковые (или, во всяком случае, очень близкие) цвета как на экране, так и на принтере. Если тебе не нужно так точно управлять цветами (принтер монохромный, или его попросту нет), опять же можно беспроблемно отключить:
$ sudo systemctl disable colord.service
ModemManager представляет собой интерфейс, скрывающий детали реализации модемами каналов связи (2G/3G/4G/CDMA), способов соединения (RS232, USB, Bluetooth) и методов управления (AT, QCDM, QMI, MBIM). Если не планируется использование модемов — отключай:
$ sudo systemctl disable ModemManager.service
В Linux существует множество синтезаторов речи, но именно потому, что их много, пользоваться ими достаточно затруднительно — неизвестно, какой присутствует в системе. Speech Dispatcher представляет собой попытку создать унифицированный API, предназначенный для изменения порядка вызова синтезатора, а также для предотвращения наложения звука при одновременном воспроизведении от разных программ (примерно это же делает PulseAudio для обычного звука). Если нет необходимости использовать синтезаторы речи (многие из которых к тому же не поддерживают русский) — отключай:
$ sudo systemctl disable speech-dispatcher.service
Whoopsie работает в тандеме с Apport, так что, если ты отключил Apport, стоит то же самое сделать и с Whoopsie. Для этого сперва в конфигурационном файле /etc/default/whoopsie изменяем значение параметра report_crashes с true на false и затем стандартным образом отключаем:
$ sudo systemctl disable whoopsie.service
На этом отключение не очень нужных служб можно считать законченным. Однако отмечу, что это следует делать с осторожностью, поскольку очень многое здесь зависит от твоих требований.
Отключение компонентов программ и графической подсистемы
INFO
Без графической подсистемы Ubuntu использует примерно на 40% меньше памяти.
Первое, что, может, и не увеличивает потребление памяти, но реально притормаживает версии Ubuntu с Unity, — онлайн-поиск, который большинству пользователей в самом рабочем столе и не нужен. Для его отключения есть два пути. Первый — перейти в «Параметры системы -> Защита и приватность -> Поиск» и переключить «Отображать результаты поиска в интернете». Второй — в консоли набрать следующую команду:
$ gsettings set com.canonical.Unity.Lenses remote-content-search none
В Ubuntu используется композитный менеджер Compiz (который, кстати, кушает память сильнее, чем все остальные процессы). Его тоже можно настроить так, чтобы он потреблял меньше памяти (или хотя бы уменьшить занимаемое процессорное время). Для этого нужно установить CompizConfig Settings Manager и запустить его:
$ sudo apt-get install compizconfig-settings-manager
$ ccsm
В появившемся окне будет список плагинов. Посмотрим, что и при каких условиях можно отключить.
Плагин «Команды» предназначен для задания комбинациям клавиш каких-либо команд. Если ты его не используешь — свободно отключай; в Unity он тоже не применяется.
Enhanced Zoom Desktop — аналог «Экранной лупы». Если у тебя нет надобности в подобного рода ПО — опять же отключай.
Desktop Wall — это фактически знаменитый куб Compiz в 2D. Но по умолчанию комбинация клавиш, отвечающая за него, отключена, так что этот плагин тоже можно безболезненно деактивировать.
Viewport Switcher — плагин, опять же связанный с переключением рабочих столов. Честно говоря, подобные вещи реализованы с избыточной сложностью. Вновь деактивируй, если в нем нет какой-либо нужды.
В группе «Эффекты» можно отключить оба включенных плагина: Animations и «Проявление/исчезание окон». В настройках последнего, впрочем, есть один полезный эффект, «Затемнение не отвечающего окна», но этим можно пренебречь.
Session Management — отвечает за сохранение/восстановление положения и размеров окон в сессии (промежуток между входом/выходом пользователя). Если тебе неважно положение окон, этот плагин тоже можно отключить.
Перейдем к другим приложениям. Возьмем Network Manager. В списке его плагинов есть ofono, который не нужен, если ты не используешь мобильные соединения. Для его отключения нужно удалить его название из /etc/NetworkManager/NetworkManager.conf
в строчке Plugins.
Во время запуска рабочего стола запускаются такие компоненты, о которых пользователь знать не знает, — в графическом интерфейсе они не отображаются. Большая их часть, конечно, необходима, но от некоторых все же можно избавиться. Для отключения на общесистемном уровне нужно сделать следующее: в каталоге /etc/xdg/autostart
переименовать файл с именем компонента и расширением desktop, добавив к нему расширение disable. Посмотрим, что можно отключить.
Если ты не пользуешься GPG, то gnome-keyring-gpg смело отключай — системные утилиты все равно обращаются к системной же связке ключей напрямую.
Indicator-bluetooth
, если ты не используешь данный беспроводной интерфейс, тоже отключай.
Indicator-messages
отвечает за отображение входящих сообщений в почтовых программах. Индикатор, конечно, очень удобный, так что отключать его лучше лишь в случае крайней надобности.
Indicator-printers
показывает подключение принтеров. Отключать, если их нет.
Onboard-autostart
запускает экранную клавиатуру. Впрочем, она, как правило, тут же и завершается — так что если и отключать, то ради прироста скорости запуска, который будет мизерным.
Orca-autostart
— экранная лупа. Тоже можно обойтись без нее.
Print-applet
показывает задания на печать. Действовать аналогично indicator-printers.
Telepathy-indicator
отображает уведомления от соответствующего IM-клиента. Если ты не пользуешься клиентом, построенным на Telepathy, отключай.
Update-notifier
уведомляет об обновлениях. Если не лениться и вызывать процесс проверки обновлений вручную, надобность в нем пропадает.
Zeitgeist-datahub
запускает своего рода коллектор для пассивных собирателей информации технологии Zeitgeist, о которой стоит рассказать подробнее. Технология предназначена для регистрации активности пользователя с целью облегчить восстановление хронологии событий. Она достаточно тесно интегрирована с Unity, и для ее отключения недостаточно деактивировать данный компонент, нужно еще несколько действий.
Прежде всего запретим писать в файл БД процессу zeitgeist-daemon, для чего выполним следующую команду:
$ chmod -rw ~/.local/share/zeitgeist/activity.sqlite
Проверим, что этот процесс туда писать не может:
$ zeitgeist-daemon --replace
Если все нормально, он выругается, что нет доступа к файлу БД. И после этого уже можно отключать zeitgeist-datahub из автозапуска.
zRam
Существует метод, позволяющий увеличить память путем незначительного уменьшения производительности, — zRam (раньше назывался compcache). Работает этот метод очень просто: создает сжатое блочное устройство в памяти и размещает на нем своп. Таким образом, за счет сжатия получается экономия памяти по меньшей мере раза в два.
Для включения zRam нужно установить соответствующий пакет:
$ sudo apt-get install zram-config
и перезагрузиться. Для проверки смотрим список разделов подкачки:
$ sudo swapon -s
Если все нормально, появится своп на устройстве /dev/zram0. По умолчанию создается по одному на процессор.
Заключение
Мы рассказали, как уменьшить объем памяти, занимаемой последней версией Ubuntu, при этом по минимуму задев функциональность. Совсем без этого обойтись не получилось, ибо каждому пользователю не нужно что-то свое. Тем не менее расход памяти удалось сократить примерно на 50 Мбайт.
Дадим еще несколько советов, как избежать излишней прожорливости Ubuntu, на этот раз более радикальных.
Первый, самый радикальный, — не используй Unity! В мире есть достаточно много более легких рабочих столов, среди которых, возможно, есть и похожий на GUI от Canonical.
Второй совет: используй более легкие версии программ. Так, вместо LibreOffice Writer можно использовать AbiWord, вместо Firefox — какой-нибудь легковесный браузер, скажем Midori.
Третье — можешь попытаться пошаманить со всяческими кешами. Но делать это нужно очень осторожно, иначе есть большой риск вместе с мизерным увеличением памяти получить страшные тормоза.
Enjoy!