- Linux как ускорить загрузку
- 1. Ознакомление со списком активированных системных служб
- 2. Деактивация системных служб
- 3. Восстановление работоспособности системных служб
- 4. Системные службы, которые стоит деактивировать
- Ускорьте загрузку Linux, отключив ненужные службы
- Анализируйте время, необходимое для загрузки каждой службы
- Используйте systemctl для отключения Ненужные услуги
- Заключение
Linux как ускорить загрузку
Итак, вы успешно установили дистрибутив Linux Mint, Ubuntu или Fedora Workstation, провели его оптимизацию, но он все равно медленно загружается. Конечно же, можно просто смириться с этим, ведь время загрузки системы не является определяющим фактором при работе с ней, но если вы обладаете опытом работы с Linux и не боитесь использовать терминал, вы можете провести небольшую дополнительную оптимизацию процесса ее загрузки, заключающуюся в отключении неиспользуемых системных служб. Так как во всех упомянутых дистрибутивах с недавнего времени используется менеджер инициализации systemd, процесс их настройки будет практически идентичным. Различия в данном случае будут заключаться в наборе активированных по умолчанию системных служб.
1. Ознакомление со списком активированных системных служб
Для того, чтобы получить список активированных по умолчанию системных служб, следует открыть окно терминала и ввести в него следующую команду (используйте функции копирования/вставки, чтобы не ошибиться при вводе):
systemctl list-unit-files —type=service | grep enabled
После окончания ввода команды следует нажать клавишу Enter для ее исполнения. В результате вы получите список активированных системных служб в следующем формате:
[email protected] ~ $ systemctl list-unit-files —type=service | grep enabled
accounts-daemon.service enabled
anacron-resume.service enabled
anacron.service enabled
[email protected] enabled
avahi-daemon.service enabled
binfmt-support.service enabled
bluetooth.service enabled
…
В зависимости от используемого дистрибутива, данный список может быть достаточно длинным, поэтому он был сокращен. Вам придется деактивровать лишь те службы, которые не используются в вашем случае. Но что делать в том случае, если вы не знаете назначения каждой из служб? Ну, вы можете просто воспользоваться приведенным ниже списком служб, которые могут быть максимально безболезненно деактивированы.
Предупреждение: если вы не знаете о назначении службы или не уверены в необходимости ее использования, не совершайте с этой службой никаких манипуляций, ведь в случае ошибки вам придется восстанавливать работоспособность системы вручную.
2. Деактивация системных служб
Для деактивации системной службы следует использовать последовательность из двух команд:
sudo systemctl stop .service
sudo systemctl disable .service
Так как некоторые деактивированные службы могут активироваться другими службами, в некоторых случаях для принудительной деактивации службы вам также придется использовать следующую команду:
sudo systemctl mask .service
Для того, чтобы проверить текущее состояние службы достаточно выполнить следующую команду:
В результате исполнения данной команды вы получите аналогичный вывод:
[email protected] ~ $ systemctl status ModemManager.service
● ModemManager.service — Modem Manager
Loaded: loaded (/lib/systemd/system/ModemManager.service; enabled; vendor pre
Active: active (running) since Вт 2016-11-22 20:26:40 MSK; 2h 17min ago
Main PID: 908 (ModemManager)
Tasks: 3 (limit: 512)
CGroup: /system.slice/ModemManager.service
└─908 /usr/sbin/ModemManager
Из данного вывода очевидно, что служба активирована (enabled во второй строке), а также активна и исполняется (active (running) в третьей строке).
Совет: в некоторых материалах после деактивации системных служб рекомендуют удалять соотвествующие пакеты программного обеспечения. Я не рекомендую делать этого, так как каждая из деактивированных служб может понадобиться вам в любой момент.
3. Восстановление работоспособности системных служб
Если вы по ошибке деактивировали системную службу и желаете отменить это действие, вам придется выполнить ее повторную активацию с помощью следующей последовательности команд:
sudo systemctl unmask .service
sudo systemctl enable .service
sudo systemctl start .service
Разумеется, первая команда должна исполняться лишь в том случае, если вы осуществляли принудительную деактивацию системной службы.
4. Системные службы, которые стоит деактивировать
Ниже приведен список системных служб, которые вы можете относительно безболезненно деактивировать. В зависимости от используемого дистрибутива, вы можете не обнаружить некоторые из упомянутых служб в списке активированных, поэтому стоит деактивировать лишь те службы, которые активированы в вашем дистрибутиве.
Данные службы предназначены для выполнения заданных действий в определенное время или через определенные промежутки времени. В большинстве случаев они могут быть безболезненно деактивированы.
B. Службы поддержки печати
Данные службы ответственны за обнаружение и работу с принтерами. Если у вас нет принтера, можете смело деактивровать их.
C. Служба поддержки широкополносных беспроводных устройств
Данная служба позволяет использовать 2G/3G/4G модемы. Если вы не используете подобные устройства, можете деактивирвать ее.
D. Службы поддержки логических виртуальных томов и RAID-массивов
- lvm2-monitor.service
- dmraid-activation.service
- iscsi.service
- mdmonitor.service
- multipathd.service
Данные службы должны использоваться лишь в том случае, если при установке системы жесткие диски были использованы для создания логических виртуальных томов или RAID-массивов. Если вы не создавали их (что рекомендуется), вам не понадобятся все эти службы.
E. Служба поддержки устройств Bluetooth
Данная служба позволяет работать с устройствами Bluetooth. Если вы не используете таких устройств, можете деактивировать ее.
F. Службы отправки информации о системных сбоях
- whoopsie.service
- abrt-ccpp.service
- abrt-oops.service
- abrt-vmcore.service
- abrt-xorg.service
- abrtd.service
Данные службы предназначены для сбора информации о системных сбоях и ее передачи разработчикам дистрибутива. Если вы не желаете активно участвовать в процессе разработки дистрибутива, вы можете деактивировать данные службы.
G. Служба для людей с ограниченными возможностями
Данная служба предназначена для работы с устройствами, позволяющими использовать шрифт Брайля для слабовидящих людей. Если вы не пользуетесь такими устройствами, вы можете деактивировать ее.
H. Служба обнаружения сетевых устройств
Данная служба позволяет осуществлять автоматическое распространение информации о сетевых устройствах в локальной сети. Если вы не пользуетесь ею, можете также деактивировать ее.
I. Службы поддержки виртуальных машин
- libvirtd.service
- spice-vdagentd.service
- vgauthd.service
- vmtoolsd.service
Данные службы используются для работы с виртуальными машинами (обычно посредством приложения Boxes). Если вы не используете виртуальные машины для запуска операционных систем, вы можете деактивировать их.
После деактивации описанных системных служб следует перезагрузить компьютер. Теперь он должен немного быстрее загружаться.
Ускорьте загрузку Linux, отключив ненужные службы
Все больше и больше операционных систем раздуваются множеством служб, работающих в фоновом режиме. Хотя он может не использовать много процессорного времени, он увеличивает время загрузки и использование ОЗУ.
Некоторые дистрибутивы Linux включают «все, кроме кухонной раковины», чтобы облегчить жизнь пользователя. Благодаря этому такие вещи, как совместное использование файлов или печать, работают прямо из коробки. К сожалению, единственный способ сделать это — включить сотни утилит, чтобы каждый нашел то, что ему нужно.
К счастью, операционные системы с открытым исходным кодом дают вам возможность и свободу делать то, что вы считаете нужным. Это означает, что вы можете отключить все, что вам не нужно, или просто удалить это. Здесь будет рассмотрен первый вариант, как отключить службы. Когда вы отключаете компоненты вместо их удаления, риски поломки компонентов постоянно снижаются. И вы можете вернуться к тому, как это было раньше, просто повторно включив службу, если вы заметили что-то полезное, что перестало работать.
Анализируйте время, необходимое для загрузки каждой службы
Большинство операционных систем на базе Linux перешли на Systemd. Среди набора утилит, которые они включают, есть программа, позволяющая анализировать скорость работы системы. В частности, он показывает общее время, необходимое для загрузки, и время, необходимое для загрузки каждой службы. Обратите внимание, что некоторые службы загружаются параллельно. Следовательно, если для загрузки необходимы две секунды, а остальные три секунды, это не обязательно означает, что всего требуется пять секунд. Может быть, намного меньше.
Откройте эмулятор терминала и введите эту команду:
Это показывает, сколько времени требуется ядру Linux и службам платформы для загрузки, что означает, что не объясняет, сколько времени требуется графическому интерфейсу для загрузки. Чтобы объяснить это по-другому, здесь показано количество времени, необходимое с момента загрузки ядра до его сброса на консоль Linux, которая выглядит так, как показано ниже.
Если у вас не установлен графический интерфейс, он будет отображаться на экране.
Однако вы также можете увидеть необходимое время через графический интерфейс инициализации с помощью этой команды:
systemd-analyze critical-chain graphical.target
Это показывает, что графический интерфейс был загружен за 2.126 секунды. Это не учитывает время, необходимое для загрузки утилит рабочего стола. Чтобы включить / отключить их, запустите диспетчер запуска среды рабочего стола.
Наконец, возможно, наиболее полезными для целей этого руководства являются:
Вы можете перемещаться по меню, используя клавиши со стрелками или же СТРАНИЦА ВВЕРХ و ЛИСТАТЬ ВНИЗ. Нажмите q из.
Используйте systemctl для отключения Ненужные услуги
Как вы можете видеть на предыдущем изображении, для загрузки службы snapd требуется 1.295 секунды. На SSD это незначительно. Но на жестком диске такое время может составлять порядка нескольких секунд, и в конечном итоге они будут очень значительными. Кроме того, на SSD многие вещи загружаются параллельно с невероятной эффективностью. На HDD очень сложно загружать сервисы параллельно. Считывающие головки, плавающие на пластинах диска, должны перемещаться из одного сектора в другой, поэтому параллельное чтение данных невозможно.
Чтобы упростить это, представьте себе следующее: если на вашем твердотельном накопителе вы видите пять сервисов, для которых требуется один раз для запуска, общее время, необходимое для загрузки всех этих сервисов, вероятно, будет меньше 1.2 секунды. Если на жестком диске вы просматриваете те же пять сервисов за одну секунду, общее время загрузки, вероятно, превышает пять секунд.
Допустим, вам не нужна услуга snapd , который обеспечивает доступ к снимкам состояния приложений, сохраненным в контейнерах. Вы можете отключить его с помощью этой команды:
sudo systemctl disable snapd.service
Но, если вы перезапустите, вы заметите, что оснастки Демон все еще работает. Это потому, что другие зависимости могут включить его, даже если он отключен. Попробуйте посмотреть, что это может быть:
systemd-analyze blame | grep snap
snapd.seed.service و сокет Они здесь виноваты. Дочерняя служба может запускать собственную родительскую службу. Когда вы отключаете один из них, вы просто говорите ему, чтобы он не запускался автоматически сам по себе. Но есть мощный способ обойти эту проблему.
использовать systemctl Чтобы скрыть сервис
sudo systemctl mask snapd.service
Это в основном делает служебный файл нуль Чтобы приложения не нашли способ запустить службу.
В большинстве случаев отключить услугу несложно. Этот пример был выбран, чтобы показать вам, как справляться с более сложными сценариями. В этом случае его необходимо отключить. snapd.seed.service و сокет или также скрыть это.
Ниже показано улучшенное время загрузки.
Заключение
Начиная с 4.078, время выполнения было уменьшено до 3.452 секунды, что на ~ 15% меньше. Неплохо, учитывая только одну услугу, и это на SSD. На жестком диске легче получить более значимые результаты.
В этом конкретном примере больше сервисов можно отключить с помощью такой команды, как:
sudo systemctl mask avahi-daemon.service ModemManager.service thermd.service pppd-dns.service.
Если вы предпочитаете графическое приложение для управления вашими услугами, вы можете взглянуть на Системный менеджер проекта. Однако он будет ограничен в том, что вы можете с ним делать, поскольку командная строка предлагает большую гибкость.