Come convertire un'installazione del BIOS Ubuntu in EFI / UEFI senza ripristino del boot sull'hardware di avvio dual Ubuntu?


2

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-update16.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é:

  1. 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.
  2. 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

  • modprobeho 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 efivarsho 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 efivarsper 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.


1
Ho più installazioni Ubuntu e l'ultima installazione sovrascrive la voce ESP per la cartella / EFI / ubuntu, non ho ancora trovato un modo per aggirare. L'unico vero cambiamento è il 3 righe grub.cfg in ESP che è un file di configurazione per full grub. cfg nell'installazione. Dovresti essere in grado di eseguire l'avvio da una sola chiave di avvio, ma non grub a meno che entrambe le installazioni non siano BIOS o entrambe UEFI. Una volta avviato l'avvio in una modalità non è possibile passare a un'altra modalità, oppure grub avvia solo altre installazioni nella stessa modalità di avvio. Sebbene non sia consigliato, è possibile avviare una seconda unità MBR in UEFI da ESP su sda. Dovresti prima fare il backup di ESP su sda e poi ripristinarlo.
oldfred

Bene, puoi darmi qualche suggerimento su come avviare la seconda unità che è davvero MBR dall'ESP?
Zakhar,

UEFI ha CSM che consente l'avvio del BIOS. Ma devi farlo da UEFI o una chiave di avvio una volta. All'avvio del sistema (da avvio a freddo) lo schermo mostra i tasti per accedere a UEFI e al menu di avvio? Spesso f10 o f12 è il menu di avvio, ma varia in base al fornitore, consultare il manuale se non visualizzato. E questo dovrebbe darti entrambe le voci UEFI e l'opzione di avvio del BIOS su quell'unità.
oldfred

In effetti, ho un Asus H170M-Plus ( asus.com/en/Motherboards/H170M-PLUS ) con opzione CSM. È complicato cambiare l'opzione EFI per l'avvio poiché non è tramite il menu di avvio singolo F8 e devi passare attraverso tutte le impostazioni. Inoltre, ho già provato a impostare tutti i parametri su "Legacy OPROM" e questo non sembra essere molto meglio. L'unica cosa che guadagno avviando da / dev / sdb è la definizione 1920, sia EFI che Legacy.
Zakhar,

Qual è una definizione del 1920? Con unità precedenti e processore Skylake potresti aver bisogno di più parametri di avvio. Ho installato 16.04 solo con la mia build Skylake a febbraio poiché sapevo che i kernel più vecchi non avrebbero supportato il nuovo hardware.
oldfred

Risposte:


1

Ricapitolando: hai spostato un BIOS che avvia il disco 14.04 in un sistema UEFI 16.04, riesegui update-grub e ora puoi avviare il sistema 14.04, ma hai problemi di video / driver. La soluzione è disinstallare tutti i driver proprietari (vecchio sistema) per tornare a un sistema predefinito, quindi installare tutti i nuovi driver.

Fare clic sul pulsante "Impostazioni" in "Software Updater", nella scheda "Software Ubuntu", fare clic sul pulsante "Driver proprietari ..." e nella scheda "Driver aggiuntivi" vedere quali driver proprietari sono offerti e fare clic su su quelli che vuoi (e forse riavviare). Non succede nulla automaticamente.

Potresti anche voler installare i backport sul sistema 14.04 per ottenere un kernel più aggiornato per il tuo 6700. Ecco fatto. Nessuna "conversione" necessaria. Che cosa succede se gli aggiornamenti 14.04 spostati cambiano il file grub.cfg (non utilizzato) su quel sistema - basta rieseguire update-grub sul sistema 16.04. E se non avesse alcun riferimento a / boot / efi (anche se è possibile aggiungerlo abbastanza facilmente con una riga nel file / etc / fstab). Non hai alcun problema di avvio.


Riepilogato perfettamente! Questa è una soluzione accettabile, ma preferirei che Ubuntu gestisse con i driver piuttosto che aggiungerli "manualmente". Da quello che ho letto, dovrebbe "automaticamente" usare i driver giusti ... a condizione che il kernel possa vedere l'hardware! Quindi impostare i driver "manualmente" è ancora un'opzione, come impostare l'indirizzo IPV4 "manualmente" invece di usare DHCP e un lease, ma preferirei il modo "automatico". Aggiungerò un post per chiarire. Per il kernel, lo aggiornerò sicuramente se quello in Trusty non gestisce cose come Crypto usando le istruzioni AES per l'accelerazione (ne ho bisogno!)
Zakhar

Il nuovo hardware richiede nuovi kernel, driver e software di supporto. Alcuni hardware molto nuovi come Skylake stanno ancora ricevendo aggiornamenti e anche Haswell sta ottenendo miglioramenti. Potrebbero essere nel kernel più recente, ma non saranno in una distribuzione fino a quando non verrà rilasciato il prossimo. Probabilmente il 16.10, e nemmeno il 16.04.1. Molti con nuovi sistemi usano quindi ppa per ottenere automaticamente nuovi kernel e driver.
oldfred

Ho provato con una USB 14.04.3 dal vivo e tutto sembra funzionare: Ethernet, suono e lo schermo è correttamente in 1920x1080. Quindi sarà probabilmente sufficiente per questa versione di "backup" e per copiare le mie modifiche. Ovviamente da USB live non si utilizza il driver video Intel. Devo vedere come testare se viene utilizzato su una versione installata su disco. Potrei avere il kernel dalla 14.04.0 in quella versione, e probabilmente aggiornerò all'ultimo supportato lì.
Zakhar,

1

Rinuncio all'idea di convertire la vecchia installazione dal BIOS in EFI.

Invece, userò il suggerimento di @ oldfred per eseguire il dual-boot attraverso la scheda madre quando ne ho bisogno.

Ciò presenta in effetti vantaggi:

  • Non ho bisogno di un menu di Grub in attesa (anche 3 secondi) per l'avvio nel mio sistema quotidiano (16.04), quindi risparmierò tempo all'avvio.
  • Quando voglio avviare il vecchio sistema (14.04), colpire F8 all'avvio non è più difficile dei tasti freccia!
  • Posso mantenere il mio BIOS installato su / dev / sdb perché la mia scheda madre può avviare sia EFI che BIOS, quindi all'avvio di 14.04, sarà in modalità BIOS.

Ad ogni modo, anche in modalità BIOS I driver non vengono caricati, ma poiché si tratta di un altro problema, farò un'altra domanda per provare a riparare questi driver.

Questa domanda è quindi chiusa, tuttavia se trovi una buona documentazione sul processo di avvio dettagliato di un Linux Box, sarò felice di leggerlo!

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.