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:
@@ -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)
|
||||
|
||||
+1
-1
Submodule local/sources/base updated: 8aa8616d5e...1f82624025
Reference in New Issue
Block a user