Skip to content

journalctl is dead on every provisioned appliance boot — the /etc overlay buries the machine-id restore #967

Description

@VijitSingh97

Diagnosed from the battery's migration-hold leg, which read as a deadlock and was nothing of the kind: the hold committed and released 21 seconds into boot, but the harness greps journalctl, and journalctl on the guest reported "No journal files were found".

Mechanism: pithead-machine-id answered PID 1's read-only transient bind with a bind mount of its own over /etc/machine-id. Later the same boot, provision_console_login() mounts the /run-backed overlay over ALL of /etc — and an overlay's lower layer never shows a file bind mounted beneath it, so /etc/machine-id silently went back to reading the image's empty file. journalctl resolves the journal directory by the CURRENT id, found nothing, and every provisioned boot since the console-login feature has had a dead journalctl — the migration leg was simply the first assert to look.

Fix (on fix/battery-green): the restore mounts that same shared /etc overlay itself — whoever runs first mounts it, the other finds it — and writes the id through it, where every later reader actually looks. The adopt path also refuses loudly when there is no id to adopt instead of persisting an empty file.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appliancePithead OS appliance work — image, installer, RAUC updatesbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions