fix: hardware-bench fixes (banner IP fallback, disk release, USB step, catalog retry) + 26.20-alpha #17

Closed
daniel wants to merge 0 commits from fix/console-ip-fallback into main
Owner

Four fixes from the first real-hardware install (bare laptop mainboard, BIOS boot, SSD with an old Proxmox VE on it), plus the 26.20-alpha release bump.

  • 0e05bef console banner always shows the IP fallback (timers; no tty1 autologin on the ISO)
  • 5ddda53 installer releases the target disk (LVM/md/swap) before archinstall partitions it
  • 60404ae "pull the USB stick" step sits above the restart button
  • 32ba522 boot-time catalog sync retries; failures recorded as an error stage
  • chore: release 26.20-alpha

371 tests, ruff check + ruff format --check green. The ISO-side changes (banner timer, autologin removal, diskprep) still need an ISO build + boot on the bench to count as validated.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MScAinbyMdeNc7H2BZdnnG

Four fixes from the first real-hardware install (bare laptop mainboard, BIOS boot, SSD with an old Proxmox VE on it), plus the 26.20-alpha release bump. - `0e05bef` console banner always shows the IP fallback (timers; no tty1 autologin on the ISO) - `5ddda53` installer releases the target disk (LVM/md/swap) before archinstall partitions it - `60404ae` "pull the USB stick" step sits above the restart button - `32ba522` boot-time catalog sync retries; failures recorded as an error stage - `chore: release 26.20-alpha` 371 tests, `ruff check` + `ruff format --check` green. The ISO-side changes (banner timer, autologin removal, diskprep) still need an ISO build + boot on the bench to count as validated. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01MScAinbyMdeNc7H2BZdnnG
daniel added 5 commits 2026-08-25 17:08:26 +02:00
The /etc/issue banner on both the live ISO and the installed system was a
oneshot after network-online.target that simply dropped the http://<ip>
line when DHCP hadn't delivered yet — so a slow NIC (first hardware bench,
2026-08-24) left the screen offering only proksi.local. On the ISO,
releng's root autologin on tty1 also made agetty --reload a no-op.

- furtka-issue.timer (ISO) / furtka-welcome.timer (target) re-run the
  banner script every 5 s; services drop RemainAfterExit + network wait
- fallback line is always present: every global IPv4, or a 'no IP yet —
  check cable / DHCP' hint; only rewrites + reloads on change
- build.sh removes releng's getty@tty1 autologin drop-in; banner tells
  users a shell is root + Enter away

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MScAinbyMdeNc7H2BZdnnG
The live ISO auto-activates LVM/md/swap found on attached drives. The
first hardware bench's SSD still carried a Proxmox VE 'pve' VG, so six
device-mapper nodes sat on sda3 and archinstall died at 12 % with
'unable to inform the kernel of the change ... in use'.

install_run now calls diskprep.release_disk() first: swapoff/umount
leaves-first, dmsetup remove / mdadm --stop for every dm/md node stacked
on the disk (retrying until the stack is gone), wipefs -a on partitions
and disk, blockdev --rereadpt. Steps are logged at the top of the install
log (spawn_archinstall opens it in append mode now). The progress page
names this failure explicitly if it still happens.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MScAinbyMdeNc7H2BZdnnG
The hint lived on the rebooting page and in a confirm() popup — i.e. after
the click, with the machine restarting 3 s later. On the first hardware
bench the box promptly booted the stick again. The done state now shows a
two-step list (pull the stick → restart) above the button, and the button
says what it assumes: 'USB stick is out — restart now'.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MScAinbyMdeNc7H2BZdnnG
On dual-stack LANs network-online.target is satisfied by the IPv6 SLAAC
address about a second before DHCPv4 lands, so the first
furtka-catalog-sync run died with 'Network is unreachable' and the next
attempt was the daily timer (OnBootSec=10min + up to 6 h jitter). The
state file stayed on 'checking' and the apps page showed 'checking…'
with nothing running — first hardware bench, 2026-08-25.

- furtka-catalog-sync.service: Restart=on-failure every 20 s, up to 8
  times in 15 min
- sync_catalog() writes stage 'error' + message on CatalogError, then
  re-raises (body moved to _sync_locked())
- apps page shows 'last sync failed: <error>' for that stage

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MScAinbyMdeNc7H2BZdnnG
chore: release 26.20-alpha
All checks were successful
CI / lint (pull_request) Successful in 24s
CI / test (pull_request) Successful in 1m19s
CI / validate-json (pull_request) Successful in 21s
CI / markdown-links (pull_request) Successful in 14s
Build ISO / build-iso (push) Successful in 18m15s
Deploy site / deploy (push) Successful in 4s
CI / lint (push) Successful in 23s
CI / test (push) Successful in 1m17s
CI / validate-json (push) Successful in 21s
CI / markdown-links (push) Successful in 13s
Release / release (push) Successful in 12m2s
8e281fa4a6
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MScAinbyMdeNc7H2BZdnnG
Author
Owner

merged by fast-forward, shipped in 26.20-alpha

merged by fast-forward, shipped in 26.20-alpha
daniel closed this pull request 2026-08-25 17:26:11 +02:00
All checks were successful
CI / lint (pull_request) Successful in 24s
Required
Details
CI / test (pull_request) Successful in 1m19s
Required
Details
CI / validate-json (pull_request) Successful in 21s
Required
Details
CI / markdown-links (pull_request) Successful in 14s
Build ISO / build-iso (push) Successful in 18m15s
Deploy site / deploy (push) Successful in 4s
CI / lint (push) Successful in 23s
Required
Details
CI / test (push) Successful in 1m17s
Required
Details
CI / validate-json (push) Successful in 21s
Required
Details
CI / markdown-links (push) Successful in 13s
Release / release (push) Successful in 12m2s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: daniel/furtka#17
No description provided.