diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/NetworkManager.service.d/hassos.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/NetworkManager.service.d/hassos.conf new file mode 100644 index 000000000..09dd23d8b --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/NetworkManager.service.d/hassos.conf @@ -0,0 +1,2 @@ +[Unit] +RequiresMountsFor=/etc/hostname /etc/hosts /etc/NetworkManager/system-connections diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/avahi-daemon.service.d/hassos.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/avahi-daemon.service.d/hassos.conf new file mode 100644 index 000000000..7a243b5b1 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/avahi-daemon.service.d/hassos.conf @@ -0,0 +1,2 @@ +[Unit] +RequiresMountsFor=/etc/hostname diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/avahi-daemon.service.d/nm.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/avahi-daemon.service.d/nm.conf index 31a36df3a..0a38143e9 100644 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/avahi-daemon.service.d/nm.conf +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/avahi-daemon.service.d/nm.conf @@ -1,2 +1,3 @@ [Unit] -After=NetworkManager.service +Wants=network-online.target +After=network-online.target diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/nm.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/nm.conf new file mode 100644 index 000000000..0a38143e9 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/nm.conf @@ -0,0 +1,3 @@ +[Unit] +Wants=network-online.target +After=network-online.target diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/getty@.service.d/hassos.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/getty@.service.d/hassos.conf new file mode 100644 index 000000000..2217bfed9 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/getty@.service.d/hassos.conf @@ -0,0 +1,3 @@ +[Unit] +Wants=hassos-supervisor.service +After=hassos-supervisor.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/serial-getty@.service.d/docker.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/serial-getty@.service.d/docker.conf new file mode 100644 index 000000000..53a8d88b0 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/serial-getty@.service.d/docker.conf @@ -0,0 +1,3 @@ +[Unit] +Requires=docker.service +After=docker.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/serial-getty@.service.d/hassos.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/serial-getty@.service.d/hassos.conf index 53a8d88b0..2217bfed9 100644 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/serial-getty@.service.d/hassos.conf +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/serial-getty@.service.d/hassos.conf @@ -1,3 +1,3 @@ [Unit] -Requires=docker.service -After=docker.service +Wants=hassos-supervisor.service +After=hassos-supervisor.service diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-supervisor.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-supervisor.service index 195314d83..d21ac9897 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-supervisor.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-supervisor.service @@ -1,7 +1,8 @@ [Unit] Description=HassOS supervisor Requires=docker.service -After=docker.service rauc.service dbus.socket NetworkManager.service +Wants=network-online.target +After=docker.service rauc.service dbus.socket network-online.target RequiresMountsFor=/mnt/data StartLimitIntervalSec=60 StartLimitBurst=5 diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassos-rate b/buildroot-external/rootfs-overlay/usr/sbin/hassos-rate index 79bbe662a..517b652de 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassos-rate +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-rate @@ -15,12 +15,12 @@ function mark_bad() { #### Check system #### # Docker state -if ! systemctl -q is-active docker; then +if systemctl -q is-failed docker; then mark_bad fi # Docker state -if ! systemctl -q is-active hassos-supervisor; then +if systemctl -q is-failed hassos-supervisor; then mark_bad fi diff --git a/buildroot-patches/0009-NetworkManager-allow-to-wait-on-boot.patch b/buildroot-patches/0009-NetworkManager-allow-to-wait-on-boot.patch new file mode 100644 index 000000000..273dd981a --- /dev/null +++ b/buildroot-patches/0009-NetworkManager-allow-to-wait-on-boot.patch @@ -0,0 +1,34 @@ +From 590565bc07f563f978004727dc817dc89527377a Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Sat, 31 Mar 2018 16:58:14 +0200 +Subject: [PATCH 1/1] NetworkManager: allow to wait on boot + +Signed-off-by: Pascal Vizeli +--- + package/network-manager/network-manager.mk | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/package/network-manager/network-manager.mk b/package/network-manager/network-manager.mk +index a520aad..fb2012a 100644 +--- a/package/network-manager/network-manager.mk ++++ b/package/network-manager/network-manager.mk +@@ -93,6 +93,7 @@ endef + + define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants ++ mkdir -p $(TARGET_DIR)/etc/systemd/system/network-online.target.wants + + ln -sf /usr/lib/systemd/system/NetworkManager.service \ + $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service +@@ -100,6 +101,9 @@ define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD + ln -sf /usr/lib/systemd/system/NetworkManager.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/NetworkManager.service + ++ ln -sf /usr/lib/systemd/system/NetworkManager-wait-online.service \ ++ $(TARGET_DIR)/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service ++ + ln -sf /usr/lib/systemd/system/NetworkManager-dispatcher.service \ + $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service + endef +-- +2.7.4 diff --git a/buildroot/package/network-manager/network-manager.mk b/buildroot/package/network-manager/network-manager.mk index 846605eb8..b07059f79 100644 --- a/buildroot/package/network-manager/network-manager.mk +++ b/buildroot/package/network-manager/network-manager.mk @@ -93,6 +93,7 @@ endef define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + mkdir -p $(TARGET_DIR)/etc/systemd/system/network-online.target.wants ln -sf /usr/lib/systemd/system/NetworkManager.service \ $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service @@ -100,6 +101,9 @@ define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD ln -sf /usr/lib/systemd/system/NetworkManager.service \ $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/NetworkManager.service + ln -sf /usr/lib/systemd/system/NetworkManager-wait-online.service \ + $(TARGET_DIR)/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service + ln -sf /usr/lib/systemd/system/NetworkManager-dispatcher.service \ $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service endef