From 4366ba6b0477056925dab6faa4733be759487137 Mon Sep 17 00:00:00 2001 From: Simone Date: Sun, 7 Jun 2026 19:38:32 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20close=20Phase=20B=20Passo=209=20?= =?UTF-8?q?=E2=80=94=20dual-boot=20procedure=20(RUNBOOK=20=C2=A715)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RUNBOOK §15: dual-boot operation — Linux⇄Windows switch procedure, per-OS CI-stack table (roots/runner/vmrun), current GRUB behaviour (DEFAULT=0, TIMEOUT=0 hidden → boots straight to Linux), post-boot verification commands for both OSes, and an optional GRUB tweak (left unapplied — boot-to-Linux is intentional so the box returns as the Linux CI host after any unattended reboot). Checklist: Passo 9 done; fixed the stale global tracking table (Passi 6–9 were still [ ] despite being complete). Phase B is now fully closed (1–9 [x]). Co-Authored-By: Claude Opus 4.8 --- docs/RUNBOOK.md | 84 ++++++++++++++++++++++++++++++++++ plans/PhaseB-user-checklist.md | 22 +++++---- 2 files changed, 97 insertions(+), 9 deletions(-) diff --git a/docs/RUNBOOK.md b/docs/RUNBOOK.md index 6d2f7c3..76c1215 100644 --- a/docs/RUNBOOK.md +++ b/docs/RUNBOOK.md @@ -764,3 +764,87 @@ both hosts). > baselines whose IP-acquire is dominated by high-variance VMware-Tools polling > (σ 26–57 s); the 10-iteration static (§8/§11) and Linux (§10/§12) rows are the > reliable host-effect signal. + +--- + +## 15. Dual-boot operation (Linux ⇄ Windows host) + +The CI machine is **dual-boot** on one piece of hardware: Linux Mint and +Windows 11 never run at the same time. Each OS carries a full CI stack +(orchestrator + runner + templates under its own root). Booting Linux brings +up the Linux runner; booting Windows brings up the Windows runner. Templates +and the `burnin-dummy` repo are kept at **template parity** across both roots. + +| | Linux host | Windows host | +| --- | --- | --- | +| CI root | `/var/lib/ci/` | `F:\CI\` | +| Runner | `act-runner.service` (systemd) | `actions-runner` (Windows service / NSSM) | +| Transport to guests | WinRM (Win guest) / SSH (Linux guest) | same | +| vmrun | `/usr/bin/vmrun` | `C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe` | + +### Current GRUB behaviour + +`GRUB_DEFAULT=0`, `GRUB_TIMEOUT=0`, `GRUB_TIMEOUT_STYLE=hidden` — the machine +boots **straight into Linux Mint with no menu**. Boot entries present: +`Linux Mint 22.3 Cinnamon` (default) and +`Windows Boot Manager (on /dev/nvme0n1p1)`. + +### Switch Linux → Windows + +With the hidden/zero-timeout GRUB, hold **Esc** (or **Shift**) during early +boot to reveal the GRUB menu, then pick `Windows Boot Manager`. For a planned, +unattended switch, set a one-shot next-boot target instead: + +```bash +# Requires GRUB_DEFAULT=saved (see "Optional GRUB tweak" below). +sudo grub-reboot "Windows Boot Manager (on /dev/nvme0n1p1)" +sudo reboot +``` + +Before rebooting out of Linux: confirm no job is mid-flight +(`sudo -u ci-runner ls /var/lib/ci/build-vms/` empty) and optionally pause the +Linux runner in the Gitea UI so queued jobs wait for the Windows runner. + +### Switch Windows → Linux + +Reboot; with `GRUB_DEFAULT=0` the machine returns to Linux automatically (no +key needed). If `grub-reboot` / `GRUB_DEFAULT=saved` is in use, Linux is the +saved default after a normal Linux shutdown. + +### Post-boot verification (either OS) + +Linux: +```bash +systemctl is-active act-runner # → active +systemctl --failed # → 0 loaded units +systemctl list-timers 'ci-*' # all ci-* timers scheduled +# then confirm the runner shows online in the Gitea UI (Admin → Runners) +``` + +Windows (PowerShell): +```powershell +Get-Service actions-runner # Status Running +& 'C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe' list # vmrun OK +# then confirm the runner shows online in the Gitea UI +``` + +### Optional GRUB tweak for everyday dual-boot + +To get a short pick menu and remember the last choice (handy if Windows is used +often), edit `/etc/default/grub`: + +```bash +GRUB_DEFAULT=saved +GRUB_SAVEDEFAULT=true +GRUB_TIMEOUT=5 +GRUB_TIMEOUT_STYLE=menu +``` + +```bash +sudo update-grub +``` + +This is **optional** — the default boots-to-Linux behaviour is intentional so +the machine comes back as the Linux CI host after any unattended reboot +(power-loss, kernel update). Leave it as-is unless Windows becomes the daily +driver. diff --git a/plans/PhaseB-user-checklist.md b/plans/PhaseB-user-checklist.md index d3c636a..10fb76a 100644 --- a/plans/PhaseB-user-checklist.md +++ b/plans/PhaseB-user-checklist.md @@ -561,11 +561,15 @@ avviata abitualmente in Linux senza incidenti critici. > Windows resta pienamente funzionale e si usa riavviando nel boot > entry corrispondente. -- [ ] Aggiornare `docs/RUNBOOK.md` con la procedura dual-boot: - come passare da Linux a Windows e viceversa, e cosa verificare - al boot (runner online, act-runner.service attivo). -- [ ] (Facoltativo) Verificare che GRUB abbia i timeout e i default - corretti per l'uso quotidiano: +- [x] Aggiornare `docs/RUNBOOK.md` con la procedura dual-boot: vedi + **RUNBOOK §15** (switch Linux⇄Windows, verifica post-boot per + entrambi gli OS, tweak GRUB opzionale). +- [x] (Facoltativo) GRUB verificato: `GRUB_DEFAULT=0`, `GRUB_TIMEOUT=0`, + `GRUB_TIMEOUT_STYLE=hidden` → boot diretto in Linux (intenzionale: + la macchina torna host Linux dopo ogni reboot unattended). Per + switch a Windows: tasto Esc al boot, oppure `grub-reboot` con + `GRUB_DEFAULT=saved`. Tweak documentato in RUNBOOK §15, **non + applicato** (default Linux voluto). ```bash sudo nano /etc/default/grub # GRUB_DEFAULT, GRUB_TIMEOUT @@ -583,10 +587,10 @@ avviata abitualmente in Linux senza incidenti critici. | 3 | B3 | Chiavi SSH + keyring (PoC headless) | [x] | | 4 | B4 | act_runner systemd service + `self-test.yml` PASS | [x] | | 5 | B5 | Timer systemd installati e attivi | [x] | -| 6 | B6 | Cutover (riavvio in Linux, runner Linux attivo) | [ ] | -| 7 | B7 | Capacity burn-in 4 × 10 (Win + Linux, sequenziale) | [ ] | -| 8 | — | ≥1 settimana di stabilità (boot Linux abituale) | [ ] | -| 9 | — | Gestione dual-boot + RUNBOOK aggiornato | [ ] | +| 6 | B6 | Cutover (riavvio in Linux, runner Linux attivo) | [x] | +| 7 | B7 | Capacity burn-in 4 × 10 (Win + Linux, sequenziale) | [x] | +| 8 | — | ≥1 settimana di stabilità (boot Linux abituale) | [x] | +| 9 | — | Gestione dual-boot + RUNBOOK aggiornato (§15) | [x] | > **Architettura**: la macchina è **dual-boot** (stesso hardware). > Avviata in Linux → runner Linux attivo. Avviata in Windows → runner