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”.
- 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.
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 luksFormatcol 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(autostartlux-uisu tty1),overlay/etc/profile.d/00-path.sh.
- Boot UEFI:
boot/grub.cfg(menuentry “LUX Minimal OS” che carica/EFI/LUX/bzImagee/EFI/LUX/initramfs.img).- Installer Windows:
windows-installer/install-lux.ps1(copia file in ESP e crea voce BCD) ewindows-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.
lux-ui(C): compilato conDEMO_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(default1). Per azione reale:- Esempio (DISTRUTTIVO):
DEMO_MODE=0 /engine/wipe.sh -d /dev/sdX
- Esempio (DISTRUTTIVO):
- Operazioni distruttive richiedono supervisione, ambiente pulito (initramfs), dischi non montati e consapevolezza del target. Usa a tuo rischio.
- Copia la cartella
package/lux-ui/nel tuo albero Buildroot. - Assicurati che il
package/Config.inprincipale includa il package (in sezione alfabetica):source "package/lux-ui/Config.in"
- Posiziona il sorgente
lux-ui.cdentropackage/lux-ui/(come atteso dalux-ui.mk, metodolocal). In questo repo è anche presente alla radice: copia o symlink:cp -a lux-ui.c /path/to/buildroot/package/lux-ui/
- 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.
- In menuconfig → System configuration → Root filesystem overlay directories → inserisci il percorso assoluto di
- In
make menuconfig:- Target packages → seleziona
lux-ui. - Graphic libraries → SDL2 → abilita backend KMS/DRM.
- Target packages → seleziona
- Esegui
makeper generare immagini. I file tipici si trovano inoutput/images/:- Kernel:
bzImage - Initramfs:
rootfs.cpio(orootfs.cpio.gz)
- Kernel:
- 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 .
- Per
lux-ui: modifica la build del package aggiungendo-DDEMO_MODE=0ai CFLAGS (es. variabileLUX_UI_EXTRA_CFLAGSinlux-ui.mk) e ricompila. - Per gli script: esporta
DEMO_MODE=0all’esecuzione.
Prerequisiti: eseguire “Come Amministratore”, sospendere BitLocker, disattivare Secure Boot (PoC).
- Prepara i file nella cartella dell’installer (accanto allo script o dove preferisci):
grubx64.efi(binario UEFI di GRUB)boot/grub.cfgbzImage(dal build Buildroot)initramfs.img(dal build Buildroot, non compresso)
- Esegui:
Lo script:
powershell -ExecutionPolicy Bypass -File windows-installer\install-lux.ps1
- 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
- monta la ESP su
- Riavvia e scegli “LUX Minimal OS” dal menu di Windows Boot Manager.
Disinstallazione:
powershell -ExecutionPolicy Bypass -File windows-installer\uninstall-lux.ps1Hotkey (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
- Al boot, LUX mostra
lux-uia schermo intero (avvio da/etc/inittabin overlay) con tre voci:- PANIC MODE →
/engine/panic_mode.sh - WIPE DISK →
/engine/wipe.sh - EXIT
- PANIC MODE →
- Overlay “IN ESECUZIONE…” durante l’esecuzione degli script, con exit code finale o errore (script mancante, permessi, ecc.).
- 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.
- 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.
- Build
lux-uistandalone (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.indi 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”.
