web-dev-qa-db-fra.com

Restaurez Apple chargeur de démarrage sur un Mac (Intel) après l'exécution d'un update-grub par une installation externe d'Ubuntu

Ubuntu est installé sur un disque dur externe et je l’utilise comme une installation portable que je peux emporter partout.

Aujourd'hui, je l'ai démarré sur l'iMac d'un ami, et après que Software Updater m'a demandé d'installer les mises à jour. Donc j'ai fait.

À ce stade, j’en ai fini, j’arrête l’ordinateur et débranche le disque dur externe. Immédiatement après, j’ai redémarré l’iMac pour qu’il redémarre sous OSX.

À mon grand choc, l'horreur et la confusion, j'ai été rencontré avec un GRUB écran de secours!

Comment est-ce possible? Ubuntu est installé sur le disque dur externe, pas sur le disque dur interne! Comment diable GRUB s'est-il retrouvé sur le disque dur interne de l'iMac?

Plus important encore, comment puis-je résoudre ce problème?

8
Android Dev

(Faites défiler vers le bas pour le correctif réel)

Donc, les choses étaient encore plus compliquées qu'il n'y paraissait au début.

Afin de maintenir la compatibilité avec MS-Windows, Apple utilise un mode hybride UEFI et Legacy MBR. Apparemment, il existe une valeur NVRAM qui indique au micrologiciel s'il doit essayer de démarrer en mode UEFI (OS-X) ou en mode hérité MBR (Windows). Cette valeur est contrôlée par votre sélection dans "Préférences Système> Disque de démarrage". (Ne me demandez pas pourquoi, demandez à Apple)

Maintenant, afin de démarrer Ubuntu à partir de mon disque dur externe, j'ai d'abord démarré à partir d'un DVD sur lequel j'avais gravé une image ISO de rEFInd. (Sélection de "démarrage EFI" avec l’icône DVD lorsque vous tenez le Option clé au démarrage). Après avoir démarré à partir de ce DVD, j'ai ensuite sélectionné mon disque dur externe pour démarrer à partir de rEFInd.

C'est là que les choses commencent à devenir vraiment étranges. Après avoir demandé à rEFInd de démarrer à partir du disque dur externe, l’écran violet GRUB ne s’est jamais affiché (oui, j’avais défini un délai) et, en outre, il n’y avait pas d’animation de démarrage avec un point violet. Au lieu de cela, c'était le démarrage du texte blanc défilant.

D'après ce que je peux dire en regardant de plus près rEFInd avant de lancer le démarrage, l'option Ubuntu consistait en fait à charger un noyau spécifique, et pas seulement à partir du disque.

Cela signifie que rEFInd est, bien, EFI évidemment, et qu'il fonctionne essentiellement comme un remplacement de GRUB, que même si Ubuntu a été installé en mode MBR sur le disque dur externe, il a finalement été démarré en mode UEFI .

Ce fait est très important et vous comprendrez pourquoi en une seconde.

Alors j'ai laissé le programme de mise à jour du logiciel exécuter certaines mises à jour. En regardant les journaux, il semble que la commande update-grub a été exécutée pendant le processus d'installation. C'est là que toutes les mauvaises choses arrivent. Maintenant, à ce stade, je ne sais pas exactement ce qui s'est passé, mais voici ma meilleure hypothèse: le programme de mise à jour de grub s'est embrouillé depuis que grub a été installé en mode MBR, mais Ubuntu était actuellement démarré en mode UEFI. En raison de la confusion et du fait que le chargeur de démarrage est installé à un emplacement différent en fonction du mod que vous avez démarré, le programme de mise à jour grub commet une grave erreur et installe grub en mode MBR sur le disque dur interne.


Maintenant pour le correctif réel!

Dans mon cas particulier, la partition OS-X était toujours amorçable si je détenais le Option au démarrage et sélectionnez le "Macintosh HD".

Après avoir démarré OS-X, ouvrez les Préférences Système, puis accédez à la disquette de démarrage. Sélectionnez le volume OS-X, appuyez sur appliquer ou autre chose, redémarrez et BOOM! le logo Apple s'affiche!


Maintenant, juste pour votre information, je pense que bien que cela résolve le problème, GRUB réside toujours dans le secteur 0, mais je ne pense pas que cela puisse faire de mal là-bas, et certainement pas si vous installez Windows dans Boot. camp, puisque le chargeur de démarrage de Windows ne ferait que l'écraser alors

7
Android Dev