Tramite Ubuntu 15.10, la gestione di Secure Boot di Ubuntu si è fermata su GRUB, ovvero la versione di Shim di Ubuntu avrebbe lanciato la versione di Ubuntu di GRUB, che avrebbe lanciato qualsiasi kernel Linux, indipendentemente dal fatto che fosse o meno firmato. Questa era una barra di supporto molto bassa per Secure Boot. Per fare un confronto, il GRUB di Fedora lancerebbe solo kernel Linux firmati e i kernel di Fedora, quando rilevassero che Secure Boot era attivo, caricheranno solo i binari del kernel firmati. L'intenzione del più affidabile supporto Secure Boot di Fedora era di proteggere il sistema da moduli del kernel "non autorizzati", che in teoria potevano assumere il controllo del computer a un livello molto basso. Ubuntu 15.10 e precedenti mancavano di tale protezione.
A partire dalla 16.04, Ubuntu segue un modulo Secure Boot più rigoroso, più simile a quello che Fedora sta facendo da un po 'di tempo. Ciò ha vantaggi in termini di sicurezza, ma come hai visto, ha anche problemi. Se un driver di terze parti non è firmato con una chiave crittografica che la versione di Ubuntu del kernel Linux riconosce come valida, non verrà caricata. Ciò influisce principalmente sui driver video Nvidia e AMD / ATI a sorgente chiuso, ma ci sono anche altri driver che possono essere interessati.
Esistono (o potrebbero esserci) diverse soluzioni alternative a questo problema:
- Disabilita Avvio protetto : questa è la soluzione più semplice. Puoi farlo confondendo le impostazioni del firmware o (penso) regolando le impostazioni di spessore. (Non sono sicuro di come farlo modificando le impostazioni di Shim, ma sono abbastanza sicuro che sia possibile.)
- Non usare moduli del kernel di terze parti - Se ti limiti ai driver open source inclusi nel kernel Linux standard di Ubuntu, dovresti andare bene, poiché Canonical firma tutti questi driver (AFAIK). Si noti che dovrebbe esserci un supporto Nvidia abbastanza buono usando tali driver; il tuo sistema probabilmente ricadde su driver non ottimali perché pensava che i driver a sorgente chiuso fossero disponibili. Non so come cambiare da uno all'altro, ma questa domanda riguarda il farlo con i driver AMD / ATI, quindi potrebbe essere un utile punto di partenza.
- Firma i moduli pertinenti - In teoria, firmare tu stesso i moduli commerciali dovrebbe farli funzionare. Sfortunatamente, non ho un puntatore per le istruzioni su come farlo, e in effetti non sono nemmeno del tutto sicuro che sia possibile farlo con un kernel Ubuntu di serie; un kernel del genere potrebbe onorare solo i moduli firmati con la chiave di Canonical, che ovviamente non si possiede.
- Compila il tuo kernel - Se compili il tuo kernel, puoi impostare le sue opzioni come ritieni opportuno, incluso allentare le restrizioni sul caricamento di moduli non firmati. Dovresti quindi firmare il kernel con la tua chiave EFI e aggiungere la versione pubblica di quella chiave al tuo elenco MOK. Ecco una domanda e risposte sulla compilazione del proprio kernel.
- Passa a un GRUB più vecchio - Poiché un GRUB più vecchio avvierà kernel senza segno, potresti installare un tale GRUB (da Ubuntu 15.10 o precedente) e fargli lanciare un kernel senza segno. Notare che sostenere che GRUB più vecchio sarebbe probabilmente un dolore.
- Passa a un boot loader che non rispetta Secure Boot : se dovessi firmare un boot loader come SYSLINUX o ELILO con la tua chiave e aggiungere la versione pubblica di quella chiave all'elenco MOK, quel boot loader ignorerebbe Secure Impostazioni di avvio, proprio come una versione precedente di GRUB. È quindi possibile avviare un kernel senza segno.
Si noti che le uniche due di queste opzioni che sono sicuro al 100% funzionerebbero è disabilitare Secure Boot o evitare moduli del kernel di terze parti. Evito i moduli del kernel di terze parti come la peste, quindi non ho esperienza personale nell'usarli in un ambiente di avvio sicuro. Oltre a disabilitare Secure Boot, costruire il proprio kernel potrebbe essere il più probabile che funzioni, seguito dall'uso di un vecchio GRUB o da un boot loader che non rispetta Secure Boot. Costruire il proprio kernel una volta era comune, ma poche persone lo fanno più, e con i kernel moderni, l'investimento in termini di tempo per imparare a configurare un kernel, per non parlare del fatto, può essere significativo. Usare un GRUB più vecchio o un altro boot loader potrebbe essere più semplice, ma dovrai conoscerne abbastanza per poterlo configurare.