On Fri, Aug 22, 2014 at 12:03:56PM +0300, diver wrote: > root@office:~$ systemctl status network > ● network.service - Network Connectivity > Loaded: loaded (/etc/systemd/system/network.service; enabled) > Active: inactive (dead) О, я понял. Он enabled, но его никто не вытягивает! Там ошибка в секции Install -- нужно добавить кроме WantedBy=network-online.target еще и: WantedBy=network.target и сделать: systemctl deamon-reload systemctl reenable network.service > Ну допустим, но почему нет никаких сообщений в лог ? как это предлагается > штатно диагностировать? безотносительно к текущей проблема, а в целом. Не > будут же люди все время коллективно решать такие проблемы в рассылках? Да и > не всегда есть сеть. Потому что его никто не запускает, вот и нет сообщений в лог. Это одна из самых неочевидных особенностей systemd для админа при первом знакомстве. Дело в том, что в systemd вообще нет понятия enable/disable аналогичного тому, что в sysvinit. В процессе загрузки systemd пытается "запустить" default.target. Смотрит на его зависимости (wants/requires) и запускает указанное. И так рекурсивно. А systemctl enable делает только одно -- оно смотрит в секцию Install указанного сервиса, и создает соответствующие симлинки. А вот дальше начинается самое интересное -- etcnet сейчас зависит от network-online.target. Причем он должен запуститься _до_ этого самоего network-online.target. Но network-online.target вытягивается исключительно теми сервисами, которые требуют обязательно поднятой сети до своего старта. Если вдруг у вас на машине не оказалось ни одного такого сервиса -- запускать сеть некому. network.target от network-online.target отличается тем, что первый требует чтобы сеть запустилась, а второй -- чтобы сеть была установлена до продолжения загрузки. А необходимость в local-fs.target тоже следствие подобной интересной ситуации -- network запускается после (After) udev-settle. Но он его не _требует_ (Wants/Requires). Это значит, что если udev-settle запускается -- надо запускать network после него. Но если udev-settle никому не нужен -- то не надо пытаться его запускать. Раньше из-за сервиса, сохраняющего dmesg, udev-settle стартовал всегда. А вот теперь он стартует мягко скажем далеко не всегда. И тогда некому потребовать, чтобы network запускался после local-fs.target. Все это выглядит очень запутанным на первый взгляд, для осознания нужно четко понять три идеи: 1. Wants/Requires указывают _зависимости_, After/Before -- сортировку. Это ортогональные понятия. 2. enable/disable исключительно создают симлинки следуя командам в секции Install у сервиса. 3. сервис запускается _только_ если на него есть wants/requires зависимость от сервиса, который запускается. Единственный юнит, который всегда запускается при старте -- default.target. Остальное только если оказывается в дереве зависимостей. -- С уважением, Денис http://mithraen.ru/