Skip to content

hostapp-update-hooks: introducity bootability check#3858

Draft
alexgg wants to merge 1 commit into
masterfrom
alexgg/hup-hook
Draft

hostapp-update-hooks: introducity bootability check#3858
alexgg wants to merge 1 commit into
masterfrom
alexgg/hup-hook

Conversation

@alexgg

@alexgg alexgg commented May 5, 2026

Copy link
Copy Markdown
Contributor

Make sure mobynit has enough head room to boot the rootfs container or fail the update process.

Change-type: patch


Contributor checklist

Reviewer Guidelines

  • When submitting a review, please pick:
    • 'Approve' if this change would be acceptable in the codebase (even if there are minor or cosmetic tweaks that could be improved).
    • 'Request Changes' if this change would not be acceptable in our codebase (e.g. bugs, changes that will make development harder in future, security/performance issues, etc).
    • 'Comment' if you don't feel you have enough information to decide either way (e.g. if you have major questions, or you don't understand the context of the change sufficiently to fully review yourself, but want to make a comment)

@alexgg alexgg marked this pull request as draft May 5, 2026 16:13
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:13 — with GitHub Actions Inactive
@alexgg alexgg had a problem deploying to sign.balena-cloud.com May 5, 2026 16:14 — with GitHub Actions Error
@alexgg alexgg force-pushed the alexgg/hup-hook branch from 6a87222 to 6b81e99 Compare May 5, 2026 16:15
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:16 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:16 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:16 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:16 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:16 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:16 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-production.us-east-1 May 5, 2026 16:16 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:16 — with GitHub Actions Inactive
@alexgg alexgg temporarily deployed to balena-cloud.com May 5, 2026 16:16 — with GitHub Actions Inactive
@flowzone-app

flowzone-app Bot commented May 5, 2026

Copy link
Copy Markdown
Contributor

Website deployed to CF Pages, 👀 preview link https://2fb80b56.balena-os.pages.dev

Make sure mobynit has enough head room to boot the rootfs container or
fail the update process.

Change-type: patch
Signed-off-by: Alex Gonzalez <alexg@balena.io>
@alexgg

alexgg commented May 6, 2026

Copy link
Copy Markdown
Contributor Author

The actual failure mode is kernel-side overlay workdir creation under v0.2.1

The kernel error:

overlayfs: failed to create directory /rootfs/balena/overlay2/<id>/work/work (errno: 28); mounting read-only

comes from the RW overlay mount that mobynit v0.2.1 performs through Docker's overlay2 graphdriver.

GetRWLayerrwLayerMountunix.Mount("", path, "", MS_REMOUNT, "") with no RDONLY flag

The kernel attempts to mkdir <workdir>/work for the RW overlay; if the partition has zero free blocks, that mkdir returns ENOSPC and overlayfs falls back to RO.

mobynit v1.0.0 closes this failure path replacing Docker packages with direct overlay2 metadata access. The kernel never tries to create work/work because the mount has no workdir.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant