Come posso cambiare / convertire un disco MBR Ubuntu in un GPT e avviare Ubuntu da EFI?

55

Recentemente ho aggiornato il mio PC, la mia nuova scheda madre (ASUS M5A99X EVO) usa UEFi invece dell'opzione MBR regolare.

Ho un'installazione di Ubuntu 11.10 che ho fatto quando avevo il mio hardware precedente (MSI MS 7267), solo Ubuntu funziona bene, e così fa Windows 7, comunque Windows 7 sta usando UEFI (GPT) mentre Ubuntu sta usando MBR .

Ho i miei sistemi operativi in ​​dischi separati, così che GRUB2 non verrà sostituito dal Bootloader di Windows e viceversa, come ho detto entrambi i sistemi operativi si avviano correttamente, ma per farlo devo disconnettere un'unità in questo caso Unità Ubuntu che impedisce il caricamento di Windows.

Ora la mia domanda è: Come posso cambiare / convertire il disco di Ubuntu in modo che invece di usare MBR usi GPT e permetti a Windows di avviarsi ?.

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 venga avviato.

Ho reinstallato il sistema operativo e ora l'unità è GPT per impostazione predefinita, tuttavia grup-pc è ancora in uso anziché grub-efi .

Come posso far avviare Ubuntu da EFI?.

    
posta Uri Herrera 02.12.2011 - 05:12

4 risposte

93

Sommario:

  1. Terminologia
  2. La 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 partizione GUID

UEFI / EFI / BIOS = interfaccia firmware

MBR / GPT = In che modo il computer riconosce (per disco rigido) quali partizioni sono presenti su guidare e come avviare da loro.

UEFI / BIOS

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

Il BIOS è stata la solita interfaccia firmware che è stata utilizzata. L'UEFI è un'interfaccia più recente che ha diverse funzionalità, come essere più veloce, con 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 così si unirono a loro, portando con loro le idee di EFI. Questo è diventato UEFI).

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

MBR / GPT + GRUB

Il MBR è una sezione di codice all'inizio del disco che contiene un avvio loader (per il BIOS), così come la mappa delle partizioni e un identificativo univoco del disco.

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

GPT è uno standard per come sono specificati i partitoni. Ha un 'protettivo' MBR, tuttavia questo è solo per consentire ai computer basati su BIOS di avviarsi e fermarsi strumenti che conoscono solo l'MBR dal tentativo di distruggere GPT. Può avere

(Il modo in cui viene gestito 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 memorizzati in una partion chiamata EFI System Partiton, che è formattato (di solito) con FAT32. Qui è installato GRUB.

Conversione

Per prima ...

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

Altri in questo modo: Non utilizzare su Apple Mac.

Ora ...

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

Quando ci occupiamo di dischi GPT, dobbiamo utilizzare un programma GPT consapevole. 'GPD fdisk' è un buon strumento da usare e quello che userò. Può essere chiamato gptfdisk o gdisk a seconda della distribuzione (Ubuntu lo chiama gdisk ). Parted (e Gparted) è anche a conoscenza di GPT, quindi può essere utilizzato "in sicurezza" con i dischi GPT.

Per convertire devi:

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

1) Ridimensiona partizione

Usa parted (riga di comando) o gparted (GUI) per ridimensionare il primo e l'ultimo partizione. La prima partion dovrebbe avere circa 200MiB prima e l'ultima la partizione dovrebbe avere 1MiB a 2MiB (o lo farà) tolto alla fine.

2) Converti il ​​disco

Esegui

gdisk /dev/sdx

la modifica del dispositivo che desideri convertire è /dev/sdx .

Dovrebbe dirti che convertirà la tabella dei partiti.

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 il libero spazio all'inizio (suggerisco un numero di settore basso come 34) e utilizzare automaticamente tutto lo spazio disponibile. 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 si ottiene con meno garanzie che la parte precedente non l'ho provato io stesso.

Non sono sicuro di questo passaggio, quindi suppongo di utilizzare le istruzioni di RAOF :

  

Per passare a grub-efi ti piacerebbe

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

Dovresti capire quale versione di grub-efi installare con

ioreg -l -p IODeviceTree | grep firmware-abi

Se dice EFI32 installa il pacchetto grub-efi-ia32 , se dice EFI64 installa il pacchetto grub-efi-amd64 . Puoi installare i pacchetti con

sudo apt-get install <package name>

Probabilmente funzionerà solo se è stato avviato in modalità EFI.

Se non funziona, puoi provare le queste istruzioni passo passo (in "Installa GRUB2 in (U) sistemi EFI") dopo aver installato grub-efi .

Configurazione (+ Dual Boot)

Se le istruzioni di RAOK funzionano, dovresti essere in grado di aggiungere la seguente riga a % Co_de%

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

Presuppone che Windows sia riconosciuto come /etc/grub.d/40_custom da GRUB. Potrebbe dover essere cambiato a hd0 per funzionare.

Ora esegui

update-grub

per aggiornare il file di configurazione.

Riferimenti e ulteriore lettura

Ho usato diverse fonti.

risposta data Portablejim 07.12.2011 - 15:20
8

Questa risposta è incompleta; Non ho provato nulla di tutto ciò. È improbabile che mangi tutti i tuoi dati, ma sei stato avvisato!

Quello che suppongo 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 che Windows sovrascriva GRUB; entrambi dovrebbero coesistere bene sulla partizione EFI. Un'opzione sarebbe quindi passare a grub-efi . Nota: non sono sicuro che grub-efi comprenda le partizioni in stile MSDOS; Io penso che fa. In caso contrario, non si avvierà l'avvio e sarà necessario ripristinare un LiveCD. In effetti, avere un LiveCD a portata di mano comunque!

Per passare a grub-efi ti piacerebbe

  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 and Legacy a UEFI only (o un'opzione simile)

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

¹: maggiori dettagli per questo passaggio: è necessario trovare ciò che il kernel Linux chiama la partizione del sistema EFI. Questo sarà qualcosa come /dev/sda2 , /dev/sdb3 o such². Dovrai quindi creare la directory /boot/efi e aggiungere una riga a /etc/fstab . Se la tua partizione EFI è /dev/sdb3 , allora dovresti aggiungere la seguente riga:

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

Una volta eseguito sudo mount /boot/efi , dovresti trovare che /boot/efi contiene una directory EFI , con una sottodirectory per Windows 7.

²: Dato che hai più dischi rigidi, potrebbe essere una buona idea scoprire l'UUID della partizione, in quanto sarà stabile in aggiunta / rimozione di harddrives mentre il nome /dev/sda2 non è garantito per non modificare. 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 .

    
risposta data RAOF 02.12.2011 - 07:28
2
  

Ho i miei sistemi operativi in ​​dischi separati, così che GRUB2 non verrà sostituito dal Bootloader di Windows e viceversa

È l'ideale, quindi è probabile che almeno una partizione primaria sia libera nella tabella delle partizioni.

  

Ora la mia domanda è: come posso cambiare / convertire l'unità di Ubuntu in modo che invece di usare MBR usi GPT e permetti a Windows di avviarsi?

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

    
risposta data LiveWireBT 27.01.2016 - 10:40
0

Per completare 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 fascino per riparare 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.

    
risposta data John 28.11.2017 - 00:36

Leggi altre domande sui tag