From b2aa96c9bda7e3ae6a75acc333944116ae9e23d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Mon, 3 Mar 2025 09:24:34 +0100 Subject: [PATCH 01/14] Bump OS to pre-release version 15.0.rc1 --- buildroot-external/meta | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/meta b/buildroot-external/meta index 3557c72bf..4e685ac96 100644 --- a/buildroot-external/meta +++ b/buildroot-external/meta @@ -1,8 +1,8 @@ VERSION_MAJOR="15" VERSION_MINOR="0" -VERSION_SUFFIX="dev0" +VERSION_SUFFIX="rc1" HASSOS_NAME="Home Assistant OS" HASSOS_ID="haos" -DEPLOYMENT="development" +DEPLOYMENT="staging" From 33b92f53f96ad67f3b24a343bd6b4398445fde80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 15:12:14 +0100 Subject: [PATCH 02/14] Bump docker/build-push-action from 6.14.0 to 6.15.0 (#3909) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.14.0 to 6.15.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v6.14.0...v6.15.0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 668c84959a656cdd3a246d42a2ebe1e553dbfdff) --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index aa80334c8..f068ac4a5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -144,7 +144,7 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and Push - uses: docker/build-push-action@v6.14.0 + uses: docker/build-push-action@v6.15.0 id: build_haos_builder with: context: . From f7bfd161adcf73389fa36b0ceaedc6cb687a4afa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 15:12:43 +0100 Subject: [PATCH 03/14] Bump docker/setup-buildx-action from 3.9.0 to 3.10.0 (#3910) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.9.0 to 3.10.0. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v3.9.0...v3.10.0) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit c72cf09cc36d13782dcdaed4eeb77ed5031a595c) --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f068ac4a5..fdd90ffae 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -136,7 +136,7 @@ jobs: } - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3.9.0 + uses: docker/setup-buildx-action@v3.10.0 - name: Log in to the GitHub container registry uses: docker/login-action@v3.3.0 with: From 16e6599832bae07af26c2e1baf2432b4d2fa2e56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Wed, 5 Mar 2025 19:04:15 +0100 Subject: [PATCH 04/14] Add test that no AppArmor denied events are produced (#3912) As discussed in #3885, now that fixed Supervisor is in stable, we can test that no AppArmor denied events are logged during CI tests. (cherry picked from commit 610ced0162aa1c76915a0cc2adf16d93c858358e) --- tests/supervisor_test/test_supervisor.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/supervisor_test/test_supervisor.py b/tests/supervisor_test/test_supervisor.py index 8351fb6c5..1f2e83c79 100644 --- a/tests/supervisor_test/test_supervisor.py +++ b/tests/supervisor_test/test_supervisor.py @@ -192,6 +192,13 @@ def test_restore_ssl_directory(shell_json, stash): logger.info("Backup restore result: %s", result) +@pytest.mark.dependency(depends=["test_start_supervisor"]) +def test_no_apparmor_denies(shell): + """Check there are no AppArmor denies in the logs raised during Supervisor tests.""" + output = shell.run_check("journalctl -t audit | grep DENIED || true") + assert not output, f"AppArmor denies found: {output}" + + @pytest.mark.dependency(depends=["test_start_supervisor"]) def test_kernel_not_tainted(shell): """Check if the kernel is not tainted - do it at the end of the From 6e8c390096d784fa3083d918eada716d28861f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Wed, 5 Mar 2025 19:04:23 +0100 Subject: [PATCH 05/14] Update RPi firmware to fix boot with 2025-02-11 bootloader (#3913) * buildroot 7d5c3b5e70...b079a02a9a (1): > package/rpi-firmware: bump to 1.20250305 with updated firmware binaries Fixes #3911 (cherry picked from commit d4e11afd3c98619bb83c19bee876902f794f8376) --- buildroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot b/buildroot index 7d5c3b5e7..b079a02a9 160000 --- a/buildroot +++ b/buildroot @@ -1 +1 @@ -Subproject commit 7d5c3b5e70cd1d3198de8529c4c6fb74010c5781 +Subproject commit b079a02a9a8606ef8cde7a5e640af47a9a4ff104 From 25ca83287e0e7e0646d9154423157ba48ca6422c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Wed, 5 Mar 2025 19:06:27 +0100 Subject: [PATCH 06/14] Bump os-agent to v1.7.2 (#3914) Update to latest version that fixes start order in haos-agent.service. Without that, OS Agent reports incorrect swappiness after boot. (cherry picked from commit 36d905720a12742b4d46f3a0a6b0ca4628ed3f1d) --- buildroot-external/package/os-agent/os-agent.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/package/os-agent/os-agent.mk b/buildroot-external/package/os-agent/os-agent.mk index a0891ffd5..14ce8b1e8 100644 --- a/buildroot-external/package/os-agent/os-agent.mk +++ b/buildroot-external/package/os-agent/os-agent.mk @@ -4,7 +4,7 @@ # ################################################################################ -OS_AGENT_VERSION = 1.7.1 +OS_AGENT_VERSION = 1.7.2 OS_AGENT_SITE = $(call github,home-assistant,os-agent,$(OS_AGENT_VERSION)) OS_AGENT_LICENSE = Apache License 2.0 OS_AGENT_LICENSE_FILES = LICENSE From 4ccc875520e5b5294117008f0cb3a82af0dedba6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Thu, 6 Mar 2025 16:39:40 +0100 Subject: [PATCH 07/14] Use shell script instead of OS Agent for device wipe (#3916) Use simple shell script to perform device wipe instead of calling OS Agent to do that through the UDisks2 API. While it might have been a good idea to use high level interface for that back then, it turns out it causes more issues than the benefits it could bring. Main problem currently is that the OS Agent needs to read sysctl variables, but those are only set after mounting the overlay partition. But at the same time, the overlay partition can't be mounted if we want to wipe it - this creates a dependency cycle through the haos-agent.service. To get rid of the cycle and simplify things, use a shell script doing basically the same what the OS Agent does. Since the wipe functionality only makes sense to be implemented on HAOS targets (not on Supervised), there's little point of having it in higher layer of abstraction that OS Agent provides. It should be also checked if changes from #1291 are needed anymore, as the driving factor for those have been probably the wipe feature in OS Agent too, but at this point they seem to be harmless. (cherry picked from commit 6c4f32a8c0cb48ba203d48068a773a5b3895ccfc) --- .../usr/lib/systemd/system/haos-wipe.service | 6 ++-- .../rootfs-overlay/usr/libexec/haos-wipe | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100755 buildroot-external/rootfs-overlay/usr/libexec/haos-wipe diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/haos-wipe.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/haos-wipe.service index 8df2b5647..c15119f53 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/haos-wipe.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/haos-wipe.service @@ -4,15 +4,13 @@ DefaultDependencies=no RefuseManualStart=true RefuseManualStop=true Wants=mnt-boot.mount -Requires=haos-agent.service -After=haos-agent.service mnt-boot.mount +After=mnt-boot.mount Before=mnt-data.mount mnt-overlay.mount ConditionKernelCommandLine=haos.wipe=1 [Service] Type=oneshot -ExecStart=/usr/bin/busctl --verbose --timeout=1h call io.hass.os /io/hass/os/System io.hass.os.System WipeDevice -ExecStartPost=/usr/bin/sed -i 's/\s*haos.wipe=1//g' /mnt/boot/cmdline.txt +ExecStart=/usr/libexec/haos-wipe [Install] WantedBy=sysinit.target diff --git a/buildroot-external/rootfs-overlay/usr/libexec/haos-wipe b/buildroot-external/rootfs-overlay/usr/libexec/haos-wipe new file mode 100755 index 000000000..7a1c24892 --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/libexec/haos-wipe @@ -0,0 +1,30 @@ +#!/bin/sh +set -e + +PARTITION_OVERLAY="/dev/disk/by-label/hassos-overlay" +PARTITION_DATA="/dev/disk/by-label/hassos-data" + +if [ ! -b "$PARTITION_OVERLAY" ]; then + echo "[ERROR] Overlay partition not found" + exit 1 +elif findmnt "$PARTITION_OVERLAY" > /dev/null; then + echo "[ERROR] Unable to wipe overlay partition while it is already mounted" + exit 1 +fi + +if [ ! -b "$PARTITION_DATA" ]; then + echo "[ERROR] Data partition not found" + exit 1 +elif findmnt "$PARTITION_DATA" > /dev/null; then + echo "[ERROR] Unable to wipe data partition while it is already mounted" + exit 1 +fi + +echo "[INFO] Wiping data partition" +mkfs.ext4 -L "hassos-data" -E lazy_itable_init=0,lazy_journal_init=0 "$PARTITION_DATA" + +echo "[INFO] Wiping overlay partition" +mkfs.ext4 -L "hassos-overlay" -I 256 -E lazy_itable_init=0,lazy_journal_init=0 "$PARTITION_OVERLAY" + +echo "[INFO] Removing wipe flag from cmdline.txt" +/usr/bin/sed -i 's/\s*haos.wipe=1//g' /mnt/boot/cmdline.txt From 084d0acee4a87103c74ffde984f920f8a38625fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Thu, 6 Mar 2025 18:23:34 +0100 Subject: [PATCH 08/14] Improve tests traceability, add test for Systemd dependency cycles (#3917) * Add test checking journal logs for dependency cycles * Run some test cases to get their output also when full init fails * Remove high timeouts from the times when GHA couldn't use KVM * Enable logging durations for future optimizations (cherry picked from commit 4a1d2b75b94483efc749e88aab95fa639aa2bb0a) --- .github/workflows/test.yaml | 2 +- tests/smoke_test/test_basic.py | 14 ++++++++------ tests/smoke_test/test_offline.py | 2 +- tests/supervisor_test/test_supervisor.py | 6 +++--- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 7b7804fe5..c408cf991 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -74,7 +74,7 @@ jobs: - name: Run tests run: | - ./tests/run_tests.sh + ./tests/run_tests.sh --durations=0 --durations-min=5.0 - name: Archive logs uses: actions/upload-artifact@v4 diff --git a/tests/smoke_test/test_basic.py b/tests/smoke_test/test_basic.py index 9ae86b104..1b275685e 100644 --- a/tests/smoke_test/test_basic.py +++ b/tests/smoke_test/test_basic.py @@ -8,7 +8,7 @@ _LOGGER = logging.getLogger(__name__) @pytest.mark.dependency() -@pytest.mark.timeout(600) +@pytest.mark.timeout(120) def test_init(shell): def check_container_running(container_name): out = shell.run_check( @@ -35,7 +35,6 @@ def test_init(shell): _LOGGER.info("%s", "\n".join(output)) -@pytest.mark.dependency(depends=["test_init"]) def test_rauc_status(shell, shell_json): rauc_status = shell.run_check("rauc status --output-format=shell --detailed") # RAUC_BOOT_PRIMARY won't be set if correct grub env is missing @@ -55,7 +54,6 @@ def test_rauc_status(shell, shell_json): assert f"RAUC_SLOT_STATUS_BUNDLE_VERSION_{booted_idx + 1}='{expected_version}'" in rauc_status -@pytest.mark.dependency(depends=["test_init"]) def test_dmesg(shell): output = shell.run_check("dmesg") _LOGGER.info("%s", "\n".join(output)) @@ -67,17 +65,22 @@ def test_supervisor_logs(shell): _LOGGER.info("%s", "\n".join(output)) -@pytest.mark.dependency(depends=["test_init"]) def test_systemctl_status(shell): output = shell.run_check("systemctl --no-pager -l status -a || true") _LOGGER.info("%s", "\n".join(output)) -@pytest.mark.dependency(depends=["test_init"]) + def test_systemctl_check_no_failed(shell): output = shell.run_check("systemctl --no-pager -l list-units --state=failed") assert "0 loaded units listed." in output, f"Some units failed:\n{"\n".join(output)}" +def test_systemctl_no_cycles(shell): + # we don't have systemd-analyze available, so check it naively using grep + output = shell.run_check("journalctl -b0 | grep 'ordering cycle' || true") + assert not output, f"Found Systemd dependency cycles:\n{"\n".join(output)}" + + @pytest.mark.dependency(depends=["test_init"]) def test_custom_swap_size(shell, target): output = shell.run_check("stat -c '%s' /mnt/data/swapfile") @@ -103,7 +106,6 @@ def test_no_swap(shell, target): assert swapon == [], f"Swapfile still exists: {swapon}" -@pytest.mark.dependency(depends=["test_init"]) def test_kernel_not_tainted(shell): """Check if the kernel is not tainted - do it at the end of the test suite to increase the chance of catching issues.""" diff --git a/tests/smoke_test/test_offline.py b/tests/smoke_test/test_offline.py index a91785992..48b1128c5 100644 --- a/tests/smoke_test/test_offline.py +++ b/tests/smoke_test/test_offline.py @@ -27,7 +27,7 @@ def _check_connectivity(shell, *, connected): raise AssertionError(f"expecting connected but all targets are down") -@pytest.mark.timeout(300) # takes quite a while also because of 90s NTP sync timeout +@pytest.mark.timeout(120) @pytest.mark.usefixtures("without_internet") def test_ha_runs_offline(shell): def check_container_running(container_name): diff --git a/tests/supervisor_test/test_supervisor.py b/tests/supervisor_test/test_supervisor.py index 1f2e83c79..d8f4c4b56 100644 --- a/tests/supervisor_test/test_supervisor.py +++ b/tests/supervisor_test/test_supervisor.py @@ -16,7 +16,7 @@ def stash() -> dict: @pytest.mark.dependency() -@pytest.mark.timeout(600) +@pytest.mark.timeout(120) def test_start_supervisor(shell, shell_json): def check_container_running(container_name): out = shell.run_check(f"docker container inspect -f '{{{{.State.Status}}}}' {container_name} || true") @@ -55,7 +55,7 @@ def test_check_supervisor(shell_json): @pytest.mark.dependency(depends=["test_check_supervisor"]) -@pytest.mark.timeout(300) +@pytest.mark.timeout(120) def test_update_supervisor(shell_json): supervisor_info = shell_json("ha supervisor info --no-progress --raw-json") supervisor_version = supervisor_info.get("data").get("version") @@ -153,7 +153,7 @@ def test_addon_uninstall(shell_json): @pytest.mark.dependency(depends=["test_supervisor_is_updated"]) -@pytest.mark.timeout(450) +@pytest.mark.timeout(120) def test_restart_supervisor(shell, shell_json): result = shell_json("ha supervisor restart --no-progress --raw-json") assert result.get("result") == "ok", f"Supervisor restart failed: {result}" From f723d9315902084c2ed51b2a6bba3a571a7e58db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Tue, 11 Mar 2025 15:12:54 +0100 Subject: [PATCH 09/14] Linux: Update kernel to 6.12.18 (#3919) * https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.18 (cherry picked from commit 3fb9c161c0f224e91f534bbe152d3dd46cc1375e) --- Documentation/kernel.md | 24 +++++++++---------- .../configs/generic_aarch64_defconfig | 2 +- .../configs/generic_x86_64_defconfig | 2 +- buildroot-external/configs/green_defconfig | 2 +- .../configs/khadas_vim3_defconfig | 2 +- .../configs/odroid_c2_defconfig | 2 +- .../configs/odroid_c4_defconfig | 2 +- .../configs/odroid_m1_defconfig | 2 +- .../configs/odroid_m1s_defconfig | 2 +- .../configs/odroid_n2_defconfig | 2 +- .../configs/odroid_xu4_defconfig | 2 +- buildroot-external/configs/ova_defconfig | 2 +- buildroot-external/configs/tinker_defconfig | 2 +- 13 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Documentation/kernel.md b/Documentation/kernel.md index 9103c0945..3ad6f9ccc 100644 --- a/Documentation/kernel.md +++ b/Documentation/kernel.md @@ -3,7 +3,7 @@ | Board | Version | |-------|---------| -| Open Virtual Appliance | 6.12.17 | +| Open Virtual Appliance | 6.12.18 | | Raspberry Pi | 6.6.74 | | Raspberry Pi 0-W | 6.6.74 | | Raspberry Pi 2 | 6.6.74 | @@ -11,14 +11,14 @@ | Raspberry Pi 4 | 6.6.74 | | Raspberry Pi 5 | 6.6.74 | | Home Assistant Yellow | 6.6.74 | -| Home Assistant Green | 6.12.17 | -| Tinker Board | 6.12.17 | -| ODROID-C2 | 6.12.17 | -| ODROID-C4 | 6.12.17 | -| ODROID-M1 | 6.12.17 | -| ODROID-M1S | 6.12.17 | -| ODROID-N2 | 6.12.17 | -| ODROID-XU4 | 6.12.17 | -| Generic aarch64 | 6.12.17 | -| Generic x86-64 | 6.12.17 | -| Khadas VIM3 | 6.12.17 | +| Home Assistant Green | 6.12.18 | +| Tinker Board | 6.12.18 | +| ODROID-C2 | 6.12.18 | +| ODROID-C4 | 6.12.18 | +| ODROID-M1 | 6.12.18 | +| ODROID-M1S | 6.12.18 | +| ODROID-N2 | 6.12.18 | +| ODROID-XU4 | 6.12.18 | +| Generic aarch64 | 6.12.18 | +| Generic x86-64 | 6.12.18 | +| Khadas VIM3 | 6.12.18 | diff --git a/buildroot-external/configs/generic_aarch64_defconfig b/buildroot-external/configs/generic_aarch64_defconfig index 25f524f06..cd318843c 100644 --- a/buildroot-external/configs/generic_aarch64_defconfig +++ b/buildroot-external/configs/generic_aarch64_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/arm-uefi/generic-aarch64 $(BR2_EXTERNAL_HASSOS_PATH)/board/arm-uefi/generic-aarch64/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless-pci.config $(BR2_EXTERNAL_HASSOS_PATH)/board/arm-uefi/generic-aarch64/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/generic_x86_64_defconfig b/buildroot-external/configs/generic_x86_64_defconfig index 9fb641530..b3c04c820 100644 --- a/buildroot-external/configs/generic_x86_64_defconfig +++ b/buildroot-external/configs/generic_x86_64_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/pc/generic-x86-64 $(BR2_EXTERNAL_HASSOS_PATH)/board/pc/generic-x86-64/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless-pci.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-pci.config $(BR2_EXTERNAL_HASSOS_PATH)/board/pc/generic-x86-64/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/green_defconfig b/buildroot-external/configs/green_defconfig index cef1a3aa0..df4869b07 100755 --- a/buildroot-external/configs/green_defconfig +++ b/buildroot-external/configs/green_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/nabucasa/green $(BR2_EXTERNAL_HASSOS_PATH)/board/nabucasa/green/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/kernel-arm64-rockchip.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config $(BR2_EXTERNAL_HASSOS_PATH)/board/nabucasa/green/kernel.config" diff --git a/buildroot-external/configs/khadas_vim3_defconfig b/buildroot-external/configs/khadas_vim3_defconfig index 957ba7ffa..4eeb238f5 100644 --- a/buildroot-external/configs/khadas_vim3_defconfig +++ b/buildroot-external/configs/khadas_vim3_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/khadas/vim3 $(BR2_EXTERNAL_HASSOS_PATH)/board/khadas/vim3/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/khadas/kernel-vim.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config" diff --git a/buildroot-external/configs/odroid_c2_defconfig b/buildroot-external/configs/odroid_c2_defconfig index 83ed3d46e..684727e8a 100644 --- a/buildroot-external/configs/odroid_c2_defconfig +++ b/buildroot-external/configs/odroid_c2_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c2 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c2/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/kernel-amlogic.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config" diff --git a/buildroot-external/configs/odroid_c4_defconfig b/buildroot-external/configs/odroid_c4_defconfig index 9e05661a4..de712714c 100644 --- a/buildroot-external/configs/odroid_c4_defconfig +++ b/buildroot-external/configs/odroid_c4_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c4 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c4/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/kernel-amlogic.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config" diff --git a/buildroot-external/configs/odroid_m1_defconfig b/buildroot-external/configs/odroid_m1_defconfig index 54468135d..c0c2e7647 100644 --- a/buildroot-external/configs/odroid_m1_defconfig +++ b/buildroot-external/configs/odroid_m1_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-m1 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-m1/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/kernel-arm64-rockchip.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-m1/kernel.config" diff --git a/buildroot-external/configs/odroid_m1s_defconfig b/buildroot-external/configs/odroid_m1s_defconfig index 5c9602537..39bd2dfdb 100644 --- a/buildroot-external/configs/odroid_m1s_defconfig +++ b/buildroot-external/configs/odroid_m1s_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-m1s $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-m1s/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/kernel-arm64-rockchip.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-m1s/kernel.config" diff --git a/buildroot-external/configs/odroid_n2_defconfig b/buildroot-external/configs/odroid_n2_defconfig index ddb502de4..e67822892 100644 --- a/buildroot-external/configs/odroid_n2_defconfig +++ b/buildroot-external/configs/odroid_n2_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-n2 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-n2/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/kernel-amlogic.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-n2/kernel.config" diff --git a/buildroot-external/configs/odroid_xu4_defconfig b/buildroot-external/configs/odroid_xu4_defconfig index f78e90dd0..fcfa310e5 100644 --- a/buildroot-external/configs/odroid_xu4_defconfig +++ b/buildroot-external/configs/odroid_xu4_defconfig @@ -17,7 +17,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-xu4 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-xu4/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_DEFCONFIG="exynos" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-xu4/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index 8f762164b..9e01c3f33 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -16,7 +16,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/pc/ova $(BR2_EXTERNAL_HASSOS_PATH)/board/pc/ova/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-pci.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless-pci.config $(BR2_EXTERNAL_HASSOS_PATH)/board/pc/ova/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/tinker_defconfig b/buildroot-external/configs/tinker_defconfig index 53290fa8c..fc2680669 100644 --- a/buildroot-external/configs/tinker_defconfig +++ b/buildroot-external/configs/tinker_defconfig @@ -18,7 +18,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/asus/tinker $(BR2_EXTERNAL_HASSOS_PATH)/board/asus/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/asus/tinker/kernel.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/v6.12.y/device-support-wireless.config" From 34a422401da159c1a2e973107ccb1a9d94a8cc2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Tue, 11 Mar 2025 15:15:28 +0100 Subject: [PATCH 10/14] Update Hailo PCIe driver and firmware to v4.20.1 (#3922) Update to latest version of the driver and matching firmware. The most common application for it - Frigate - currently has 4.19.0 in stable but 4.20.0 is staged in dev. As it's easier to select OS version than a version of the add-on, it makes sense to stay ahead in HAOS. This also means Frigate needs to be updated to the matching version (as staying on an arbitrary older patch revision doesn't make much sense either). (cherry picked from commit 173a4388fe7ee2f26c277b6c2dccdcab1b9f0a58) --- buildroot-external/package/hailo-pci/hailo-pci.hash | 2 +- buildroot-external/package/hailo-pci/hailo-pci.mk | 2 +- buildroot-external/package/hailo8-firmware/hailo8-firmware.hash | 2 +- buildroot-external/package/hailo8-firmware/hailo8-firmware.mk | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/package/hailo-pci/hailo-pci.hash b/buildroot-external/package/hailo-pci/hailo-pci.hash index 13e5a59c2..6de428a01 100644 --- a/buildroot-external/package/hailo-pci/hailo-pci.hash +++ b/buildroot-external/package/hailo-pci/hailo-pci.hash @@ -1,3 +1,3 @@ # Locally computed sha256 f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505 LICENSE -sha256 0c687d229968ba3092ee214ed45be8ccaedf005f8a2c4fb8f26c439608c960e9 hailo-pci-v4.19.0.tar.gz +sha256 517683771d4d0c5e23a77d00167c46e633d322c4939adc39babbced97a658a5a hailo-pci-v4.20.1.tar.gz diff --git a/buildroot-external/package/hailo-pci/hailo-pci.mk b/buildroot-external/package/hailo-pci/hailo-pci.mk index 3751e1030..1d390f3de 100644 --- a/buildroot-external/package/hailo-pci/hailo-pci.mk +++ b/buildroot-external/package/hailo-pci/hailo-pci.mk @@ -1,4 +1,4 @@ -HAILO_PCI_VERSION = v4.19.0 +HAILO_PCI_VERSION = v4.20.1 HAILO_PCI_SITE = $(call github,hailo-ai,hailort-drivers,$(HAILO_PCI_VERSION)) HAILO_PCI_LICENSE = GPL-2.0 HAILO_PCI_LICENSE_FILES = LICENSE diff --git a/buildroot-external/package/hailo8-firmware/hailo8-firmware.hash b/buildroot-external/package/hailo8-firmware/hailo8-firmware.hash index cd4b59a41..fab4db90d 100644 --- a/buildroot-external/package/hailo8-firmware/hailo8-firmware.hash +++ b/buildroot-external/package/hailo8-firmware/hailo8-firmware.hash @@ -1 +1 @@ -sha256 160179e523b71aca4c1fabdcbb91e19b167d9c3f0c4d789180f8fc9ee82b4c5c hailo8_fw.4.19.0.bin +sha256 32e26fffa11f3909a07340ca3f4714e5f20ce734f497a893b129ef978cde2593 hailo8_fw.4.20.1.bin diff --git a/buildroot-external/package/hailo8-firmware/hailo8-firmware.mk b/buildroot-external/package/hailo8-firmware/hailo8-firmware.mk index 872e83ca1..24a206510 100644 --- a/buildroot-external/package/hailo8-firmware/hailo8-firmware.mk +++ b/buildroot-external/package/hailo8-firmware/hailo8-firmware.mk @@ -4,7 +4,7 @@ # ################################################################################ -HAILO8_FIRMWARE_VERSION = 4.19.0 +HAILO8_FIRMWARE_VERSION = 4.20.1 HAILO8_FIRMWARE_LICENSE = PROPRIETARY HAILO8_FIRMWARE_SOURCE= hailo8_fw.$(HAILO8_FIRMWARE_VERSION).bin HAILO8_FIRMWARE_SITE="https://hailo-hailort.s3.eu-west-2.amazonaws.com/Hailo8/$(HAILO8_FIRMWARE_VERSION)/FW" From 7e6e4119a713b75964d6846a725ce69d595b16aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Tue, 11 Mar 2025 15:24:08 +0100 Subject: [PATCH 11/14] Fix runtime device permissions update in runc v1.2.x (#3921) Add missing patch and update for latest runc version to fix losing device permissions when new devices are added in runtime. * buildroot b079a02a9a...3914f8cad5 (2): > package/runc: add patch for extended default allowed devices in v1.2.4 > package/runc: add missing patch to fix device permissions update Fixes #3915 (cherry picked from commit 04debe2f539c4275fd68fe4d38fee3f8b8bab84b) --- buildroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot b/buildroot index b079a02a9..3914f8cad 160000 --- a/buildroot +++ b/buildroot @@ -1 +1 @@ -Subproject commit b079a02a9a8606ef8cde7a5e640af47a9a4ff104 +Subproject commit 3914f8cad5a87a3aa1ba3aa04733887a869b87fe From a4190754fe79542a36c2193d26f8ef15c636b7a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Wed, 12 Mar 2025 20:07:26 +0100 Subject: [PATCH 12/14] Ensure haos-wipe service can be called only once per boot (#3924) In some cases, the wipe service may be called due to a race condition for the second time during the boot, very likely failing because the filesystems are already mounted. This can not be reproduced on OVA but can be fairly easy triggered e.g. on RPi. As we want the service to be executed exactly only once, we can do what's suggested in [1] and set the RemainAfterExit=yes. That should ensure the unit is not ever started for the second time. [1] https://www.github.com/systemd/systemd/issues/29367 (cherry picked from commit 24640c11aeb89290f7a1ecfd0c8c6527f8523e27) --- .../rootfs-overlay/usr/lib/systemd/system/haos-wipe.service | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/haos-wipe.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/haos-wipe.service index c15119f53..4aca55a49 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/haos-wipe.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/haos-wipe.service @@ -10,6 +10,7 @@ ConditionKernelCommandLine=haos.wipe=1 [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/libexec/haos-wipe [Install] From 5741be48bd2ebd6450f44f1e4dff26268d7ee39f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Thu, 13 Mar 2025 10:16:33 +0100 Subject: [PATCH 13/14] Bump OS to pre-release version 15.0.rc2 --- buildroot-external/meta | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/meta b/buildroot-external/meta index 4e685ac96..8cd67cb0d 100644 --- a/buildroot-external/meta +++ b/buildroot-external/meta @@ -1,6 +1,6 @@ VERSION_MAJOR="15" VERSION_MINOR="0" -VERSION_SUFFIX="rc1" +VERSION_SUFFIX="rc2" HASSOS_NAME="Home Assistant OS" HASSOS_ID="haos" From 248af90c9f11f710272f4b32844501924922428a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Mon, 17 Mar 2025 11:10:39 +0100 Subject: [PATCH 14/14] Bump OS to release version 15.0 --- buildroot-external/meta | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/meta b/buildroot-external/meta index 8cd67cb0d..188fde38d 100644 --- a/buildroot-external/meta +++ b/buildroot-external/meta @@ -1,8 +1,8 @@ VERSION_MAJOR="15" VERSION_MINOR="0" -VERSION_SUFFIX="rc2" +VERSION_SUFFIX="" HASSOS_NAME="Home Assistant OS" HASSOS_ID="haos" -DEPLOYMENT="staging" +DEPLOYMENT="production"