martedì 31 luglio 2012

Non vorrai mica fare un boot?

Nell'eterna battaglia per la libertà informatica un nuovo colpo viene assestato da UEFI e il Secure Boot.


Di cosa si tratta?
UEFI è un acronimo che significa Uniform Extensible Firmware Interface, e rappresenta una sorta di miglioramento all'EFI (senza la U di Uniform) presentato da Intel e sostenuto da Microsoft fin dai tempi dell'Itanium. In parole povere UEFI rappresenta il nuovo BIOS dei moderni Personal Computer.
UEFI permette una modalità di boot denominata secure boot: solo il software riconosciuto come affidabile da UEFI può avviare un processo di boot del computer. Come fa UEFI a sapere quale software è affidabile? Sostanzialmente il software di boot (boot loader) viene firmato digitalmente con un hash crittografico, tale hash viene mantenuto da UEFI in un repository di chiavi in modo da poter verificare se il software che si sta per lanciare corrisponde a quello fidato o meno.
Dovrebbe quindi apparire evidente il problema: ogni modifica al boot loader di un sistema operativo richiede la memorizzazione di una nuova chiave nel repository UEFI al fine di consentire il boot. C'è anche l'aternativa di disabilitare il secure boot, bypassando quindi il controllo UEFI che permette quindi di lanciare qualsiasi boot loader.
Questa modalità di operare presenta non pochi problemi, principalmente:
  • una complessità di gestione a mio avviso non giustificata (almeno al momento);
  • la possibilità che un produttore hardware non fornisca la possibilità di disattivare il secure boot nella sua implementazione UEFI;
Si consideri la complessità di gestione. Francamente non sono mai stato molto preoccupato del mio boot loader. Posso capire che ci siano problemi di sicurezza in un kernel che esegue, in un demone che esegue, in uno script. In un boot loader? Quand'è che si cambiano le impostazioni di un loader? Quando si ricompila un kernel (utenti  esperti); quando si aggiorna il sistema (amministratori  responsabili), quando si testa una configurazione differente (sviluppatore  capaci). In nessuno di questi casi il problema è nel boot loader, bensì nelle competenze di chi si occupa della sua configurazione. La cosa quindi non mi spaventa particolarmente.

Si consideri ora la possibilità che un vendor non inserisca l'opzione per disabilitare il secure boot: il sistema non sarà in grado di essere customizzato, nemmeno con le migliori intenzioni. E guarda caso questo sembra quanto successo con Microsoft Windows 8. Risultato: si compra dell'hardware con software OEM (omaggio) che non può essere modificato. Ricorda forse l'incedente della TiVo-ization? E anche ammettendo che l'hardware permetta di disabilitare il secure boot, cosa succede se del software non permette il boot in modalità insicura (come Windows 8 appunto)?

Mi domando quanto passerà prima che anche la Apple abbracci questa nuova limitazione per gli utenti.

venerdì 13 luglio 2012

Impostare uno splash screen accattivante in FreeBSD/PCBSD

Il boot di un sistema FreeBSD è piuttosto minimale, ma molto efficace: vengono mostrati i messaggi del kernel e dei vari demoni che si avviano. Questo è molto utile per un server, ma potrebbe non essere molto accattivante per un sistema desktop. PCBSD offre un proprio splash screen grafico dalla versione 9, ma è possibile applicarne uno anche ad un FreeBSD puro. I passaggi per la realizzazione di uno splash screen di avvio personalizzato sono abbastanza semplici:
  • salvare una immagine in formato PCX (meglio usare una palette ad-hoc e non andare oltre la risoluzione di 1024x768, dopotutto l'immagine non deve essere troppo pesante);



  • copiare l'immagine nella cartella /boot della macchina FreeBSD (ad esempio usando scp se si sta editando l'immagine da una macchina remota);
  • editare il file /boot/loader.conf della macchina FreeBSD aggiungendo le seguenti righe di configurazione (ovviamente il nome dell'immagine deve coincidere con quello esatto dello splash screen che si vuole avere):

splash_pcx_load="YES"
vesa_load="YES"
bitmap_load="YES"
bitmap_name="/boot/freebsd.pcx"


A questo punto all'avvio della macchina si avra' il nuovo splash screen in esecuzione. E' sufficiente premere un tasto qualunque sulla tastiera della console per ottenere il boot verbose, ossia far sparire lo splash screen e far comparire i messaggi del kernel. Unico accorgimento il nome del file immagine, che deve essere "semplice" (corto e senza caratteri speciali '-','_'). Nell'esempio di cui sopra il nome dell'immagine FreeBSD-Daemon-Wallpaper.pcx è stato modificato nel nome finale freebsd.pcx.