Skip to content

fix(install): don't stop getty@tty1 during a local-console install - #3241

Merged
vpetersson merged 1 commit into
Screenly:masterfrom
vpetersson-bot:fix/getty-console-install-6754
Aug 4, 2026
Merged

fix(install): don't stop getty@tty1 during a local-console install#3241
vpetersson merged 1 commit into
Screenly:masterfrom
vpetersson-bot:fix/getty-console-install-6754

Conversation

@vpetersson-bot

Copy link
Copy Markdown
Contributor

A user reported an install that went to a blank screen and locked them out. They traced the hang to the ansible task named Disable getty on tty1, which is what pinned this down.

Root cause

A local-console install runs on tty1 itself (ansible_connection=local). The tty1 login-prompt tasks in ansible/roles/system/tasks/boot.yml used:

    state: stopped
    enabled: false

state: stopped on getty@tty1.service (or raspi-config's autologin@tty1.service) tears down the session the installer is running in. Mid-install the screen goes blank, and because the login prompt has just been removed and SSH was never enabled, the user is locked out with no way back in. Installs run over SSH never hit this — the installer is not living on tty1 — which is exactly why the reporter only saw it on a direct-on-screen install.

Fix

Drop state: stopped from both the getty@tty1 and autologin@tty1 tasks and keep enabled: false. The two requirements are still both met:

  • Don't lock the user out mid-install: getty stays running for the rest of the install, so the console session survives.
  • No login prompt on the display afterwards: the install ends in a reboot (bin/install.sh), after which the now-disabled units do not start, so the signage display comes up with no login prompt.

A regression-guarding comment is added above the tasks so state: stopped is not reintroduced.

Testing

  • Confirmed on the x86 testbed that getty@tty1.service ends up disabled after this task runs, so no login prompt appears on the display on the next boot.
  • The console-kill itself is inherent to state: stopped on the unit hosting the active connection=local session; the SSH-vs-console asymmetry the reporter observed matches exactly.

Reported at https://forums.screenly.io/t/install-leading-to-blank-screen/6754

🤖 Generated with Claude Code

https://claude.ai/code/session_01HJ3ucEkn62cbgPoisAZ5LQ

A local-console install runs on tty1 itself (ansible_connection=local).
The 'Disable getty on tty1' step used state: stopped, which tears down
the very session the installer is running in: the screen goes blank
mid-install, and with the login prompt now gone and SSH not enabled the
user is locked out with no way back in. Installs run over SSH never hit
this, which is why it only bites direct-on-screen installs.

Drop state: stopped from the getty@tty1 and autologin@tty1 tasks and keep
enabled: false. The install ends in a reboot, after which the disabled
units do not start, so the display still comes up with no login prompt.
Reported at forums.screenly.io/t/install-leading-to-blank-screen/6754.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJ3ucEkn62cbgPoisAZ5LQ
@vpetersson-bot
vpetersson-bot requested a review from a team as a code owner August 4, 2026 16:02
@sonarqubecloud

sonarqubecloud Bot commented Aug 4, 2026

Copy link
Copy Markdown

@codecov

codecov Bot commented Aug 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (master@071d92f). Learn more about missing BASE report.

Additional details and impacted files
@@            Coverage Diff            @@
##             master    #3241   +/-   ##
=========================================
  Coverage          ?   90.82%           
=========================================
  Files             ?       76           
  Lines             ?     8361           
  Branches          ?      885           
=========================================
  Hits              ?     7594           
  Misses            ?      549           
  Partials          ?      218           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@vpetersson
vpetersson merged commit 4542ed9 into Screenly:master Aug 4, 2026
11 checks passed
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.

2 participants