Configurazione precedente:
- Ubuntu 12.04 su / dev / sda [WD 2T HDD]
- Ubuntu 14.04 su / dev / sdb [Hitachi 2T HDD]
~ 10 anni PC in modalità BIOS (nessun PC in EFI nel 2006!), Scheda grafica nVidia di base. Il BIOS è impostato per l'avvio su / dev / sdb dove è installato Grub2 e punta su 14.04 + 12.04 che è su / dev / sda.
Nuova configurazione:
PC recente impostato in modalità EFI. Nessuna scheda grafica, utilizzando la GPU Intel integrata all'interno del core i7 6700.
Ubuntu 16.04 (nuova installazione) su / dev / sda [Samsung 500G SDD]
Ubuntu 16.04 funziona bene con questa configurazione. EFI punta ad avviarsi sull'SSD.
Il problema:
Ora, poiché mi piace avere la mia vecchia versione di Ubuntu in giro, come backup, e nel caso in cui mi dimenticassi di riapplicare qualche utile tweak, ho estratto l'unità Hitachi dal vecchio PC e l'ho installato sul nuovo PC.
Quindi ora ho:
- Ubuntu 16.04 su / dev / sda [Samsung 500G SDD]
- Ubuntu 14.04 su / dev / sdb [Hitachi 2T HDD]
Ho fatto un grub-update
16.04 per ottenere il menu di grub con il 14.04. La macchina si avvia ancora bene il 16.04 con il menu grub visualizzato.
Ma il problema è che non si avvia correttamente sul 14.04, quando lo seleziono dal menu di GRUB.
Che succede:
È come se Ubuntu non trovasse affatto quale hardware stavo eseguendo, tutto sembra essere "di default".
Sono riuscito a entrare nella sessione rimuovendo i driver nVidia sul 14.04, ma ottengo:
- Video predefinito 1024x768 (brutto su un LCD 1920!)
- Nessuna ethernet
- Nessun suono
Dischi, tastiera e mouse funzionano normalmente.
Tutto ciò sembra "un po 'normale" poiché questa installazione di 14.04 era inizialmente BIOS, e da quello che ho potuto cercare, EFI sembra mostrare l'hardware in modo diverso rispetto al kernel.
Che tipo di riparazione vorrei:
La domanda più vicina è stata questa: quali comandi per convertire un'installazione del BIOS Ubuntu in EFI / UEFI senza ripristino dell'avvio su hardware a avvio singolo?
Ma in questo post l'op non aveva una macchina funzionante, che ho (il 16.04) e non ho installato un avvio EFI, che ho già.
Preferirei capire anche quello che sto facendo, invece di usare la riparazione automatica del boot (che dubito farebbe qualcosa di intelligente nel mio caso) ...
La risposta alla domanda sopra, suggeriva di installare grub-efi nella versione da riparare. Nel mio caso non funziona davvero, perché:
- Non desidero creare una partizione EFI sul mio HDD (/ dev / sdb) poiché ne ho già una funzionante sul mio SSD (/ dev / sda) da cui avvio.
- se eseguo un aggiornamento grub-efi sul 14.04, chiedendogli di installare grub su / dev / sda, probabilmente sovrascriverà il 16.04 nella partizione efi con quello del vecchio 14.04. Questo non è desiderabile!
In effetti, potrei anche iniziare l'inizio di / dev / sda per ripristinarlo dopo che il 14.04 lo ha sovrascritto, ma tali manipolazioni sono "pericolose" e rischiano di distruggere tutto!
Quello che ho già provato
Con successo
- rimosso i driver nVidia in modo da ottenere una sessione "minima" su 14.04. Con i driver nVidia, arrivava fino a lightdm, ma non è riuscito ad avviare la sessione Unity.
Senza successo
modprobe
ho provato a e1000e (il driver Ethernet Ethernet utilizzato dal 16.04) e ptp plus pps_core. I moduli sono stati caricati correttamente ma non mi hanno fornito un'interfaccia Ethernet- montare la partizione efi su / etc / fstab, come è montata su 16.04. Nessuna differenza.
insmod efivars
ho provato ad aggiungere dal live-editing (stile emacs) il menu grub: non funziona, non c'è efivars.mod nell'elenco dei moduli di avvio 14.04 (né sul 16.04)
Quello che non ho ancora fatto
Installa 14.04 in modalità EFI su una partizione di riserva che ho riservato per un uso futuro, NON installando grub-efi se possibile (vedi sopra), e se non è possibile, inserendolo su una chiave USB che non mi interessa distruggere. Quindi cercando di capire le differenze rispetto a quella versione installata con quella sul mio HDD.
Domanda:
Quale passaggio suggerisci di seguito per evitare: la reinstallazione completa di 14.04 o la sovrascrittura del mio 16.04 efi grub?
[EDIT] Chiarimenti:
Vorrei che il kernel indovinasse i driver "automaticamente", come dovrebbe fare quando non lo si interrompe con problemi BIOS / EFI.
Ecco la mia comprensione del problema che non posso risolvere (per mancanza di documentazione chiara).
Processo di avvio: (per quanto ho capito)
- Pulsante di accensione
- EFI (o BIOS) avvia ed esegue la scansione dell'hardware
- Inizia a leggere da qualsiasi dispositivo di archiviazione parametrizzato per un "caricatore iniziale" (MBR, caricatore EFI ...)
- Con EFI passa attraverso la partizione EFI, esegue alcuni degli eseguibili lì (ad esempio shimx64.efi per aggirare la funzione M $ -Secure-Lockdown), che sono in grado di montare partizioni Linux con montaggio minimo come ext2 / 3/4. Leggi dal grub.cfg che è lì per trovare dove si trova il caricatore grub "reale".
- Inizia quel "vero" grub loader (su / dev / sda3 per me).
- Questo "vero" grub-loader (dal 16.04) legge il menu che contiene righe per la versione corrente (16.04), recuperi e righe dal vecchio 14.04 che ho aggiunto.
- Quando scelgo 14.04 avvia quindi il vmlinuz corretto su / dev / sdb1 con l'immagine initrd corrispondente.
- Da lì il kernel viene caricato e tenterà di ottenere i driver corretti per la macchina (moduli). Può farlo dal / etc / modules (metodo "manuale") o osservando la propria configurazione come riportato dal BIOS / EFI (metodo "automatico").
- Quando il sistema è impostato come EFI, il modo in cui il kernel esaminerà la tua configurazione è attraverso
efivars
, per il quale ho trovato un po 'di documentazione qui: https://firmware.intel.com/blog/accessing-uefi-variables-linux . Fondamentalmente, c'è / pseudo filesystem in / sys / firmware / efi che consente al kernel di interrogare la configurazione e agire di conseguenza.
Quindi la mia ipotesi è che ovviamente un sistema installato su BIOS fa diversamente. Il modo in cui il kernel interroga il BIOS è diverso e il sistema viene avviato come EFI, il kernel trova "nessun hardware" ... e quindi inizializza solo una macchina predefinita.
Quindi, quello che sto cercando di trovare, è come dire a quella vecchia installazione di 14.04: "ora sei stato avviato tramite EFI, per favore usa efivars
per ottenere i dettagli hardware" .
... e per favore non esitate a correggermi se mi sono sbagliato gravemente nei miei presupposti della descrizione (semplificata) del processo di avvio, e di indicarmi eventuali letture utili al riguardo.