10.13 High Sierra Suppression par erreur d'une partition EFI

Patmout17

Membre confirmé
20 Janvier 2021
14
1
67
Bonjour,

Après avoir parcouru pas mal de topics, je vous fais part de mon souci et j'espère trouver une solution avec votre aide. Sur un iMac 27" fin 2013, qui est sous High Sierra, j'avais installé Boot Camp et Windows. N'en ayant plus l'utilité, j'ai désinstallé et en suivant un tuto de désinstallation de Boot Camp, j'ai commis une erreur irréversible, j'ai effacé la partition EFI de mon disk0.
Maintenant, même si le Mac fonctionne parfaitement et démarre très bien, je ne peux pas installer de mise à jour, car à chaque fois, j'ai la réponse comme quoi, il n'est pas possible d'installer l'OS sur Macintosh HD.

Voici ce que j'obtiens avec diskutil :

Bloc de code:
iMac27-260:~ patricemouton$ diskutil list
/dev/disk0 (internal, physical)
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:          Apple_CoreStorage Macintosh HD            999.2 GB   disk0s1
   2:                 Apple_Boot Recovery HD             650.0 MB   disk0s2

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:          Apple_CoreStorage Macintosh HD            120.9 GB   disk1s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk1s3

/dev/disk2 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +1.1 TB     disk2
                                 Logical Volume on disk1s2, disk0s1
                                 C748FE3C-70EA-440A-BFCC-BD8398940BCA
                                 Unencrypted Fusion Drive

iMac27-260:~ patricemouton$ iMac27-2[/SIZE]

[SIZE=4]Voici ce que j'obtiens avec la commande GPT[/SIZE]
[SIZE=3]iMac27-260:~ patricemouton$ sudo gpt show disk0
Password:
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34      409606        
      409640  1951583808      1  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  1951993448     1269536      2  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  1953262984      262151        
  1953525135          32         Sec GPT table
  1953525167           1         Sec GPT header
iMac27-260:~ patricemouton$

Donc, ma question est la suivante, comment puis-je recréer cette partition EFI et pouvoir faire mes mises à jour ?

Merci de votre aide.


--------------------------------
Note du modérateur de service (ici Aliboron) :

Merci de mettre les copies de compte-rendus de Terminal entre des balises de "Bloc de code". On les trouve dans la barre d'outils, en dessous des trois petits points :
Bloc de code.png
 
Dernière édition par un modérateur:
Bonjour Patmout

Dans le tableau des blocs gérés par la table de partition GPT > cette entrée :
Bloc de code:
          34      409606
  • désigne une bande d'espace libre qui commence au bloc n°34 > et a une extension de 409606 blocs (de 512 octets standards = 209,718272 Mo). Une partition-Système de l'EFI (dite ESP = EFI_System_Partition) > lorsque comme ici la taille du bloc de référence est 512 octets => commence canoniquement au bloc n°40 > et a une extension de 409600 blocs (209,7 Mo). Tu en déduis comme moi que les blocs nécessaires pour la recréation d'une partition de type EFI sont disponibles à la bonne place.
  • pour recréer un descripteur GPT de partition EFI dans la table GPT du HDD (concerné ici) > il faut désactiver cette table afin de pouvoir y écrire. Ce via le démontage des volumes dépendant de cette table => ce qui force la déprise-en-charge de la table par le kernel (moteur du Système démarré). Il faut donc pouvoir démarrer sur un volume indépendant de la table GPT du HDD de ton Fusion Drive. Ce que n'est pas le volume de secours local hébergé par une image-disque du volume Recovery HD du même disque. Il va donc falloir que tu démarres par internet > ce qui va faire télécharger en RAM depuis les serveurs Apple de récupératoin un OS de secours indépendant des disques du Mac > puis démarrer le Mac dessus à la fin. Dans cette session de secours spécifique => on pourra désactiver la GPT du HDD pour recréer un descripteur de partition EFI.

Tu n'auras qu'à refaire signe ici quand tu seras disponible pour cette opération.
 
Dernière édition par un modérateur:
Tu peux démarrer via ⌘⌥R (command option R) pour télécharger en RAM un OS de secours Big Sur (ou Catalina). Quand tu as l'écran aux 4 Utilitaires macOS de la session de secours => préviens ici.
 
Voici comment tu vas pouvoir fournir ici les informations de base (tuto) -->

- va à la barre de menus supérieure de l'écran > menu : Utilitaires > sous-menu : Terminal.​

Passe la commande  :
Bloc de code:
diskutil list internal
  • qui affiche la configuration des disques internes seule

Voici comment tu vas pouvoir poster ici ce tableau sans avoir besoin de prendre de photo -->

  • tu sélectionnes le tableau > ⌘C pour le copier dans le presse-papier > ⌘Q pour quitter le «Terminal» > option  : "Obtenir de l'aide en ligne" (dans la fenêtre des 4 Utilitaires) > ce qui lance un navigateur «Safari»
  • page Apple par défaut > un clic sur l'adresse de haut de page pour l'éditer > saisis  : macgénération (tout court  : c'est une barre de recherche Google) et valide > tu atteins le site MacGé > Forums > te connectes > ce fil > tu colles dans un bloc de code

=> ces informations donneront les index d'appareils actuels des disques.

Note 1 : si tu ne peux pas poster via le Safari de la session de secours (ça arrive) --> poste une photo du tableau (à partir du commencement = le disque /dev/disk0 ou disque physique interne) - tu as un bouton : "Joindre un fichier" en bas de cette page.

Note 2 : dans la session de secours > les applications se lancent en mode "alternatif" et pas parallèle. Il faut quitter le Terminal pour lancer Safari. Vice-versa > quitter Safari pour récupérer l'écran général de la session de secours et pouvoir relancer le Terminal. Aucun redémarrage n'est requis.
 
OK compris je reboote, il y a eu une panne de courant :banghead: :banghead: :banghead: Quand Murphy et sa loi à la C.. s'en mêle ...

Bloc de code:
-bash-3.2# diskutil list internal

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:          Apple_CoreStorage Macintosh HD            999.2 GB   disk0s1
   2:                 Apple_Boot Recovery HD             650.0 MB   disk0s2

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:          Apple_CoreStorage Macintosh HD            120.9 GB   disk1s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk1s3

/dev/disk3 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +1.1 TB     disk3
                                 Logical Volume on disk1s2, disk0s1
                                 C748FE3C-70EA-440A-BFCC-BD8398940BCA
                                 Unencrypted Fusion Drive
-bash-3.2#

Voilà, j'ai bien utilisé Bloc de code pourtant mais ça donne ça
 
Le HDD (concerné) est disk0. Passe la commande :
Bloc de code:
diskutil umount force disk3 ; diskutil umountDisk force disk0
  • passe-la en copier-coller à rebours : tu la copies ici avec Safari > tu la colles dans le terminal > tu l'exécutes
  • la commande démonte le volume Macintosh HD du Fusion Drive > puis démonte le HDD (de sa prise en charge du kernel de l'OS de secours démarré). Afin de désactiver la GPT du HDD.

Poste le retour.
 
Bloc de code:
-bash-3.2# diskutil umount force disk3 ; diskutil umountDisk force disk0
Volume Macintosh HD on disk3 force-unmounted
Forced unmount of all volumes on disk0 was successful
-bash-3.2#
 
Parfait. Passe la commande (copier-coller à rebours) :
Bloc de code:
gpt add -b 40 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0 ; diskutil list disk0
  • la commande crée dans la GPT du HDD un descripteur de partition telle que : bloc de tête = n°40 > extension = 409600 blocs (de 512 octets = 209,7 Mo) > type = "EFI" (via l'UUID = C12A7328-F81F-11D2-BA4B-00A0C93EC93B désignant universellement ce type) > puis affiche la configuration visible du HDD

Poste le retour.
 
Bloc de code:
-bash-3.2# gpt add -b 40 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0 ; diskutil list disk0
disk0s3 added
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:          Apple_CoreStorage Macintosh HD            999.2 GB   disk0s1
   2:                 Apple_Boot Recovery HD             650.0 MB   disk0s2
   3:                        EFI                         209.7 MB   disk0s3
-bash-3.2#
 
Partition EFI bien créée avec le bon type et la bonne taille. Évidemment > présentée ainsi elle a sale gueule ne paie pas de mine. On va à présent lui arranger le portrait par petites touches.

- passe la commande :​
Bloc de code:
diskutil repairDisk disk0 ; diskutil list disk0
  • à validation > une demande de confirmation s'affiche. Tape y (yes) et revalide
  • la commande lance une réparation logique totale du HDD > dont celle de la GPT => ce qui va redonner à la nouvelle partition EFI le rang1 conforme à sa localisation sur le blocs - puis réaffiche la configuration visible du HDD

Poste le retour.
 
Bloc de code:
-bash-3.2# diskutil repairDisk disk0 ; diskutil list disk0
Repairing the partition map might erase disk0s1, proceed? (y/N) y
Started partition map repair on disk0
Checking prerequisites
Checking the partition list
Adjusting partition map to fit whole disk as required
Checking for an EFI system partition
Problems were encountered during repair of the partition map
Error: -69790: Couldn't find the target disk for this operation
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI                         209.7 MB   disk0s3
   2:          Apple_CoreStorage Macintosh HD            999.2 GB   disk0s1
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s2
-bash-3.2#
 
Hé ! hé ! - ça prend forme -->
Bloc de code:
   1:                        EFI                         209.7 MB   disk0s3
  • partition EFI au 1er rang dans la table GPT. Qu'elle ait gardé l'index d'appareil disk0s3 n'a aucune importance ici : c'est un ordre d'indexation enregistré momentanément dans le kernel > qui sera rectifé après redémarrage.

Passe maintenant la commande :
Bloc de code:
newfs_msdos -F 32 -v EFI /dev/disk0s3 ; diskutil mount disk0s3 ; diskutil list disk0
  • la commande appelle le formateur de système de fichiers newfs_msdos => à injecter un système de fichiers FAT-32 (requis pour ce type de partition) > formateur d'un volume intitutlé EFI > commande un montage du volume pour forcer le kernel à prendre en charge le système de fichiers FAT-32 > affiche la configuration visible du HDD

Poste le retour.
 
Bloc de code:
-bash-3.2# newfs_msdos -F 32 -v EFI /dev/disk0s3 ; diskutil mount disk0s3 ; diskutil list disk0
newfs_msdos: warning: /dev/disk0s3 is not a character device
4096 bytes per physical sector
/dev/disk0s3: 403264 sectors in 403264 FAT32 clusters (512 bytes/cluster)
bps=512 spc=1 res=32 nft=2 mid=0xf8 spt=32 hds=32 hid=40 drv=0x80 bsec=409600 bspf=3152 rdcl=2 infs=1 bkbs=6
Volume EFI on disk0s3 mounted
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s3
   2:          Apple_CoreStorage Macintosh HD            999.2 GB   disk0s1
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s2
-bash-3.2#
 
Voici la partition à présent -->
Bloc de code:
   1:                        EFI EFI                     209.7 MB   disk0s3
  • rang = n°1 > type = EFI > volume : EFI > taille = 209,7 Mo

Dernièr peaufinage. Passe la commande (avec confirmation) :
Bloc de code:
diskutil umount force disk0s3 ; diskutil repairDisk disk0
  • la commande redémonte le volume EFI > puis relance une réparation totale du HDD => qui va notamment restaurer la partition EFI (en ce qui concerne les dossiers d'accueil attendus dans le volume EFI)

Poste le retour.
 
Bloc de code:
-bash-3.2# diskutil umount force disk0s3 ; diskutil repairDisk disk0
Volume EFI on disk0s3 force-unmounted
Repairing the partition map might erase disk0s1, proceed? (y/N) y
Started partition map repair on disk0
Checking prerequisites
Checking the partition list
Adjusting partition map to fit whole disk as required
Checking for an EFI system partition
Problems were encountered during repair of the partition map
Error: -69790: Couldn't find the target disk for this operation
-bash-3.2#
 
C'est parce que la partition EFI a actuellement l'index d'appareil disk0s3 au lieu du disk0s1 attendu => qu'elle a échappé à la réparation.

- redémarre normalement sur ton Macintosh HD. Ta session d'utilisateur réouverte > repasse un :​
Bloc de code:
diskutil list
  • et poste le tableau des disques. La partition EFI du HDD aura le bon index d'appareil et on relancera une réparation du disque alors.