Systemd: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 38: Строка 38:
необходимо руками создать символические ссылки для важных стартующих сервисов (вроде NetworkManager.service)или при первой загрузке, скорее всего придётся подождать несколько минут, пока systemd даст консоль.
необходимо руками создать символические ссылки для важных стартующих сервисов (вроде NetworkManager.service)или при первой загрузке, скорее всего придётся подождать несколько минут, пока systemd даст консоль.


Что бы network.service запустился выполнить команды:
Чтобы network.service запустился выполнить команды:


<source lang="bash">
<source lang="bash">
Строка 83: Строка 83:
#быстрая загрузка -- важно для десктопов, иногда и для серверов тоже;
#быстрая загрузка -- важно для десктопов, иногда и для серверов тоже;
#более надежная загрузка, за счет параллельности. В отличии от sysvinit - подвисание при запуске одного сервиса не приведет к остановке всего процесса загрузки (тормоза с ntpd если приходится загружаться отключившись от сети, как пример);
#более надежная загрузка, за счет параллельности. В отличии от sysvinit - подвисание при запуске одного сервиса не приведет к остановке всего процесса загрузки (тормоза с ntpd если приходится загружаться отключившись от сети, как пример);
#systemd это не просто запускалка сервисов. Оно еще и умеет их поддерживать запущеными (то, для чего я использую сейчас daemontools, а многие другие используют monit);
#systemd это не просто запускалка сервисов. Оно еще и умеет их поддерживать запущенными (то, для чего я использую сейчас daemontools, а многие другие используют monit);
#более надежная система порядка запуска. Циферки, как известно, иногда приводят к тому что мантейнеры ошибаются. К счастью за годы мы многие такие баги вытоптали, но, увы, иногда появляются новые сервисы :) Указать зависимость между сервисами надежнее и предсказуемее нежели циферки.<br>
#более надежная система порядка запуска. Циферки, как известно, иногда приводят к тому что мантейнеры ошибаются. К счастью за годы мы многие такие баги вытоптали, но, увы, иногда появляются новые сервисы :) Указать зависимость между сервисами надежнее и предсказуемее нежели циферки.<br>
Денис Смирнов http://lists.altlinux.org/pipermail/sisyphus/2011-March/353142.html
Денис Смирнов http://lists.altlinux.org/pipermail/sisyphus/2011-March/353142.html

Версия от 13:08, 4 ноября 2017

Логотип Википедии
В Википедии есть обзорная статья по теме «Systemd».

Для ALT Linux собран systemd.

Установка systemd

Пользователи Sisyphus могут уже установить systemd:

apt-get install systemd

Чтобы "попробовать" systemd, не переходя на него полностью, нужно временно прописать строчку init=/sbin/systemd в параметры ядра. В lilo это можно сделать на этапе загрузки - когда выведется меню, набрать на клавиатуре init=/sbin/systemd и нажать Enter. В случае каких-то проблем достаточно просто перезагрузить компьютер, и вернуться обратно к SysVinit.

Чтобы использовать systemd по умолчанию при загрузке, надо отредактировать /etc/sysconfig/grub2 и привести строку GRUB_CMDLINE_LINUX_DEFAULT к такому виду:

GRUB_CMDLINE_LINUX_DEFAULT='panic=30 init=/sbin/systemd'

После редактирования этого файла нужно вызвать:

grub-mkconfig -o /boot/grub/grub.cfg

Для пользователей lilo нужно в /etc/lilo.conf, в строчку append="" дописать внутри кавычек init=/sbin/systemd, после чего вызвать команду

lilo

Или просто установить systemd-sysvinit (пока не рекомендуется, так как в этом случае у вас возможности вернуться к SysVinit не будет).

apt-get install systemd-sysvinit

и ничего прописывать ядру не надо (в том числе и в lilo).

Не надо использовать два способа одновременно.

Настройка перед первой перезагрузкой

Так как на данный момент отсутствует механизм плавного перехода на systemd (состояние сервисов из init, не переносится на unit-ы), необходимо руками создать символические ссылки для важных стартующих сервисов (вроде NetworkManager.service)или при первой загрузке, скорее всего придётся подождать несколько минут, пока systemd даст консоль.

Чтобы network.service запустился выполнить команды:

# ln -s '/lib/systemd/system/network.service' '/etc/systemd/system/network.target.wants/network.service'
# ln -s '/lib/systemd/system/network.target' '/etc/systemd/system/multi-user.target.wants/network.target'

Для NetworkManager:

# ln -s '/lib/systemd/system/NetworkManager.service' '/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service'
# ln -s '/lib/systemd/system/NetworkManager.service' '/etc/systemd/system/network.target.wants/NetworkManager.service'

Можно перезагружаться и пробовать.

NFS и LDAP

Если вы используете LDAP и/или NFS (например, офисная сеть на Кентавре/Ковчеге), то после установки systemd вместо sysvinit у вас ничего работать не будет. Для быстрого исправления нужно:

  • дополнительно к NetworkManager включить сервис NetworkManager-wait-online.service:
systemctl enable NetworkManager-wait-online.service
  • в /etc/fstab во все записи сетевых ресурсов добавить опцию _netdev или x-systemd.automount (согласно FAQ: http://www.altlinux.org/FAQ)
  • дополнительно включить сервисы nfslock, idmapd и сопутствующие, если понадобится (аналогично systemctl enable)

Дополнительные рекомендации

  • чтобы загружать модуль autofs4 как можно раньше добавьте:
MODULES_PRELOAD += autofs4

в /etc/initrd.mk (и перегенерите имидж, запустив make-initrd)

  • systemd поддерживает загрузку модулей из /etc/modules-load.d/*.conf
  • время загрузки разных сервисов и можно узнать установив пакет systemd-analyze и используя одноименную утилиту.
  • для отключения остановки если на разделе есть ошибки, добавьте для раздела в /etc/fstab опцию nofail

Особенности

Неполное описание преимуществ в сравнении с upstart и SysV-init
(цитата отсюда - http://www.opennet.ru/opennews/art.shtml?num=27218)

"systemd (system daemon) реализует принципиально новый подход к инициализации и контролю работы системы. Одним из ключевых новшеств этого подхода является высокая степень параллелизации запуска служб при инициализации системы, за счет активного использования возможностей сокетов, что в перспективе позволяет добиться гораздо более высокой скорости, чем традиционный подход с последовательным запуском взаимозависимых служб, используемый, например, в upstart. Другим важным моментом является контроль над точками монтирования (не-жизненно-важные файловые системы можно монтировать только при первом обращении к ним, не тратя на это время при инициализации системы) и устройствами (можно запускать и останавливать определенные службы и при появлении или удалении заданных устройств)."

Зачем переходить на systemd?

  1. быстрая загрузка -- важно для десктопов, иногда и для серверов тоже;
  2. более надежная загрузка, за счет параллельности. В отличии от sysvinit - подвисание при запуске одного сервиса не приведет к остановке всего процесса загрузки (тормоза с ntpd если приходится загружаться отключившись от сети, как пример);
  3. systemd это не просто запускалка сервисов. Оно еще и умеет их поддерживать запущенными (то, для чего я использую сейчас daemontools, а многие другие используют monit);
  4. более надежная система порядка запуска. Циферки, как известно, иногда приводят к тому что мантейнеры ошибаются. К счастью за годы мы многие такие баги вытоптали, но, увы, иногда появляются новые сервисы :) Указать зависимость между сервисами надежнее и предсказуемее нежели циферки.

Денис Смирнов http://lists.altlinux.org/pipermail/sisyphus/2011-March/353142.html
Ещё:

Q: И вот скажите мне, стоит ли бороться за то, что мой ноут загрузится на одну минуту быстрее раз в два месяца ?
A: Стоит бороться за то, что как только ты нажмешь hardware key для включения/выключения WiFi, соответственно 
запустится/остановится нужный сервис, к примеру. А также что при втыкании bluetooth dongle -- поднимется bluetooth стек. А также что перед suspend часть сервисов таки остановится, а после suspend запустится заново.
Q: Или сервер, который перезагружается раз в год, сможет это сделать примерно на 8 секунд быстрее ?
A: Или что когда на этом сервере упадет сервис, его автоматом перезапустят. Из коробки. Без необходимости 
настраивать monit (который в отличии от systemd неспособен отличить заглушили мы сервис сами -- или он упал).
Q: Я не спорю - где-то безусловно есть необходимость в systemd, но на мой взгляд лично для меня его польза сильно
преувеличена.
A:Скорость загрузки это полезный побочный эффект. К счастью, не единственный.
Можно спорить о качестве реализации, но сам подход -- очень хороший. И существенно лучше sysvinit. 

http://lists.altlinux.org/pipermail/sisyphus/2011-March/353143.html

См. тж. A few observations about systemd (debian-devel@) и ответ Леннарта.


Отладка systemd

О systemd на русском языке

Ссылке по теме