Come riparare la partizione EFI rotta?


24

Ho un iMac con OSX Lion. Ho anche installato bootcamp e Windows 7. Durante l'installazione di Windows 7 non ho prestato completa attenzione e ho eliminato e formattato la partizione EFI.

Non mi rendevo davvero conto del significato di questo mentre la macchina continuava a funzionare bene, avviando sia su Windows che su OSX.

Ho notato che non è stato possibile installare gli aggiornamenti del firmware EFI, ma non ci ho fatto caso.

Tuttavia ora voglio installare Mountain Lion e c'è un sacco di problemi. Mountain Lion non verrà installato senza una partizione EFI valida.

Ecco la mia tabella delle partizioni.

   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                  Apple_HFS EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            799.0 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
   4:       Microsoft Basic Data BOOTCAMP                200.3 GB   disk0s4

Come puoi vedere, ho provato a riparare la partizione EFI con il seguente comando:

newfs_hfs -v EFI / dev / disk0s1

Questo non sembra creare il tipo corretto di partizione, ha creato un Apple_HFS anziché EFI.

La mia domanda è (senza formattare il disco) come posso creare una partizione EFI?

Grazie Rich


Vedi anche questa risposta per cambiare il tipo di partizione: apple.stackexchange.com/a/342139/14586
mivk

Risposte:


31

È possibile ricreare EFI System Partition (ESP) utilizzando lo gptstrumento da riga di comando. Dovrebbe iniziare dal settore 40 e dovrebbe essere lungo 409600 settori (esattamente 200 MiB). Il tipo di voce GPT dovrebbe essere C12A7328-F81F-11D2-BA4B-00A0C93EC93Be se si dispone di un MBR ibrido, dovrebbe esserci il tipo EE. Il formato è in realtà un sottoinsieme di FAT, non HFS +. Puoi leggere GPT usando il comando sudo gpt -r show disk0in una finestra Terminale, questo produce un output simile al seguente:

      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  447801712      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  448211352    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  449480888   40753831         
  490234719         32         Sec GPT table
  490234751          1         Sec GPT header

È possibile visualizzare la partizione EFI corretta nell'indice 1. Se quella riga non corrisponde esattamente, il modo più semplice è eliminare la partizione al suo posto e ricrearla.

Assicurati di sapere cosa stai facendo prima di procedere da qui: potresti perdere dati se sbagli.

Non è possibile modificare la tabella delle partizioni utilizzando gptmentre sono montate le partizioni sull'unità, quindi è necessario eseguire l'avvio da un'altra unità (ad esempio una chiavetta USB con il programma di installazione OSX) o eseguire il mac in modalità disco di destinazione ed eseguire il partizionamento da un altro mac. Potrebbe essere necessario smontare i volumi montati automaticamente utilizzando diskutil unmountDisk disk0prima di procedere e tra i comandi .

Per eliminare la partizione EFI "errata", eseguire questo comando:

sudo gpt remove -i 1 disk0

Assicurati che disk0 sia davvero il disco che vuoi cambiare - i numeri possono cambiare tra i riavvii. Inoltre, funzionerà solo se si dispone già di una partizione non ESP al posto dell'ESP; in caso contrario, l'eliminazione della partizione 1 potrebbe essere disastrosa! In questo caso, dovrai spostare gli indici, poiché penso che l'ESP debba avere l'indice 1. A quanto pare, questo non sarà necessario nel tuo caso.

Una volta eliminato, aggiungere nuovamente la partizione con il layout corretto e digitare:

sudo gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0

Questo dovrebbe risolvere la partizione stessa, ma una volta creata una partizione HFS al suo posto, è necessario correggere anche il suo formato.

Il formato della partizione di sistema EFI è documentato da Apple qui . Come puoi vedere, ti consigliano di clonare un ESP esistente anziché ricreare il file system con newfs_msdos. Se si dispone di un'unità esterna con una tabella delle partizioni GPT (dovrebbe essere presente nella chiavetta di installazione OSX), è possibile clonarla.

Assicurati di avere i numeri di disco e di partizione nel modo giusto o potresti sovrascrivere i dati:

Se disk1 è l'unità esterna e contiene un ESP come prima partizione (disk1s1) e disk0 è l'unità di cui si desidera correggere ESP (disk0s1), eseguire questo comando:

sudo dd if=/dev/disk1s1 of=/dev/disk0s1

Questo copierà ogni singolo blocco dell'ESP di disk1 e sovrascriverà il blocco corrispondente nell'ESP di disk0 con esso.

In alternativa, fai una scommessa con newfs_msdos.


Grazie per la risposta molto dettagliata. Alla fine sono riuscito a risolvere il mio problema usando iParition. Tuttavia, leggendo il tuo metodo, sembra essere il metodo esatto che stavo cercando se iParition non esistesse. Grazie ancora, lo segnerò come la risposta corretta.
Ricco

Questo metodo ha funzionato perfettamente per me sulla 10.6 dopo che GParted ha clonato l'ESP per bloccare il 2048 su un SSD. Avvio di un disco di installazione e seguendo quanto sopra, ho usato ddper archiviare l'ESP clonato in un file prima di eliminarlo, ricrearlo e riscriverlo. Grazie!
Nick Westgate,

Ha funzionato benissimo sul mio mbp con ssd hybrid drive. EFI è stato sovrascritto da un'installazione di grub e questo metodo ha funzionato perfettamente per riportarlo indietro.
sean_m,

Grazie per la condivisione. Per salvare la digitazione, puoi effettivamente specificare EFI come tipo di partizione anziché il GUID: sudo gpt add -b 40 -i 1 -s 409600 -t EFI disk0

1
Come posso modificare gli indici delle partizioni in modo che l'ESP possa trovarsi all'indice 1?
addison

3

Prova questo:

  1. Eseguire il backup dell'unità su time machine.
  2. Riavvia, riavviando sul disco di installazione di Lion.
  3. Vai a Utility Disco.
  4. Cancella partizione.
  5. Cancella HD.
  6. Ripristina nuovamente la partizione, questa volta assegnandole un nome.
  7. Fai clic su HD.
  8. Verifica HD per confermare che il messaggio di errore EFI non viene più visualizzato.
  9. Torna alla schermata di installazione.
  10. Scegli il ripristino dal backup.

2

La soluzione più semplice è stata trovata qui: /unix//a/174522/182014

Una partizione EFI può essere creata tramite GParted Live CD / USB :

  • Crea un'unità da 200 MB (tutto il mio spazio libero all'inizio):
    • Genere: fat32
    • Etichetta: EFI
  • Formattalo
  • Impostare flag di avvio (opzione disponibile solo dopo la formattazione) su "boot, esp"

inserisci qui la descrizione dell'immagine

Pronto!


0

Prova iPartition 3 o versioni successive. Vai a visualizzare il menu e visualizzare i dispositivi di sistema. Dal momento che manca l'EFI da 200 MB, si spera di ridurre di 200 MB la prima partizione su disco. Crea una nuova partizione, quindi nella finestra di ispezione del disco ci sono delle schede. Puoi scegliere un diverso tipo di file system. Basta scegliere la partizione di sistema EFI.


0

Ciò ha risolto il problema per me.

1) Eseguire il backup della partizione Bootcamp utilizzando Winclone

2) Eseguire il backup dell'unità Mac OSX utilizzando Carbon Copy Clone su un'unità esterna

3) Installare Mountain Lion su un'unità flash o esterna

4) Acquistare una copia di iPartition, scaricarla su unità flash o unità esterna

5) Riavvia tenendo premuto il tasto Opzione per ottenere il menu di avvio

6) Selezionare il flash o l'unità esterna da cui avviare

7) Estrai iPartition ed esegui. Seleziona Visualizza e Impostazioni dal menu a discesa.

8) Seleziona Bootcamp Partition nella scheda Partition e seleziona le due caselle nell'elenco (Active e Visible in Windows) quindi chiudi la casella.

9) Il pulsante Vai dovrebbe essere illuminato, altrimenti aumenta leggermente la partizione Bootcamp. Il mio è 2 TB OSX, 500 GB di Windows su un'unità da 2,5 TB.

10) Una volta premuto il pulsante Vai, dovrebbe iniziare l'elaborazione; anche se potrebbe essere necessario interrompere qualsiasi processo che ne impedisce l'esecuzione (Fine con Activity Monitor)

11) Al termine, spegnere e rimuovere il dispositivo di avvio esterno, quindi riaccendere il Mac. Dovrebbe essere riparato e l'avvio normale - almeno il mio.

Sono in esecuzione un iMac 27, 3,2 GHz Intel Core i3 con 16 GB di RAM e un disco rigido da 2,5 TB. La maggior parte degli elementi elencati che avevo già fatto prima dell'installazione di Mountain Lion, ad eccezione di un backup corrente dell'unità Bootcamp. Winclone ha funzionato anche se Bootcamp non si è avviato e il processo di ripristino ha generato un errore durante la scrittura dell'MBR. Ho appena ignorato l'errore e ho continuato con il resto del processo. Apparentemente Mountain Lion ha fatto casini con il PMBR o l'EFI e persino rEF Non avrebbe risolto il problema, ma qualunque cosa iPartition avesse fatto; è ora risolto.

* DISCLAIMER **

Anche se questo processo potrebbe aver funzionato bene per me NON PU MAY FUNZIONARE PER TE! COME CON QUALSIASI PROCESSO CHE MODIFICA LA TABELLA DELLE PARTITON E DI AVVIO DEI DATI, TI RISPETTA UNA POSSIBILITÀ DI PERDERE DATI. ESEGUIRE IL BACKUP DEL DRIVE SE VUOI MANTENERE I TUOI DATI.

Consiglio vivamente Carbon Copy Clone per il backup della partizione OSX perché può creare un clone avviabile che non ho mai avuto esito negativo.

Sono sicuro che altri hanno avuto successo altrove nel risolvere questo problema e apprezzo tutti coloro che hanno pubblicato ciò che hanno fatto in quanto mi ha aiutato a risolvere questo problema sul mio iMac.

Grazie a tutti e spero che questo aiuti qualcun altro. (Pubblicato in Apple Forum) https://discussions.apple.com/message/19220149#19220149

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.