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>
3 KiB
Executable file
limine-uki-dead-entry
The repair script edits the bootloader, so run it with care. Workaround: pick the UKI entry.
Symptom
After a nosignal-update that bumped the kernel (7.0.11→7.0.12), selecting
"NoSignal OS" in Limine drops to a TTY. Selecting "Linux" (the UKI
entry) boots normally.
Root cause
/etc/default/liminesetsENABLE_UKI=yes.- Per
limine-entry-tool.conf:151: "Duplicate 'initramfs' and 'vmlinuz' files are removed when 'limine-mkinitcpio' or 'limine-update' is run to generate a UKI." So the first kernel update deletes/boot/vmlinuz-linuxand/boot/initramfs-linux.img. - But
limine.confcarries an installer-seeded first entry:
pointing at the now-deleted files. With no/NoSignal (Arch Linux) protocol: linux path: boot():/vmlinuz-linux module_path: boot():/initramfs-linux.img …default_entry, this dead entry is the auto-boot default → TTY. - The auto-generated UKI entry (
protocol: efi→/EFI/Linux/nosignal_linux.efi) is correct and bootable — that's the "Linux" entry that worked.
Evidence
vmlinuz-linux/initramfs-linux.img: absent.- Dead entry present in both
limine.confand the pre-updatelimine.conf.old(shipped from the ISO). - UKI is current: its sha256 equals the freshly-built image — not stale (the May-28 mtime is merely preserved). So the UKI is not the problem.
- GPU-agnostic; prior AMD rounds likely never ran a post-install kernel update.
Secondary risk (NVIDIA-specific) — flag for the builder
The UKI is 139 MB (NVIDIA driver + GSP firmware; linux-firmware-nvidia is
214 MB) on a 511 MB ESP. limine.conf already shows the live UKI + a history
copy. As more kernel versions / snapshot UKIs accumulate, the ESP can fill, and
then UKI writes would genuinely fail (a real stale-UKI scenario). Recommend:
size the ESP ≥1–2 GB on NVIDIA, and/or trim the initramfs (don't embed the full
GSP firmware), and/or keep UKI snapshot history off the ESP.
Fix
Durable (builder, do this in the ISO): don't seed a protocol: linux entry
when ENABLE_UKI=yes. Either
- seed the OS entry as
protocol: efi→/EFI/Linux/<uki>_linux.efi, or - drop the manual entry and let limine-entry-tool's auto UKI entry be the OS
entry (name it via
TARGET_OS_NAME), and - set an explicit
default_entryto the UKI so auto-boot never lands on a bad entry.
This component (repair an installed system): fix-limine-uki-entry.sh
(root, idempotent, backs up limine.conf) rewrites the seeded entry's body from
protocol: linux + vmlinuz-linux to protocol: efi + the UKI, keeping the
label (stays first = default) and the cmdline. No-op if already fixed; refuses
if the UKI file is missing.
Verify
grep -A3 'NoSignal (Arch Linux)' /boot/limine.conf # protocol: efi + UKI path
Then reboot and confirm the top/default entry boots to the desktop.
Files
fix-limine-uki-entry.sh— idempotent root repair.migrations/1781434800-limine-uki-dead-entry.sh— delegates to it.