Skip to content

LUX Banner

LUX — Minimal OS (MVP) Luca’s Ultimate eXtermination

LUX è un ambiente Linux minimale pensato per operazioni rapide di emergenza e provisioning: Panic (sanitizzazione immediata dei dischi), Wipe (bonifica guidata) ed Encrypt (inizializzazione LUKS con chiave).

Questo MVP include:

  • un’interfaccia grafica fullscreen a menu (lux-ui, SDL2 su KMS/DRM, senza X/Wayland)
  • script “engine” sicuri per default (DEMO MODE) con percorsi chiari di attivazione reale
  • packaging Buildroot, overlay rootfs e tool di installazione UEFI per Windows

ATTENZIONE: Le operazioni Panic/Wipe/Encrypt sono potenzialmente DISTRUTTIVE. L’MVP nasce in DEMO MODE (nessuna scrittura effettiva) e richiede azioni esplicite per sbloccare il comportamento reale. Leggi con attenzione la sezione “DEMO MODE e Sicurezza”.


Requisiti

  • Macchina UEFI (PoC non firma Secure Boot).
  • Secure Boot: disattivare per PoC.
  • Windows (per installazione UEFI da host): eseguire PowerShell “Come Amministratore”.
  • BitLocker: prima di modificare la ESP (EFI System Partition), sospendere i protector (es.: manage-bde -protectors -disable C:). Riattivarli a fine operazione.
  • Buildroot per generare kernel e initramfs; SDL2 con backend KMSDRM.

Componenti principali

  • lux-ui.c: app C SDL2 fullscreen (menu: PANIC MODE, WIPE DISK, EXIT). Mostra overlay “IN ESECUZIONE…”, cattura exit code e ridisegna UI.
  • Script engine:
    • /engine/panic_mode.sh: “header-kill” (primi/ultimi 10MiB) + Secure Erase (SATA/NVMe); log in /tmp/lux-panic.log. DEMO per default.
    • /engine/wipe.sh: wipe interattivo (Secure Erase oppure 1‑pass zero / DoD 3‑pass con verifica). DEMO per default.
    • /engine/encrypt.sh: genera chiave 512‑bit, mostra SHA256, backup su USB, opzionale QR, cryptsetup luksFormat col keyfile. DEMO per default.
    • /engine/list_disks.sh: tabella dischi (tipo, dimensione, modello, supporto Secure Erase).
  • Packaging Buildroot:
    • package/lux-ui/Config.in, package/lux-ui/lux-ui.mk (dipendenza: SDL2). Installa /usr/bin/lux-ui.
    • Overlay rootfs: overlay/etc/inittab (autostart lux-ui su tty1), overlay/etc/profile.d/00-path.sh.
  • Boot UEFI:
    • boot/grub.cfg (menuentry “LUX Minimal OS” che carica /EFI/LUX/bzImage e /EFI/LUX/initramfs.img).
    • Installer Windows: windows-installer/install-lux.ps1 (copia file in ESP e crea voce BCD) e windows-installer/uninstall-lux.ps1 (cleanup).
  • Utility Windows opzionale:
    • LuxPanicHotkey (.NET 8): hotkey globale Ctrl+Alt+P → imposta BCD default su “LUX Minimal OS” e riavvia.

DEMO MODE e Sicurezza

  • lux-ui (C): compilato con DEMO_MODE=1 (default). Le voci distruttive sono bloccate e mostrano overlay “BLOCCATO IN DEMO”. Per attivare realmente, compilare con -DDEMO_MODE=0 (vedi build).
  • Script engine: rispettano la variabile d’ambiente DEMO_MODE (default 1). Per azione reale:
    • Esempio (DISTRUTTIVO): DEMO_MODE=0 /engine/wipe.sh -d /dev/sdX
  • Operazioni distruttive richiedono supervisione, ambiente pulito (initramfs), dischi non montati e consapevolezza del target. Usa a tuo rischio.

Build (Buildroot)

1) Integrare il package lux-ui

  • Copia la cartella package/lux-ui/ nel tuo albero Buildroot.
  • Assicurati che il package/Config.in principale includa il package (in sezione alfabetica):
    source "package/lux-ui/Config.in"
  • Posiziona il sorgente lux-ui.c dentro package/lux-ui/ (come atteso da lux-ui.mk, metodo local). In questo repo è anche presente alla radice: copia o symlink:
    cp -a lux-ui.c /path/to/buildroot/package/lux-ui/

2) Overlay rootfs

  • Usa la directory overlay/ come Root filesystem overlay (assicura autostart UI):
    • In menuconfig → System configuration → Root filesystem overlay directories → inserisci il percorso assoluto di overlay.

3) Abilita pacchetti

  • In make menuconfig:
    • Target packages → seleziona lux-ui.
    • Graphic libraries → SDL2 → abilita backend KMS/DRM.

4) Build

  • Esegui make per generare immagini. I file tipici si trovano in output/images/:
    • Kernel: bzImage
    • Initramfs: rootfs.cpio (o rootfs.cpio.gz)
  • Per l’installer UEFI Windows, rinomina/converti l’initramfs in initramfs.img (non compresso) se necessario:
    # Se hai rootfs.cpio.gz, decomprimi:
    gzip -dc output/images/rootfs.cpio.gz > initramfs.img
    # Oppure copia direttamente se già non compresso:
    cp output/images/rootfs.cpio initramfs.img
    cp output/images/bzImage .

5) (Opzionale) Attivare azioni reali

  • Per lux-ui: modifica la build del package aggiungendo -DDEMO_MODE=0 ai CFLAGS (es. variabile LUX_UI_EXTRA_CFLAGS in lux-ui.mk) e ricompila.
  • Per gli script: esporta DEMO_MODE=0 all’esecuzione.

Installazione UEFI da Windows (PowerShell)

Prerequisiti: eseguire “Come Amministratore”, sospendere BitLocker, disattivare Secure Boot (PoC).

  1. Prepara i file nella cartella dell’installer (accanto allo script o dove preferisci):
    • grubx64.efi (binario UEFI di GRUB)
    • boot/grub.cfg
    • bzImage (dal build Buildroot)
    • initramfs.img (dal build Buildroot, non compresso)
  2. Esegui:
    powershell -ExecutionPolicy Bypass -File windows-installer\install-lux.ps1
    Lo script:
    • monta la ESP su S: (o riusa la lettera esistente)
    • crea S:\EFI\LUX\ e copia i file
    • crea una voce BCD “LUX Minimal OS” che avvia GRUB in \EFI\LUX\grubx64.efi
  3. Riavvia e scegli “LUX Minimal OS” dal menu di Windows Boot Manager.

Disinstallazione:

powershell -ExecutionPolicy Bypass -File windows-installer\uninstall-lux.ps1

Hotkey (opzionale):

  • Costruisci l’app .NET 8 e avviala come admin; premi Ctrl+Alt+P per impostare “LUX Minimal OS” come default e riavviare:
    dotnet build LuxPanicHotkey -c Release
    .\LuxPanicHotkey\bin\Release\net8.0-windows\LuxPanicHotkey.exe

Esecuzione (runtime)

  • Al boot, LUX mostra lux-ui a schermo intero (avvio da /etc/inittab in overlay) con tre voci:
    1. PANIC MODE → /engine/panic_mode.sh
    2. WIPE DISK → /engine/wipe.sh
    3. EXIT
  • Overlay “IN ESECUZIONE…” durante l’esecuzione degli script, con exit code finale o errore (script mancante, permessi, ecc.).

Avvertenze legali (uso a tuo rischio)

  • Questo software è distribuito senza alcuna garanzia. L’uso improprio può causare perdita di dati irreversibile.
  • L’MVP nasce con DEMO MODE per prevenire scritture accidentali. Attivalo “sul serio” solo se sai esattamente cosa stai facendo, in un ambiente di test controllato.
  • Verifica sempre i device target, assicurati che non siano montati e che non contengano dati necessari.

Roadmap (breve)

  • Panic: stabilizzazione e reportistica dettagliata (SMART, esiti controller).
  • Wipe/Encrypt Pro: profili avanzati, whitelist/blacklist device, logging remoto opzionale.
  • Secure Boot: catena di boot firmata (shim/MOK, GRUB firmato, kernel firmato) e policy.
  • UI: supporto font opzionale, layout responsive, locale/i18n.
  • Installer: firma binari, supporto multi‑entry, fallback più robusti BCD.

Snippets utili

  • Build lux-ui standalone (Linux, SDL2 dev installato):
    gcc -O2 -Wall -Wextra lux-ui.c -o lux-ui $(pkg-config --cflags --libs sdl2)
    SDL_VIDEODRIVER=KMSDRM SDL_RENDER_DRIVER=software ./lux-ui
  • Inclusione package in package/Config.in di Buildroot:
    source "package/lux-ui/Config.in"

Se vuoi, posso aggiungere un Makefile di progetto o un esempio di BR2_EXTERNAL per integrare tutto “chiavi in mano”.

About

Press once. Become unreadable.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Contributors

Languages