<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Davfs2 on dedinit()</title><link>https://dedinit.ru/tags/davfs2/</link><description>Recent content in Davfs2 on dedinit()</description><generator>Hugo -- 0.165.0</generator><language>ru-ru</language><lastBuildDate>Sun, 13 Sep 2026 15:55:00 +0300</lastBuildDate><atom:link href="https://dedinit.ru/tags/davfs2/index.xml" rel="self" type="application/rss+xml"/><item><title>Завис systemd1: почему без перезагрузки не обойтись</title><link>https://dedinit.ru/2026/systemd1-hang-systemctl-reboot-force/</link><pubDate>Sun, 13 Sep 2026 15:55:00 +0300</pubDate><guid>https://dedinit.ru/2026/systemd1-hang-systemctl-reboot-force/</guid><description>systemd1 висит: systemctl молчит, bus-активация org.freedesktop.systemd1 таймаутит, docker жив, а PID 1 превратился в один поток. Разбор: почему daemon-reexec не помог, почему Яндекс-Диск был лишь триггером и как перезагрузка с --force --force разрулила ситуацию.</description><content:encoded><![CDATA[<figure class="entry-cover"><img src="https://dedinit.ru/2026/systemd1-hang-systemctl-reboot-force/hero.svg" alt="Завис systemd1 — systemctl молчит, лечится перезагрузкой"></figure><h1 id="завис-systemd1-почему-без-перезагрузки-не-обойтись">Завис systemd1: почему без перезагрузки не обойтись</h1>
<p><strong>TL;DR:</strong> systemd1 (D-Bus-сервис <code>org.freedesktop.systemd1</code>, через который работает <code>systemctl</code>) завис. <code>systemctl</code> молчит, активация сервиса упирается в 25-секундный таймаут, а процесс systemd (PID 1) остаётся с одним-единственным потоком — мёртвый менеджер, который не обслуживает шину. <code>daemon-reexec</code> не помогает. Перезагрузка — единственный выход, и <code>systemctl --force --force reboot</code> справляется даже когда обычный reboot падает с <code>Connection timed out</code>.</p>
<h2 id="как-это-выглядело">Как это выглядело</h2>
<p>Всё началось с того, что у меня завис FUSE-модуль с Яндекс-Диском (<code>/mnt/yandex-disk</code>, davfs2). Пока я разбирался, я заметил, что команды <code>systemctl</code> перестали отвечать вообще.</p>
<p>Когда я попробовал перезагрузиться обычным способом:</p>
<pre tabindex="0"><code>$ sudo systemctl reboot

Broadcast message from root@bigbox on pts/31 (Sun 2026-09-13 13:08:39 UTC):
The system will reboot now!

Call to Reboot failed: Connection timed out
Failed to start reboot.target: Connection timed out
See system logs and &#39;systemctl status reboot.target&#39; for details.
It is possible to perform action directly, see discussion of --force --force in man:systemctl(1).
</code></pre><p>Беда в том, что <code>systemctl reboot</code> сам идёт через systemd1. Если systemd1 висит, то и перезагрузиться через него нельзя — получается «замкнутый круг».</p>
<p>При этом интересная деталь: <code>docker ps</code> и <code>docker info</code> работали нормально, контейнеры — живые, <em>мои</em> агенты продолжали работать. Падал только сам systemd-интерфейс.</p>
<h2 id="что-показала-диагностика">Что показала диагностика</h2>
<p><strong>1. systemd1 не активируется на D-Bus.</strong></p>
<pre tabindex="0"><code>$ busctl | grep systemd1
org.freedesktop.systemd1   -   -   -   (activatable)   -   -   -
</code></pre><p><code>(activatable)</code> значит, что сервис зарегистрирован, но не запущен. При попытке его запустить:</p>
<pre tabindex="0"><code>$ systemctl is-system-running
[tаймаут через 25 секунд]

$ journalctl | grep systemd1
dbus-daemon[1859]: Failed to activate service &#39;org.freedesktop.systemd1&#39;:
timed out (service_start_timeout=25000ms)
</code></pre><p><strong>2. PID 1 — systemd — жив, но как будто мёртв внутри.</strong></p>
<pre tabindex="0"><code>$ ps -o pid,nlwp,stat,etime -p 1
  1   1  Ss  3-06:26:57
</code></pre><p>Ключевое — <code>nlwp = 1</code>. Нормальный systemd держит десятки потоков (они обслуживают шину, юниты, таймеры&hellip;). Один поток означает, что менеджер фактически не работает, а просто висит. Именно поэтому <code>daemon-reexec</code> не реагирует толком — перезапускать некому.</p>
<p><strong>3. Docker тут ни при чём.</strong></p>
<ul>
<li><code>dockerd</code> жил, <code>docker ps</code> отвечал мгновенно;</li>
<li>все контейнеры — <code>Up</code>, с restart-политиками <code>unless-stopped</code> / <code>always</code>;</li>
<li>даже <code>systemctl restart docker</code> упал бы в тот же таймаут systemd1, потому что этот вызов тоже идёт через шину.</li>
</ul>
<p><strong>4. Даже перезагрузка через systemctl не сработала:</strong> <code>Call to Reboot failed: Connection timed out</code>.</p>
<h2 id="почему-fuse-яндекс-диск-виноват-лишь-отчасти">Почему FUSE-Яндекс-Диск виноват лишь отчасти</h2>
<p>Я сначала грешил на зависший davfs2: он висел, и systemd вполне мог залипнуть, пытаясь обратиться к .mount-юниту, который упирается в молчащую FUSE-точку. <strong>Это правдоподобный триггер.</strong> Но уже к моменту диагностики я перемонтировал Яндекс-Диск заново, и он заработал — а systemd1 так и остался висящим.</p>
<p>Проверка это подтвердила:</p>
<ul>
<li><code>ls /mnt/yandex-disk/</code> отвечает мгновенно;</li>
<li>D-state (непрерываемые) процессы отсутствуют;</li>
<li>демон davfs2 жив.</li>
</ul>
<p>То есть: точка Yandex больше не блокирует ничего, а systemd1 всё равно не оживает. Вывод — <strong>проблема уже в самом systemd</strong>, а не в FUSE. FUSE был спусковым крючком, но чинить нужно было не монтирование.</p>
<h2 id="что-мы-перепробовали-перед-ребутом">Что мы перепробовали перед ребутом</h2>
<p><strong>Попытка 1: <code>systemctl daemon-reexec</code></strong> — перезапуск systemd «на месте», самая мягкая реанимация.</p>
<pre tabindex="0"><code>$ sudo systemctl daemon-reexec
# вернуло 0
</code></pre><p>Вернуло успех, но шину не оживило. Потому что systemd с одним потоком не смог толком выполнить re-exec — команда «прошла», но менеджер остался в том же состоянии. Проверка после:</p>
<pre tabindex="0"><code>$ busctl | grep systemd1
org.freedesktop.systemd1   -   -   -   (activatable)   ...
$ systemctl is-system-running
[tаймаут]
</code></pre><p>Ничего не изменилось.</p>
<p><strong>Попытка 2: обычный reboot.</strong> Упал с <code>Connection timed out</code> (см. выше). По понятной причине: reboot через systemctl — это тоже запрос к systemd1.</p>
<p><strong>Попытка 3: <code>systemctl --force --force reboot</code></strong> — двойной форсированный перезапуск. Именно он сработал:</p>
<pre tabindex="0"><code>$ sudo systemctl --force --force reboot
Rebooting.
</code></pre><h2 id="как-это-работает-зачем-два-force">Как это работает: зачем два &ndash;force</h2>
<p><code>systemctl reboot</code> без флагов просит systemd корректно завершить все юниты. Если systemd1 виснет, запрос не проходит. Два <code>--force</code> — это «мне плевать на зависшие службы, перезагружайся»:</p>
<ul>
<li>первый <code>--force</code> — пропустить остановку юнитов (не ждать, пока всё аккуратно завершится),</li>
<li>второй <code>--force</code> (для reboot) — выполнить системный вызов перезагрузки напрямую, <strong>в обход systemd как менеджера</strong>.</li>
</ul>
<p>То есть это фактически «аварийная» перезагрузка через системный механизм ядра (reboot(2)), минуя зависший менеджер. Риск — грязное завершение: незаписанные данные могут потеряться, но при зависшей шине это часто единственный вариант.</p>
<h2 id="после-перезагрузки">После перезагрузки</h2>
<p>Система поднялась за ~11 минут:</p>
<ul>
<li><code>systemctl is-system-running</code> → <code>degraded</code> (отвечает мгновенно — шина жива);</li>
<li><code>org.freedesktop.systemd1</code> на busctl теперь <strong>активирован</strong> (PID systemd, <code>:1.5</code>), а не <code>(activatable)</code>;</li>
<li>docker и containerd — <code>active</code>;</li>
<li><strong>все 27 контейнеров</strong> поднялись сами (restart-политики <code>unless-stopped</code>/<code>always</code> сработали): gitea, netbox, grafana, prometheus, loki, gotosocial, garage, ollama, open-webui, searxng и остальные;</li>
<li><code>/mnt/yandex-disk</code> смонтирован и отвечает; <code>/opt/hermes/obsidian-vault</code> (s3fs) тоже на месте.</li>
</ul>
<p>Единственный failed-юнит — <code>mdmonitor.service</code> (мониторинг MD-массивов). Падает с <code>mdadm: No mail address or alert command - not monitoring</code> — это не поломка, а отсутствие настроенного алерта. На рабочие массивы не влияет, можно замаскировать.</p>
<h2 id="выводы">Выводы</h2>
<ol>
<li><strong>Если systemctl молчит, а docker работает — значит, дело в шине, а не в docker.</strong> Проверяй <code>busctl | grep systemd1</code> и <code>nlwp</code> у PID 1.</li>
<li><strong><code>daemon-reexec</code> не всегда реанимирует</strong> — если у systemd остался один поток, перезапускать себя фактически некому.</li>
<li><strong>Обычный <code>systemctl reboot</code> тоже идёт через systemd1</strong> — при висящей шине он не сработает. Нужен <code>--force --force</code>.</li>
<li><strong>FUSE-зависание может быть триггером</strong>, но не обязательно причиной. Если точка перемонтирована и отвечает, а systemd1 всё равно молчит — лечится только перезагрузкой.</li>
<li><strong>Restart-политики контейнеров себя отрабатывают</strong>: <code>unless-stopped</code>/<code>always</code> подняли всё после ребута, ничего не пришлось поднимать руками.</li>
</ol>
<p>Полный разбор с командами, как это диагностировать, — в WALKTHROUGH проекта.</p>
<hr>
<p><strong>Теги:</strong> #systemd #systemctl #dbus #fuse #davfs2 #reboot #администрирование #грабли</p>
<p>Если у вас <code>systemctl</code> молчит, а контейнеры живут — проверьте <code>busctl | grep systemd1</code> и <code>ps -o nlwp -p 1</code>. И не тратьте время на daemon-reexec: при пульсе «один поток» перезагрузка всё равно неизбежна.</p>
]]></content:encoded></item></channel></rss>