Come posso cambiare / convertire un'unità MBR di Ubuntu in GPT e fare l'avvio di Ubuntu da EFI?


65

Di recente ho aggiornato il mio PC, la mia nuova scheda madre (ASUS M5A99X EVO) utilizza UEFi invece dell'opzione MBR normale.

Ho un'installazione Ubuntu 11.10 che ho fatto quando avevo il mio hardware precedente (MSI MS 7267), Ubuntu da solo si avvia bene, così come Windows 7, tuttavia Windows 7 utilizza l'avvio UEFI (GPT) mentre Ubuntu utilizza MBR.

Ho i miei sistemi operativi in ​​unità separate, in modo che GRUB2 non venga sostituito dal Bootloader di Windows e viceversa, come ho detto che entrambi i sistemi operativi si avviano da soli, ma per fare ciò devo disconnettere un'unità in questo caso l'unità Ubuntu come impedisce il caricamento di Windows.

Ora la mia domanda è: come posso cambiare / convertire l'unità di Ubuntu in modo che invece di utilizzare MBR usi GPT e consenta l'avvio di Windows ?.

Preferibilmente senza reinstallare l'intero sistema o perdere dati.

E se dovessi cancellare l'unità, come posso installare Ubuntu in GPT, UEFI, qualunque sia la modalità ?.

Ho usato gdisk per convertire da MBR a GPT, ma ora Ubuntu non può avviarsi sembra che Grub non si avvii.

Ho reinstallato il sistema operativo e l'unità è GPT ora per impostazione predefinita, tuttavia grup-pcviene ancora utilizzata al posto di grub-efi.

Come posso avviare Ubuntu da EFI ?.


Spero che questo ti possa aiutare rodsbooks.com/gdisk/booting.html .
One Zero

Risposte:


113

Sommario:

  1. Terminologia
  2. Conversione
  3. Configurazione (+ avvio doppio)

Terminologia

BIOS = sistema di input / output di base

(U) EFI = (Unified) Extensible Firmware Interface

MBR = Master Boot Record

GPT = Tabella delle partizioni GUID

UEFI / EFI / BIOS = Interfaccia firmware

MBR / GPT = In che modo il computer conosce (per disco rigido) quali partizioni si trovano sull'unità e come eseguirne l'avvio.

UEFI / BIOS

Un'interfaccia del firmware è il modo in cui il firmware (il software all'interno dei dispositivi) e il sistema operativo interagiscono. Inizializza l'hardware, quindi esegue il sistema operativo e garantisce che i driver del sistema operativo possano far funzionare l'hardware.

Il BIOS è stata la solita interfaccia firmware che è stata utilizzata. UEFI è un'interfaccia più recente che ha diverse funzionalità, come essere più veloce, avere una GUI e essere in grado di avviare la scheda di rete e ottenere un indirizzo IP. UEFI sostituisce EFI. (Coloro che hanno sviluppato EFI hanno visto che c'erano altri che facevano qualcosa di simile e quindi si sono uniti a loro, portando con loro le idee di EFI. Questo è diventato UEFI).

Un BIOS richiede che il bootloader sia all'inizio del disco, tuttavia una UEFI utilizza una partizione per questo e può scegliere tra più bootloader da usare.

MBR / GPT + GRUB

L' MBR è una sezione di codice all'inizio del disco che contiene un caricatore di avvio (per il BIOS), nonché la mappa delle partizioni e un identificatore del disco univoco.

Per installare GRUB su un disco con un MBR, GRUB inserisce un piccolo programma nell'MBR per caricare il resto di GRUB da un'altra parte del disco. (Questo perché l'MBR è troppo piccolo per contenere tutto GRUB). Lo spazio scelto è lo spazio tra l'MBR e la prima partizione, che di solito esiste.

GPT è uno standard per come vengono specificati i partitoni. Ha un MBR "protettivo", tuttavia questo è solo per consentire ai computer basati su BIOS di avviare e arrestare strumenti che conoscono solo MBR dal tentativo di eliminare GPT. Può avere

(Il modo in cui viene gestita la GPT dipende dal fatto che si stia avviando utilizzando un BIOS (o un sistema UEFI in modalità di emulazione BIOS) o UEFI. Mi concentrerò su UEFI in relazione alla domanda).

I boot loader per i sistemi operativi sono archiviati in una partizione denominata EFI System Partiton, che è formattata (di solito) con FAT32. Qui è installato GRUB.

Conversione

Primo...

Stiamo giocando con la tabella delle partizioni, quindi la sicurezza garantita non è possibile. È un'operazione rischiosa. Tuttavia, il metodo non deve perdere i dati.

Altri si imbattono in questo: non utilizzare su Mac Apple.

Adesso...

Dovrai farlo su un CD live (o su un'altra installazione di Linux installata su un altro disco).

Quando si ha a che fare con dischi GPT, è necessario utilizzare un programma compatibile con GPT. 'GPT fdisk' è un buon strumento da usare e quello che userò. Può essere chiamato gptfdisko in gdiskbase alla distribuzione (Ubuntu lo chiama gdisk). Parted (e Gparted) è anche a conoscenza di GPT, quindi può essere "sicuro" con i dischi GPT.

Per convertire è necessario:

  1. Ridimensiona le partizioni per adattarle ai dati GPT e alla partizione di sistema EFI.
  2. Converti il ​​disco e aggiungi partizioni
  3. Installa GRUB sulla partizione di sistema EFI.

1) Ridimensiona la partizione

Utilizzare parted(riga di comando) o gparted(GUI) per ridimensionare la prima e l'ultima partizione. La prima partizione dovrebbe avere circa 200 MiB prima di essa, e l'ultima partizione dovrebbe avere 1MiB a 2MiB (o lo farà) rimosso alla fine.

2) Converti il ​​disco

Correre

gdisk /dev/sdx

la modifica del dispositivo che si desidera convertire è /dev/sdx.

Dovrebbe dirti che convertirà la tabella dei partiton.

GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if
you don't want to convert your MBR partitions to GPT format!
***************************************************************


Command (? for help): 

Ora aggiungi una nuova partizione, rendendola di tipo "Sistema EFI". Dovrebbe trovare lo spazio libero all'inizio (suggerisco un numero di settore basso come 34) e utilizzare automaticamente tutto lo spazio libero. Gli esempi utilizzano un'unità flash USB da 4 GB con 1 partizione già presente, ridimensionata come sopra.

Command (? for help): n
Partition number (2-128, default 2): 2
First sector (34-7831518, default = 34) or {+-}size{KMGTP}: 
Information: Moved requested sector from 34 to 2048 in
order to align on 2048-sector boundaries.
Use 'l' on the experts' menu to adjust alignment
Last sector (2048-421887, default = 421887) or {+-}size{KMGTP}: 
Current type is 'Linux/Windows data'
Hex code or GUID (L to show codes, Enter = 0700): L
0700 Linux/Windows data    0c01 Microsoft reserved    2700 Windows RE          
4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS            
7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved   
8200 Linux swap            8301 Linux reserved        8e00 Linux LVM           
a500 FreeBSD disklabel     a501 FreeBSD boot          a502 FreeBSD swap        
a503 FreeBSD UFS           a504 FreeBSD ZFS           a505 FreeBSD Vinum/RAID  
a800 Apple UFS             a901 NetBSD swap           a902 NetBSD FFS          
a903 NetBSD LFS            a904 NetBSD concatenated   a905 NetBSD encrypted    
a906 NetBSD RAID           ab00 Apple boot            af00 Apple HFS/HFS+      
af01 Apple RAID            af02 Apple RAID offline    af03 Apple label         
af04 AppleTV recovery      be00 Solaris boot          bf00 Solaris root        
bf01 Solaris /usr & Mac Z  bf02 Solaris swap          bf03 Solaris backup      
bf04 Solaris /var          bf05 Solaris /home         bf06 Solaris alternate se
bf07 Solaris Reserved 1    bf08 Solaris Reserved 2    bf09 Solaris Reserved 3  
bf0a Solaris Reserved 4    bf0b Solaris Reserved 5    c001 HP-UX data          
c002 HP-UX service         ef00 EFI System            ef01 MBR partition scheme
ef02 BIOS boot partition   fd00 Linux RAID            
Hex code or GUID (L to show codes, Enter = 0700): ef00
Changed type of partition to 'EFI System'

Ora dovresti avere la partizione EFI.

Command (? for help): p
Disk /dev/sdd: 7831552 sectors, 3.7 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 669247F2-37F7-4797-98F9-9CE56F7EA8C8
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7831518
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1          421888         7829503   3.5 GiB     0700  Linux/Windows data
   2            2048          421887   205.0 MiB   EF00  EFI System

Quindi esci gdisk

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): y
OK; writing new GUID partition table (GPT).
The operation has completed successfully.

Ora usa Gparted (o riga di comando mkfs.vfat) per formattare la partizione come FAT32.

3) Installa GRUB

Questo viene fornito con meno garanzie che la parte precedente non l'ho provata da sola.

Non sono sicuro di questo passaggio, quindi indovinerò usando le istruzioni di RAOF :

Per passare a grub-efi che vorresti

  1. Trova la tua partizione EFI; montalo in / boot / efi. Aggiungi questo a / etc / fstab¹
  2. Installa il pacchetto grub-efi
  3. Cambia la priorità di avvio del BIOS da UEFI e Legacy a UEFI (o un'opzione simile)

Dovresti capire con quale versione di grub-efi installare

ioreg -l -p IODeviceTree | grep firmware-abi

Se dice EFI32installa il grub-efi-ia32pacchetto, se dice EFI64 installa il grub-efi-amd64pacchetto. È possibile installare i pacchetti con

sudo apt-get install <package name>

Questo probabilmente funzionerà solo se è stato avviato in modalità EFI.

Se non funziona, è possibile provare queste istruzioni dettagliate (sotto "Installa GRUB2 in (U) sistemi EFI") una volta grub-efiinstallato.

Configurazione (+ avvio doppio)

Se le istruzioni di RAOK funzionano, dovresti essere in grado di aggiungere la seguente riga a /etc/grub.d/40_custom

menuentry "Windows 7" {
        set root='(hd0,gpt1)'
        chainloader /EFI/microsoft/bootmgfw.efi
}

Presuppone che Windows sia riconosciuto come hd0da GRUB. Potrebbe essere necessario modificarlo hd1per funzionare.

Adesso corri

update-grub

per aggiornare il file di configurazione.

Riferimenti e ulteriori letture

Ho usato diverse fonti.


WOah, grazie! .. ma sono ancora bloccato nell'installazione di grub-efi sull'unità, ho reinstallato il sistema operativo e creato l'unità GPT, ma sta ancora usando grub-pc non grub-efi.
Uri Herrera,

Se si dispone dell'opzione (poiché non possiedo alcun dispositivo UEFI, sono gravemente paralizzato nell'essere in grado di aiutare) è necessario avviare il CD live in modalità UEFI e non in modalità BIOS / MBR.
Portablejim

Che ne dici di rimuovere grub-pce installare grub-efimentre sei nel cd live (prima di installare forse?)?
Portablejim

1
Caspita, ha funzionato perfettamente, grazie! Ho appena migrato un'installazione parallela di Fedora 25 e Windows 10 da MBR + BIOS a GPT + UEFI senza reinstallare nulla. Ho eseguito i passaggi 1 e 2 da una chiavetta USB Fedora 25 Live avviata con UEFI. Per il passaggio 3, ho usato chroot per accedere al mio sistema esistente dal sistema Live come descritto in wiki.ubuntuusers.de/GRUB_2/Reparatur/#chroot-Methode . Ho disinstallato grub2, installato grub2-efi e grub2-efi-moduli e reinstallato esplicitamente shim (senza reinstallare shim, il menu Grub non apparirà). Finalmente ...
Philipp Hartwig,

2
Per l'installazione di GRUB, ho appena avviato un USB live e ho usato la riparazione del boot. askubuntu.com/questions/226061/… Grazie per questo post!
Jbrock

9

Questa risposta è incompleta; Non ho provato nulla di tutto questo. È improbabile che uno dei tuoi dati venga mangiato, ma sei stato avvisato!

Quello che immagino stia accadendo qui è che il tuo BIOS si sta avviando preferibilmente da un MBR legacy, quindi il povero vecchio UEFI Windows 7 viene trascurato.

Una delle cose belle di UEFI è che non dovresti più preoccuparti della sovrascrittura di Windows GRUB; entrambi dovrebbero coesistere bene sulla partizione EFI. Un'opzione sarebbe quindi passare a grub-efi. Nota: non sono sicuro che grub-eficomprenda le partizioni in stile MSDOS; Io penso di sì. In caso contrario, l'avvio non verrà eseguito e sarà necessario un LiveCD per il ripristino. In effetti, avere comunque un LiveCD a portata di mano!

Per passare a grub-efiche vorresti

  1. Trova la tua partizione EFI; montalo dentro /boot/efi. Aggiungi questo a /etc/fstab¹
  2. Installa il grub-efipacchetto
  3. Cambia la priorità di avvio del BIOS da UEFI and Legacya UEFI only(o un'opzione simile)

Ciò dovrebbe lasciarti con un'installazione Ubuntu che avvia UEFI. In caso contrario, avvia il tuo fidato LiveCD (o il CD di installazione di Ubuntu Alternate - l'opzione "Correggi un sistema rotto" è ciò che stai cercando ☺), chroot nel tuo sistema e reinstallalo grub-pc.


¹: Maggiori dettagli per questo passaggio: dovrai trovare ciò che il kernel Linux chiama la tua partizione di sistema EFI. Questo sarà qualcosa di simile /dev/sda2, /dev/sdb3o such². Sarà quindi necessario creare la /boot/efidirectory e aggiungere una riga a /etc/fstab. Se la partizione EFI lo è /dev/sdb3, aggiungere la seguente riga:

/dev/sdb3    /boot/efi    vfat    defaults    0    1

Una volta eseguito sudo mount /boot/efi, dovresti trovare che /boot/eficontiene una EFIdirectory, con una sottodirectory per Windows 7.


²: Poiché hai più dischi rigidi, potrebbe essere una buona idea scoprire l'UUID della partizione, poiché sarà stabile in aggiunta / rimozione di hard disk mentre il /dev/sda2nome non è garantito per non cambiare. Questo può essere fatto dopo aver finito di impostare tutto il resto, però.

Puoi trovare l'UUID cercando in /dev/disk/by-uuid. Ad esempio, ottengo:

$ ls /dev/disk/by-uuid -lah
total 0
drwxr-xr-x 2 root root 100 Dec  5 09:12 .
drwxr-xr-x 6 root root 120 Dec  5 09:12 ..
lrwxrwxrwx 1 root root  10 Dec  5 09:12 27fae347-4c7f-45cb-92d6-5f3d410599a1 -> ../../sda3
lrwxrwxrwx 1 root root  10 Dec  5 09:12 4405-64C8 -> ../../sda1
lrwxrwxrwx 1 root root  10 Dec  5 09:12 5243e250-8da5-4fea-aa63-61466022661d -> ../../dm-0

Nel mio caso, so che /dev/sda1è la mia partizione di sistema EFI, quindi ho

UUID=4405-64C8  /boot/efi       vfat    defaults        0       1

nel mio /etc/fstab.


Se Windows 7 si sta avviando da EFI, avrà inserito il suo bootloader nella partizione EFI, quindi devi averne uno ☺. Questo non sarà visibile da nessuna parte nel filesystem Ubuntu standard. Dovrai trovarlo con qualcosa come il Disk utilityprogramma. Fino a quando non hai trovato e montato la tua partizione EFI, grub-efinon sarà in grado di funzionare: deve attaccare il suo bootloader nella partizione di sistema EFI.
RAOF

Non riesco ancora ad avviare Ubuntu, ho aggiunto le linee a fstab usando un livecd e ho anche creato la directory efi in / boot ma non sembra avere alcun effetto.
Uri Herrera,

Ora che hai montato la partizione EFI, devi eseguire sudo grub-installe sudo update-grubper poter installare e configurare GRUB sulla partizione EFI. Dovrai farlo dopo aver eseguito il chroot nella tua installazione (perché deve sapere cose sull'installazione sul tuo disco rigido). Se hai bisogno di aiuto per farlo, posso aggiungere dettagli alla risposta.
RAOF

Sì, aggiungi come chroot nella mia installazione e reinstalla grub.
Uri Herrera,

Ho seguito le istruzioni qui, ma ho avuto un problema con la nuova partizione EFI. Quando ho tentato di installare un'anteprima di Windows 10, il programma di installazione ha restituito questo errore: "Windows ha rilevato che la partizione di sistema EFI è stata formattata come NTFS. Formattare la partizione di sistema EFI come FAT32 e riavviare l'installazione" Sono stato in grado di risolvere il problema utilizzando lo strumento diskpart fornito con Windows Installer, eliminando la prima partizione EFI e creandone un'altra create partition efi. Per informazioni su diskpart, consultare technet.microsoft.com/en-us/library/cc766465%28WS.10%29.aspx
Pathogen,

2

Ho i miei sistemi operativi in ​​unità separate, in modo che GRUB2 non venga sostituito dal Bootloader di Windows e viceversa

È l'ideale, quindi probabilmente avrai almeno una partizione primaria libera nella tabella delle partizioni.

Ora la mia domanda è: come posso cambiare / convertire l'unità di Ubuntu in modo che invece di utilizzare MBR usi GPT e consenta l'avvio di Windows?

Non è necessario convertire MBR in GPT per eseguire l'avvio UEFI, basta creare una partizione FAT primaria, installare il grub-efi-amd64-binpacchetto e seguire le istruzioni in Aggiungi un ESP a un'installazione esistente con MBR che dovrebbe funzionare con le versioni correnti di Ubuntu.


1
Risposta sottovalutata. Windows richiede ostinatamente GPT + UEFI o MBR + avvio del BIOS, ma Linux consente il mix-and-match e grub può caricare a catena un altro disco o avviare direttamente bootmgr di Windows 7.
Tim G,

@timg Questo può essere vero dopo il fatto, ma sfortunatamente se stai configurando Windows 10 da zero sembra che il programma di installazione non ti permetterà di procedere senza un volume GPT, se hai avviato EFI.
Merk,

@Merk Oh, io uso il programma di installazione di Windows un modo diverso: Shift-F10 ti dà una linea di comando ed è possibile diskpart, dism /apply-imagee poi bcdboot(più opzioni sia di quelli ovviamente) per renderlo installare MBR o GPT a prescindere da come avete fatto il boot.
Tim G,

1

Per integrare la risposta di Portablejim (che mi ha davvero aiutato a convertire da MBR a GPT, grazie!), Puoi usare Boot-Repair per reinstallare grub. Ha funzionato come un incantesimo per ripristinare il mio avvio dopo che non sono riuscito a completare il passaggio 3, e ancora una volta quando l'installazione di Windows 10 ha fatto scomparire l'opzione di avvio di Linux.


Ho un disco solo Ubuntu e utilizzo Boot-Repair come il passaggio 3 ha funzionato come un incantesimo!
Rael Gugelmin Cunha,
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.