diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-persists-journald.service b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-persists-journald.service new file mode 120000 index 000000000..fdc4db7b8 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-persists-journald.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/hassos-persists-journald.service \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-persists-journald.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-persists-journald.service new file mode 100644 index 000000000..0f98b1fae --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-persists-journald.service @@ -0,0 +1,14 @@ +[Unit] +Description=HassOS persists journald +Requires=var-log-journal.mount +After=sysinit.target systemd-journald.service +RefuseManualStart=true +RefuseManualStop=true + +[Service] +Type=oneshot +ExecStart=/usr/sbin/hassos-persists-journald +RemainAfterExit=true + +[Install] +WantedBy=multi-user.target diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassos-persists-journald b/buildroot-external/rootfs-overlay/usr/sbin/hassos-persists-journald new file mode 100755 index 000000000..bfb986833 --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-persists-journald @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +MACHINE_ID=$(cat /etc/machine-id) +CURRENT_LOGS=/var/log/journal/${MACHINE_ID} + +# Cleanup +if [ ! -d ${CURRENT_LOGS} ]; + rm -rf /var/log/journal/* + exit 0 +fi + +# Loop all logs folder and move +for log_folder in /var/log/journal/*; do + # Not a log folder + if [ ! -d ${log_folder} ]; then + continue + fi + + # Current log folder + if (echo ${log_folder} | grep ${MACHINE_ID}); then + continue + fi + + mv ${log_folder}/* ${CURRENT_LOGS}/ + rm -rf ${log_folder} +done + +journalctl --vacuum-size=20M