Come posso installare due installazioni Ubuntu indipendenti su un singolo disco rigido con UEFI?


8

Per motivi di sicurezza, vorrei installare un sistema operativo secondario completamente indipendente su un computer a disco singolo utilizzando UEFI. Entrambe le installazioni dovrebbero essere in grado di utilizzare diverse partizioni crittografiche LUKS come dispositivo root (LVM in cima a crypto) e devono essere in grado di usare i propri kernel.

Avere il dual boot con due diversi sistemi operativi non è un grosso problema. Ubuntu e Fedora non interferiranno e potranno condividere la partizione di sistema EFI, ma due installazioni Ubuntu combatteranno tra loro perché vogliono entrambe installare la loro istanza Grub nella stessa posizione EFI.

  • C'è un modo per cambiare Ubuntu per installare Grub in una posizione diversa rispetto a /boot/efi/EFI/ubuntudurante l'installazione? Ho bisogno di un modo persistente, in modo che gli aggiornamenti dei pacchetti e gli aggiornamenti del kernel / grub continuino a essere installati in quel percorso. Proprio come installare Fedora's Grub /boot/efi/EFI/fedora. Non riesco a trovare quell'opzione di configurazione in Grub. Se potessi, il mio menu di avvio Dell UEFI mi consentirebbe di scegliere quale sistema operativo caricare. Forse mi manca un po 'di colla tra efibootmgr e grub-efi qui.

  • In alternativa, sarebbe possibile utilizzare una singola installazione di Grub da una delle due installazioni di Ubuntu e fare in modo che rilevi automaticamente le impostazioni di avvio corrette? Voglio dire, so os-proberche troverà l'altra /bootpartizione con i kernel, ma come può conoscere i parametri di avvio corretti per quel sistema operativo (ad esempio il volume LVM all'interno del volume crittografato bloccato come filesystem di root)? Posso capire che può con installazioni a singola partizione non crittografate, ma non può abbinare a /bootal suo corrispondente filesystem di root, giusto? Ed è completamente impossibile se crittografato. Quindi ciò richiederebbe molta modifica manuale dei file di configurazione di grub. Non mi piace anche questa opzione di una singola configurazione di bootloader condivisa, rendendo i due sistemi operativi meno isolati in una certa misura.

A proposito, sto bene con l'installazione di esperti basati su testo server. Anche qualche configurazione personalizzata purché non debba ripetere i passaggi per ogni aggiornamento kernel / Grub.

Risposte:


6

Ho due suggerimenti ...

Opzione n. 1: ESP separati

Sotto EFI, il boot loader risiede nella " partizione di sistema EFI (ESP). Ho messo la parola "il" tra virgolette perché non esiste una regola che dice che sei limitato a un ESP. Se si creano due ESP sul disco rigido, è possibile utilizzarne uno per la prima installazione e il secondo ESP per la seconda installazione. Questo dovrebbe funzionare senza problemi, anche se dovrai creare le tue partizioni manualmente (usando l'opzione "Something Else" durante l'installazione), almeno per la tua seconda installazione di Ubuntu.

Un problema con questo approccio è che, sebbene le specifiche EFI affermino esplicitamente che è possibile creare tutti gli ESP desiderati, alcuni software potrebbero confondersi. Un esempio importante di ciò è il programma di installazione di Windows, almeno tramite Windows 7 (non so Windows 8 o versioni successive); quando il programma di installazione di Windows 7 vede un disco con due ESP, si sfalda e fa cose strane. IIRC, non completa correttamente la propria installazione. È ipotizzabile che gli strumenti di riparazione di Windows soffrano dello stesso problema. Se non stai avviando Windows su questo sistema, questo non dovrebbe essere un grosso problema. Se lo seiall'avvio con Windows, dovresti semplicemente essere consapevole del problema, perché puoi facilmente risolverlo modificando temporaneamente il codice del tipo di ESP non Windows se riscontri problemi. Nota che Windows si avvia bene su un disco con più ESP; è solo il programma di installazione che soffoca su tali dischi.

Un altro problema è come passare da una distribuzione all'altra. Potrebbe essere necessario personalizzare una o entrambe le configurazioni di GRUB delle installazioni utilizzando uno strumento come GRUB Customizer. Un'altra opzione (ma non incompatibile) sarebbe quella di utilizzare il proprio boot manager del firmware per passare da una installazione all'altra di GRUB e di utilizzare ognuna per avviare solo la propria versione di Ubuntu.

Opzione n. 2: Abbandona GRUB (o almeno gli strumenti GRUB di Ubuntu)

Il problema con GRUB per la tua situazione è che hai due installazioni e gli strumenti di manutenzione di GRUB potrebbero confondersi con quella configurazione. Questa osservazione porta all'ovvia soluzione che semplicemente non dovresti usare quegli strumenti. Esistono molti altri boot loader EFI per Linux, molti dei quali sono più facili da gestire manualmente rispetto a GRUB. È possibile configurare ELILO, SYSLINUX, GRUB Legacy di Fedora, gummiboot o rEFInd e gestire entrambe le installazioni manualmente. Infatti, poiché rEFInd rileva i kernel ogni volta che si avvia, rEFInd dovrebbe essere vicino all'assenza di manutenzione, una volta impostato. In alternativa, ma in modo simile, è possibile modificare manualmente il grub.cfgfile per fare ciò che si desidera, piuttosto che fare affidamento sugli script di installazione di GRUB.

A parte rEFInd, tutti questi strumenti richiedono di apportare modifiche alla configurazione ogni volta che si aggiorna un kernel, il che sarà un trascinamento. C'è anche la domanda su quando e come installare il programma di avvio aggiuntivo. Probabilmente lo rimanderei fino a dopo la tua seconda installazione di Ubuntu, poiché ogni installazione registrerà la propria copia di GRUB come caricatore di avvio predefinito e si desidera sovrascrivere tale predefinito.

Nota anche che nessuno di questi strumenti può leggere un kernel da un filesystem crittografato o da un LVM, quindi dovrai avere una /bootpartizione non crittografata separata per ciascuna delle tue installazioni Ubuntu. Questo è il modo in cui la maggior parte delle istruzioni che ho visto dicono di configurare comunque un'installazione di Ubuntu crittografata, quindi probabilmente non è un grosso problema a meno che tu non voglia giocare sul "bordo sanguinante" della crittografia del disco.

Alcuni caricatori di avvio EFI hanno requisiti di partizionamento o file system specifici aggiuntivi. In particolare, ELILO, SYSLINUX e gummiboot richiedono che il kernel risieda su una partizione FAT e ESP funziona meglio per questo. Puoi farlo installando ESP su /boot, ma questa è una soluzione incerta in Ubuntu perché alcuni aggiornamenti dei pacchetti richiedono collegamenti simbolici. Avresti anche problemi a farlo con due installazioni Ubuntu separate perché entrambi proverebbero a rivendicare gli stessi file. (In questo caso, "ESP" significa in realtà "la partizione da cui è stato eseguito il boot loader", quindi in questo caso puoi avere solo un ESP.) GRUB Legacy e rEFInd sono più flessibili al riguardo.

La mia raccomandazione

Personalmente, userei rEFInd per questo - ma mentre mantengo rEFInd, non sono esattamente imparziale. In effetti, ho un computer che esegue il boot multiplo tra tre installazioni di Ubuntu e rEFInd passa da uno all'altro. Questo particolare sistema non utilizza la crittografia, ma dubito che ciò provocherà nuovi problemi dal punto di vista di rEFInd.

Detto questo, anche gli ESP separati dovrebbero funzionare bene, con l'avvertenza che potrebbe essere necessario utilizzare GRUB Customizer per modificare le impostazioni di almeno una di quelle copie di GRUB.


Ottimi suggerimenti, grazie! Sono sicuro che hai ragione sul fatto che uno può avere più ESP secondo le specifiche, ma dubito che anche la mia implementazione DellFI Latitude UEFI lo supporti. Mi permette solo di navigare nei percorsi per singole unità singole. Devo davvero provarlo però.
gertvdijk,

se l'implementazione EFI della Dell è così interrotta da non poter gestire più ESP, è necessario restituirla al negozio per un rimborso. Sul serio; quel tipo di cattivo indicherebbe una tale orrore che non mi fiderei del firmware per svolgere i suoi compiti più elementari. In pratica, non penso che sarebbe così male; Non ho mai sentito parlare di un EFI che non è in grado di gestire più ESP.
Rod Smith,

1

Ecco i passaggi che ho usato per eseguire il dual boot con due sistemi Ubuntu crittografati su un singolo disco rigido con UEFI utilizzando l'opzione n. 2 consigliata da Rod Smith in precedenza. Questo è stato specificamente con Ubuntu 18.04.1-desktop. La crittografia della home directory non viene più fornita come opzione durante l'installazione in quanto sussistono problemi di affidabilità e manutenzione di eCryptfs. Si consiglia invece di utilizzare LUKS, quindi penso che sia l'opzione migliore per avere più utenti con partizioni home crittografate.

    1. Avvia un Live USB, scaricando l'ISO e utilizzando Startup Disk Creator per formattare e configurare un'unità USB.
    1. Usa GParted per partizionare il disco. Questo si basava sui consigli su https://help.ubuntu.com/community/ManualFullSystemEncryption e sull'utilizzo di alcuni dei valori predefiniti impostati dall'installer di Ubuntu quando si seleziona la crittografia del disco per l'intero disco.
      • EFI System Partition / 512MiB / FAT32 / boot, esp (flag)
      • Sistema di avvio n. 1/732 MiB / EXT4
      • Sistema di avvio n. 2/732 MiB / EXT4
      • Data Encrypted # 1 / [dimensione desiderata] / cancellato
      • Data Encrypted # 2 / [dimensione desiderata] / cancellato
    1. Riavvia nuovamente in Live USB
      • Installa Ubuntu
      • Seleziona le preferenze di installazione
      • Seleziona "Qualcos'altro" per il layout del disco di partizione e all'interno di quella configurazione di partizione per l'installazione:
        • Seleziona "EFI System Partition" come bootloader nel menu in basso.
        • Selezionare "Data Encrypted # 1" e selezionare "dispositivo fisico per la crittografia", quindi immettere la frase di crittografia da utilizzare per la partizione.
        • Selezionare la partizione appena creata con EXT4 e modificare il punto di montaggio su "/".
        • Seleziona "Boot System # 1" e il punto di montaggio deve essere "/ boot".
      • Continua e installa
    1. Riavvia nella nuova installazione
      • Installa "refind" tramite "apt-get install refind" e fallo installare automaticamente su ESP, la "partizione di sistema EFI".
    1. Riavvia nuovamente in Live USB
      • Ripetere i passaggi 3 e 4 per le partizioni n. 2 del sistema di avvio e di crittografia dei dati n. 2 che installano la seconda installazione di Ubuntu.
    1. Configurare e aggiornare ogni installazione secondo necessità.

1

Uso il seguente approccio con un singolo ESP:

Ho creato caricatori di avvio aggiuntivi per ciascun sistema operativo con

sudo grub-install --bootloader-id=ID

usando un diverso IDper ogni sistema operativo.

Esempio:

Ho Ubuntu 16.04 e Ubuntu 18.04 installati. Avvio in Ubuntu 16.04 ed eseguo

sudo grub-install --bootloader-id=Ubuntu1604

Quindi, dopo l'avvio da Ubuntu 18.04, corro

sudo grub-install --bootloader-id=Ubuntu1804

Nei UEFI-settings vedo le nuove voci di avvio con i nomi Ubuntu1604ed Ubuntu1804e riorganizzare l'ordine di avvio a una serie di nuove entrate alla prima posizione.

Posso anche vedere le cartelle con questi nomi nell'ESP.

Quando un aggiornamento del sistema viene fornito con una nuova versione di grub, reinstallerà una nuova istanza di grub nella ubuntucartella sull'ESP, non influirà sui bootloader che ho creato da me, ma devo riordinare nuovamente l'ordine di avvio poiché ubuntu-entry verrà spostato al primo posto nell'ordine di avvio.

Questo è ciò che efibootmgr -vmostra nella mia configurazione:

~ $ efibootmgr -v
BootCurrent: 0001
Timeout: 0 secondi
BootOrder: 0001.0002.0004.0000.0003.0005
Boot0000 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ ubuntu \ shimx64.efi)
Boot0001 * US1804 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ US1804 \ grubx64.efi)
Boot0002 * US1604 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ US1604 \ grubx64.efi)
Boot0003 * UEFI OS HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ BOOT \ BOOTX64.EFI)
Boot0004 * US1904 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ US1904 \ shimx64.efi)
Boot0005 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (EFI \ Ubuntu \ grubx64.efi)

Non ha ancora funzionato per me. Cambio default in / etc / default / grub per distribuire come GRUB_DISTRIBUTOR="Bionic_18_04"e reinstallare Grub lo usa come ID predefinito UEFI. Ma ogni volta che usa solo /EFI/ubuntu/grub.cfg come posizione predefinita per l'avvio non dal mio nuovo /EFI/bionic_18_04/grub.cfg.
oldfred

@oldfred Per me questo funziona benissimo per diversi anni eseguendo un avvio triplo.
mook765,

Ho provato il tuo comando, piuttosto che rinominare in / etc / default / grub. Non ha fatto differenza. UEFI è impostato per l'avvio predefinito di una nuova voce. Ma è stato avviato usando my / efi / ubuntu con Disco come avvio predefinito, piuttosto che grub nella nuova cartella / EFI / ubuntu1804. Penso che sia grub non UEFI a fare la differenza.
oldfred

@oldfred Per favore dai un'occhiata al risultato efibootmgr -vche ho aggiunto alla mia risposta. Funziona. Potresti avere ulteriori modifiche che ti impediscono di farlo. Quello che ho descritto è l'unica cosa che faccio per farlo funzionare.
mook765,

Ho controllato efibootmgr -v ed è stato impostato per una nuova voce, ma ho avviato il grub in / EFI / ubuntu. Il mio si sta avviando /EFI/ubuntu1804/shimx64.efi. Stai usando un grubx64.efi o uno shimx64.efi, forse questa è una differenza? Ho Secure Boot disattivato, ma per impostazione predefinita è shim come prima voce di ubuntu1804. Ad un certo punto ho finito con così tante voci o cartelle UEFI in / EFI che ho avuto problemi di avvio e ho dovuto usare rEFInd su un'altra unità per l'avvio. Quindi ora non mi piace avere troppo nella cartella / EFI o voci in UEFI.
oldfred
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.