NoSignal-OS/os updates/kernel-reboot-notify/README.md
28allday 19fd794b6b NoSignal — fully-offline Arch → Hyprland desktop installer
Single-script builder (nosignal.sh) that turns a stock Arch Linux ISO into a
fully-offline installer for a themed Hyprland + caelestia (Quickshell) desktop:
matching SDDM greeter, Btrfs/Limine bootable snapshots, chwd-style GPU
detection, and a curated "os updates" layer (keybind cheatsheet, settings
panels, system polish, on-box management skill). See README.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 11:03:10 +01:00

51 lines
2.6 KiB
Markdown
Executable file

# kernel-reboot-notify
## Symptom / gap
When `nosignal-update` (or any `pacman -Syu`/`yay`) installs a **new kernel**,
nothing tells the user to reboot. The new kernel + modules are written to disk,
but the **old kernel keeps running** — and its `/usr/lib/modules/<running>` dir
has been replaced, so the live session can no longer load matching modules
(USB, filesystems, etc. can fail to load on demand). On NoSignal this also means
the freshly-built UKI isn't booted yet. The user only finds out when something
breaks — or, with **F4**, when they reboot and the default entry drops to a TTY.
## Fix
1. **`nosignal-reboot-check`** (→ `~/.local/bin`): if the running kernel's
modules dir is gone (the update replaced it), it writes a stamp
(`$XDG_STATE_HOME/nosignal/reboot-required`), prints a yellow banner, and
raises a **critical desktop notification** ("Kernel updated — reboot to load
it (X → Y)"). It clears the stamp once the running kernel matches disk again.
2. **`95-nosignal-kernel-reboot.hook`** (→ `/etc/pacman.d/hooks`): a PostTransaction
Path hook on `usr/lib/modules/*/vmlinuz` that prints a reboot reminder in the
pacman/yay output — so updates done outside `nosignal-update` warn too.
3. **`nosignal-update` wiring**: calls `nosignal-reboot-check` as its last step,
so an interactive update ends with the reminder + notification.
The installer (`install-kernel-reboot-notify.sh`) does all three idempotently.
The pacman-hook step needs root.
### Optional (builder): re-warn at login until rebooted
Add `nosignal-reboot-check` to an `exec-once` (e.g. alongside `nosignal-welcome`
in `hypr-user.conf`) so a pending reboot is re-surfaced each login while the
stamp exists. Not included by default to avoid touching `hypr-user.conf` here.
## Builder integration
Ship `nosignal-reboot-check` in the layer's bin, ship the pacman hook in the
ISO, and add the one-line call to the canonical `nosignal-update` (the installer
shows the exact insertion). Pairs with **F4**: until F4 is fixed the reboot
notice tells the user to pick the UKI entry.
## Verify
```
# simulate (don't actually remove modules): the helper keys off
# /usr/lib/modules/$(uname -r) — present now, so it's a no-op:
nosignal-reboot-check; echo "exit=$?"
# after a real kernel update it prints the banner + notifies and stamps
# ~/.local/state/nosignal/reboot-required
```
## Files
- `nosignal-reboot-check` — detector + notifier.
- `95-nosignal-kernel-reboot.hook` — pacman PostTransaction reminder.
- `install-kernel-reboot-notify.sh` — idempotent installer (hook step needs root).
- `migrations/1781438400-kernel-reboot-notify.sh` — delegates to it.