Accesso interrotto dopo l'aggiornamento 15.10 -> 16.04 LTS, relativo al driver NVIDIA


10

Ho appena aggiornato il mio sistema dal 15.10 al 16.04 tramite sudo do-release-upgrade. Durante questo processo, ha visualizzato una schermata con il seguente messaggio:

Il tuo sistema ha l'avvio protetto UEFI abilitato. UEFI Secure Boot non è compatibile con l'uso di driver di terze parti.

(...) Ubuntu sarà comunque in grado di avviarsi sul tuo sistema ma questi driver di terze parti non saranno disponibili per il tuo hardware.

Disabilitare l'avvio protetto UEFI? (sì | no)

Poiché gli unici driver di terze parti che sto utilizzando sono i driver grafici NVIDIA e poiché funzionano perfettamente con Ubuntu 15.10 e Secure Boot abilitati, ho scelto l'opzione "no" qui. Non vedo perché dovrei disabilitarlo senza una buona ragione e ho pensato di poter reinstallare il driver di terze parti tramite la GUI delle impostazioni di sistema dopo l'aggiornamento.

Ahimè, no. Al riavvio, la schermata di accesso è stata visualizzata con una risoluzione molto bassa. Quando provo ad accedere mi riporta immediatamente alla schermata di accesso.

Ho provato quanto segue per risolvere la situazione:

sudo apt-get purge nvidia*
sudo reboot

Questo porta a uno schermo viola e nessuna reazione a Ctrl-Alt-F1. Accedendo tramite SSH, ho quindi fatto:

sudo apt-get install nvidia-current
sudo reboot

che mi porta di nuovo al primo scenario, con una schermata di accesso a risoluzione molto bassa e nessun modo per accedere.

Questa è un'esperienza di aggiornamento piuttosto negativa. Qualcun altro ha questo e cosa posso fare per risolvere questo problema? (mantenendo abilitato l'avvio protetto UEFI) Grazie.


5
Dai

Wow, questo è male. Finora ho dovuto: installare nvidia-364 tramite PPA e disabilitare Secure Boot. Ora le cose sembrano funzionare, ma nemmeno il driver si aggiorna automaticamente (se non sbaglio), né posso riattivare Secure Boot ...
kmhofmann

Sì sfortunatamente nessun'altra scelta al momento. Non ti dispiace che segnerò questa domanda come duplicata.
Videonauth,

No, non mi dispiace.
kmhofmann,

Non è un duplicato, almeno non del tutto. Questa domanda aggiunge la nuova svolta di Secure Boot, che non fa parte della domanda "duplicata" (sebbene sia menzionata in un paio di commenti e risposte), e che merita ulteriore attenzione.
Rod Smith,

Risposte:


8

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.


2
* Usa Ubuntu 14.04 fino a quando questo problema non sarà risolto Ci sono molti motivi per cui Linux sul desktop non è ancora visibile. Questo genere di cose rende davvero più doloroso l'adozione di Linux da parte delle persone.
Underverse

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.