boot: make bare/base driver-manager + netstack non-blocking; changelog

Base submodule 1f826240: 00_pcid-spawner (/usr) and 10_smolnetd base-default
init units switched to oneshot_async so init never blocks the boot-to-login
path on PCI driver enumeration or a network adapter binding. Adds the
2026-07-16 CHANGELOG entry (mini login restored, kernel MSR #GP guard,
build-system staleness/lock/override fixes).
This commit is contained in:
2026-07-16 12:48:57 +09:00
parent d5561184f0
commit 19470fb444
2 changed files with 58 additions and 1 deletions
+57
View File
@@ -6,6 +6,63 @@ When a commit changes the visible system surface, supported hardware, build flow
or major documentation status, add a short note here and keep the README "What's New" section in
sync with the newest highlights.
## 2026-07-16 — Boot path restored: Mini ISO reaches a working login prompt
### Boot / init (the login blockers)
- **base-env no longer hangs the boot.** `00_base.service` ran a full `zsh`
as an init oneshot; zsh's interactive startup hangs in the oneshot before
the login stack. Switched to `mkdir` (uutils). An earlier "echo/mkdir also
hang" result was a false negative — a silent config `[[files]]` override
(`redbear-legacy-base.toml` shadowing `base.toml`) was still running zsh.
- **ptyd no longer blocks init.** `00_ptyd.service` was `type = "notify"`,
but ptyd signals readiness via its scheme cap fd (`ready_sync_scheme`), so
init waited on a readiness byte that never came and blocked forever at
ptyd. Corrected to `type = { scheme = "pty" }` (base recipe default +
`redbear-mini` override).
- **Driver-manager + netstack no longer wedge the boot.** The post-switchroot
`/usr` `00_pcid-spawner.service` was a blocking oneshot (init waited for
every PCI driver to reach readiness) and `10_smolnetd.service` was
`type = "notify"` (blocks until a NIC binds). Both are now `oneshot_async`;
the login path renders on the initfs framebuffer and needs neither ready
first. (The initfs driver spawner stays blocking — disk must mount.)
### Kernel
- **Root can no longer panic the kernel via `/scheme/sys/msr`.** A bad MSR
write (e.g. cpufreqd's legacy P-state MSR, unsupported under KVM) raised a
kernel-mode `#GP` on the raw `wrmsr`, which was unrecoverable and panicked
the whole machine (`unreachable!()` in `exit_this_context`). Added
`wrmsr_safe`/`rdmsr_safe` with `#GP` fault recovery (the same labeled-region
mechanism as usercopy page-fault recovery); the MSR scheme and the cross-CPU
MSR IPI handler now return `EIO` instead of faulting.
### Noise
- hwd ACPI `_LNK` interrupt-routing enumeration (50+ INFO lines per boot on
QEMU) demoted to `debug`.
### Build system
- **Host fstools staleness fixed** — `make live`'s `redox_installer`/`redoxfs`
are rebuilt when their sources change (the `build/fstools` dir target had no
source prerequisite, so edits silently never reached image assembly).
- **Prefix no longer rebuilds every build** — `make prefix` is a no-op tarball
extract, so `libc.a`'s mtime never advanced past the fork commit; now stamped
after a successful prefix step.
- **Concurrent-build lock** (`flock`) prevents two builds corrupting caches.
- **Config `[[files]]` overrides are now visible** — the installer warns when a
later-included config redefines a file path (was a silent last-wins accumulate).
### Status
- **Mini ISO**: boots to the `Red Bear login:` prompt on VT2 (framebuffer) and
the serial debug console, verified on q35/KVM both with and without a NIC,
zero kernel panics.
- **Bare ISO**: driver-manager/netstack blocking fixes applied; login bring-up
in progress.
- **Full ISO** (KWin/Wayland `redbear-greeterd`): unchanged, still experimental.
## 2026-07-01 — Phase I/II complete: full s2idle + S3 entry + LG Gram DMI
### Phase I.5 (kernel ↔ acpid s2idle wire end-to-end)