Triple démarrage macOS High Sierra, Ubuntu et Windows sans rEFInd

9

Actuellement, trois systèmes d'exploitation sont installés sur mon MacBook Air 2017: macOS, Ubuntu et Windows 10. Je ne pouvais pas démarrer Ubuntu sans rEFInd, mais je préfère fortement le gestionnaire de démarrage par défaut, car je souhaite utiliser le mot de passe du firmware (qui n'a pas).

Existe-t-il un moyen pour le gestionnaire de démarrage macOS de reconnaître Ubuntu sans utiliser de gestionnaire de démarrage tiers?

REMARQUES:

  • Je ne veux pas que Ubuntu soit défini comme système d’exploitation par défaut. Je veux juste qu'il apparaisse dans le menu de démarrage.
  • Cela ne me dérange pas si cela va simplement dans GRUB. Tant que le noyau peut être chargé, cela va.

La sortie de la commande diskutil list.

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         242.6 GB   disk0s2
   3:           Linux Filesystem                         49.9 GB    disk0s4
   4:       Microsoft Basic Data WinData                 75.1 GB    disk0s5
   5:       Microsoft Basic Data Windows                 125.1 GB   disk0s6

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +242.6 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            74.0 GB    disk1s1
   2:                APFS Volume Preboot                 25.1 MB    disk1s2
   3:                APFS Volume Recovery                506.6 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4
kouwei32
la source
Quelle est l'année de votre MacBook Air? Ce que je veux vraiment savoir, c'est comment Windows, Ubuntu et rEFInd sont installés. Est-ce que le BIOS démarre? Où avez-vous installé rEFInd? En outre, il serait utile que vous incluiez le résultat de la diskutil listcommande. Votre question a déjà été posée. Il y a plusieurs solutions simples.
David Anderson
Il existe en effet plusieurs solutions, mais aucune d’entre elles ne fonctionne pour moi. L’année du MacBook Air est 2017. J'ai d'abord installé Windows avec bootcamp, rétréci le volume macOS pour créer un autre volume de données pour Windows, installé Ubuntu en rétrécissant à nouveau la partition macOS (ce qui a cassé des choses et j'ai dû réinstaller macOS et réinitialiser Windows partition de données). J'ai ensuite installé rEFInd sur le site officiel. diskutil listSortie: Pastebin
kouwei32
1
Vous auriez probablement dû lire ceci en premier: Installation d’Ubuntu sur Mac avec MacOS et Windows déjà installés . Je poste actuellement une réponse à votre question. Ma réponse est basée quelque peu sur le lien ci-dessus.
David Anderson
Redémarrez votre Mac et exécutez la commande diskutil list. Remplacez la sortie de votre réponse par cette nouvelle sortie. Je demande cela parce qu'il disk0s3manque dans votre sortie actuellement affichée.
David Anderson

Réponses:

4

Deuxième réponse alternative

Cette deuxième réponse diffère de la première réponse des manières suivantes.

  • La deuxième partition EFI est remplacée par une partition HFS +.

  • L'étiquette affichée dans le gestionnaire de démarrage sera "Ubuntu" au lieu du "démarrage EFI générique".

Je vais assumer ce qui suit:

  • Vous avez installé Ubuntu pour utiliser la méthode de démarrage EFI.
  • Vous utilisez grub pour démarrer Ubuntu
  • Grub démarre à partir de la partition EFI.
  • Il n'y a qu'une seule partition EFI.
  • La partition EFI est la première partition du disque.
  • Un seul disque est impliqué et le disque est interne.
  • rEFInd est installé dans la partition EFI.

Je vais vous proposer deux façons de résoudre votre problème. Chacun a ses avantages et ses inconvénients.

Le gestionnaire de démarrage Mac affichera un système d'exploitation si vous placez le fichier .efi au bon emplacement. Cet emplacement est le System/Library/CoreServicesdossier du volume dans une partition HFS +. Le nom du fichier doit être boot.efi. De plus, vous pouvez personnaliser l'icône affichée pour le système d'exploitation en plaçant un .VolumeIcon.icnsfichier dans le dossier racine du volume dans la partition HFS +.

La première façon.

Remarque: Ici, rEFInd est toujours utilisé, mais ne remplace pas le gestionnaire de démarrage. Vous pourrez utiliser un mot de passe du firmware. En fait, aucun menu de réinitialisation n'est affiché. Le gestionnaire de démarrage rEFInd ne démarre que silencieusement grub (qui démarre Ubuntu).

  1. Téléchargez rEFInd de ce site Web SourceForge . Je suppose que le fichier téléchargé est nommé refind-bin-0.11.2.zipet que ce fichier a été téléchargé dans votre ~/Downloadsdossier.
  2. Créez une nouvelle partition HFS +. Les instructions sont données dans la section "Ajouter une partition HFS +".
  3. Montez la nouvelle partition HFS + en entrant la commande suivante.

    sudo  diskutil  mount  disk0s3
    

    La nouvelle partition HFS + aura le nom du volume Ubuntu.

  4. Installez rEFInd dans le volume de la nouvelle partition HFS +.

    cd  ~/Downloads/refind-bin-0.11.2
    ./refind-install  --ownhfs  /dev/disk0s3
    

    Remarque: le message d'erreur Could not set boot device property: 0xe00002bcétait attendu et peut être ignoré.

  5. Configurez l'application TextEdit. Ouvrez TextEdit, puis accédez à la fenêtre "Préférences ...". Décochez toutes les "Options", comme indiqué ci-dessous. Lorsque vous avez terminé, quittez TextEdit.

    y1

  6. Utilisez la commande ci-dessous pour accéder au dossier contenant le refind.conffichier.

    cd  /Volumes/Ubuntu/System/Library/CoreServices
    

    Faites une copie de sauvegarde de ce fichier.

    sudo  cp  refind.conf  refind.conf.orignal
    

    Ajoutez des autorisations d'écriture au CoreServicesdossier et au refind.conffichier.

    sudo  chmod  a+w  .  refind.conf
    

    Ouvrez le fichier dans l'application TextEdit.

    open  -e  refind.conf
    
  7. Dans ce volume, éditez le System/Library/CoreServices/refind.conffichier pour démarrer silencieusement grub (ce qui permettra de démarrer Ubuntu en interne). Cela peut être accompli en ajoutant les lignes suivantes à la fin du refind.conffichier. Vous devriez pouvoir couper et coller ces lignes. Lorsque vous avez terminé, enregistrez les modifications, puis quittez TextEdit.

    #
    # Added to make rEFInd silent. 
    #
    menuentry "Ubuntu" {
        icon \System\Library\CoreServices\icons\os_ubuntu.png
        volume "EFI"
        loader \EFI\ubuntu\grubx64.efi
        ostype Linux
        graphics on
    }
    timeout -1
    hideui all
    scanfor manual
    
  8. Démontez le nouveau volume nommé Ubuntuen entrant les commandes suivantes.

    cd  ~
    diskutil  unmount  disk0s3
    

Avantages: Ubuntu n'est pas affecté, donc aucune mise à jour d'Ubuntu ne nécessitera d'attention.

Inconvénients: vous devez utiliser le gestionnaire de démarrage tiers rEFInd.

La deuxième façon.

  1. Créez une nouvelle partition HFS +. Les instructions sont données dans la section "Ajouter une partition HFS +".
  2. Montez la partition EFI d'origine et la nouvelle partition HFS + en entrant les commandes suivantes.

    sudo  diskutil  mount  disk0s1
    sudo  diskutil  mount  disk0s3
    

    Le nom de la partition EFI d'origine EFIet celui de la nouvelle partition HFS + Ubuntu.

  3. Dans le nouveau volume nommé Ubuntu, créez les dossiers EFI/ubuntuet System/Library/CoreServices, en entrant les commandes suivantes.

    mkdir  -p  /Volumes/Ubuntu/EFI/ubuntu
    mkdir  -p  /Volumes/Ubuntu/System/Library/CoreServices
    
  4. Copiez les fichiers grub.cfget grubx64.efidans le nouveau volume nommé Ubuntu. Les commandes nécessaires sont données ci-dessous.

    cp  /Volumes/EFI/EFI/ubuntu/grub.cfg  /Volumes/Ubuntu/EFI/ubuntu/grub.cfg
    cp  /Volumes/EFI/EFI/ubuntu/grubx64.efi  /Volumes/Ubuntu/System/Library/CoreServices/boot.efi
    
  5. Démontez la partition EFI d'origine et la nouvelle partition HFS + en entrant les commandes suivantes.

    diskutil  unmount  disk0s1
    diskutil  unmount  disk0s3
    

Avantages: vous n'avez pas besoin d'utiliser le gestionnaire de démarrage tiers rEFInd.

Inconvénients: Si le grubx64.efiou grub.cfgest mis à jour, vous devez copier manuellement ces fichiers sur le nouveau volume nommé Ubuntu.

Ajout d'une icône personnalisée

Les étapes ci-dessous ajouteront l'icône Ubuntu suivante au menu de démarrage.

os_ubuntu.png

  1. Téléchargez une collection d’icônes à partir du site Web sourceforge Mac icns .
  2. Utilisez l'application Finder pour ouvrir le fichier téléchargé mac-icns.dmg. Je suppose que ce fichier a été téléchargé dans votre ~/Downloadsdossier.
  3. Montez le volume nommé Ubuntuen entrant la commande suivante.

    sudo  diskutil  mount  disk0s3
    
  4. Utilisez l'application Finder pour copier le os_ubuntu.icnsfichier d'icône dans le dossier racine du volume nommé Ubuntu. Vous pouvez également utiliser la commande ci-dessous.

    sudo cp  /Volumes/mac-icns/os_ubuntu.icns  /Volumes/Ubuntu/.
    
  5. Renommez le os_ubuntu.icnsfichier d'icône en .VolumeIcon.icns. Cela peut être accompli en entrant la commande suivante.

    sudo mv  /Volumes/Ubuntu/os_ubuntu.icns  /Volumes/Ubuntu/.VolumeIcon.icns
    

    Remarque: Les fichiers commençant par un point ( .) n'apparaissent pas dans la fenêtre de l'application Finder.

  6. Utilisez l'application Finder pour éjecter la partition EFI System avec le nom du volume Ubuntu. Vous pouvez également utiliser la commande ci-dessous pour démonter le volume.

    diskutil  unmount  disk0s3
    
  7. Utilisez l'application Finder pour éjecter le volume nommé mac-icns.

Ajouter une partition HFS +

Remarque: ci-dessous est basé sur la sortie de diskutil listcelle que vous avez fournie dans votre question.

  1. Entrez la commande ci-dessous dans une fenêtre de l'application Terminal. Le créera un volume "Mac OS étendu" nommé "Ubuntu" dans une nouvelle partition.

    sudo  diskutil  apfs  resizeContainer  disk0s2  242300M  HFS+  Ubuntu  200M
    
  2. Obtenez le UUID du volume nommé "Ubuntu" en entrant la commande ci-dessous.

     diskutil info Ubuntu | grep "Volume UUID"
    

    La sortie doit être similaire à celle présentée ci-dessous.

       Volume UUID:              795F14D2-ED1F-3CA0-A004-BD0A27000DC8
    
  3. Ensuite, empêchez le montage automatique de ce nouveau nom de volume "Ubuntu" en entrant les commandes suivantes. Remplacez votre UUID par celui indiqué ci-dessous.

    sudo  bash
    echo  >> /etc/fstab
    echo  UUID=795F14D2-ED1F-3CA0-A004-BD0A27000DC8 none hfs rw,noauto >> /etc/fstab
    exit
    

    Remarque: La bonne façon de modifier le /etc/fstabfichier consiste à utiliser la commande sudo vifs. L'utilisation de la echocommande n'est qu'un raccourci rapide.

  4. Utilisez l'application Finder pour éjecter ce nouveau volume. Vous pouvez également entrer la commande ci-dessous pour démonter ce volume.

    diskutil  unmount  Ubuntu
    

Si vous avez besoin de moi pour développer l'une des étapes ci-dessus, faites le moi savoir.

David Anderson
la source
1
Celui-ci fonctionne pour moi parfaitement! Merci! De plus, ce n’est pas vraiment bien d’utiliser TextEdit pour l’édition de la configuration, car cela marque le fichier de configuration comme étant verrouillé. J'avais l'habitude sudo nano /Volumes/Ubuntu/System/Library/CoreServices/refind.confde contourner ce problème.
Kouwei32
kouwei32: C'est bien quand quelqu'un peut vérifier mes pas. J'ai ajouté une commande pour modifier les autorisations afin que l'application TextEdit puisse être utilisée. Et oui, nanoc'est un bon substitut.
David Anderson
@ DavidAnderson Merci beaucoup! C'était essentiel pour que les trois systèmes d'exploitation démarrent correctement. Sans la 2e partition EFS, il était uniquement possible de démarrer sous [macOS ou Ubuntu] OU [Ubuntu ou Windows, via GRUB], en fonction du paramétrage du MBR hybride et du choix de masquer ou non la partition principale APFS. Savez-vous pourquoi c'est le cas? Même avec rEFInd, il n’y avait pas une seule instance où les 3 systèmes d’exploitation étaient amorçables ... jusqu’à ce que j’ai ajouté la deuxième partition EFS et suivi les étapes de First Way.
igordcard
@igordcard: J'ai apporté quelques corrections après avoir lu votre commentaire. Note: Depuis que j'ai posté cette réponse, Ubuntu ne démarre plus de la même manière. Par conséquent, ma réponse risque de ne pas fonctionner si vous utilisez Ubuntu 18. Les Mac construits en 2017 ne contiennent plus de BIOS et ne nécessitent donc pas de MBR hybride. En fait, un MBR hybride empêcherait Windows de démarrer. Je ne suis pas sûr de ce que vous entendez par "cacher la partition principale APFS".
David Anderson
@igordcard: les Mac Intel sont conçus pour démarrer OS X, Mac OS ou Windows. Toutefois, le microprogramme permet également de démarrer un système d'exploitation si les fichiers de démarrage du système d'exploitation sont installés à l'aide des spécifications de la section 3.5.1.1 Removable Media Boot Behaviorà la page 91 de la spécification UEFI (Unified Extensible Firmware Interface) . Pour les Mac Intel, le support doit nécessairement être amovible.
David Anderson
1

Réponse originale

Ma deuxième réponse diffère de cette réponse des manières suivantes.

  • Dans la deuxième réponse, la deuxième partition EFI est remplacée par une partition HFS +. Ce type de partition est plus facile à créer et à modifier.
  • Dans la deuxième réponse, l'étiquette affichée dans le gestionnaire de démarrage sera "Ubuntu" au lieu du "démarrage EFI générique".

Je vais assumer ce qui suit:

  • Vous avez installé Ubuntu pour utiliser la méthode de démarrage EFI.
  • Vous utilisez grub pour démarrer Ubuntu
  • Grub démarre à partir de la partition EFI.
  • Il n'y a qu'une seule partition EFI.
  • La partition EFI est la première partition du disque.
  • Un seul disque est impliqué et le disque est interne.
  • rEFInd est installé dans la partition EFI.

Je vais donner deux façons de résoudre votre problème. Chacun a ses avantages et ses inconvénients.

Le gestionnaire de démarrage Mac affichera un système d'exploitation si vous placez le fichier .efi au bon emplacement. Cet emplacement est le EFI/bootdossier du volume dans une partition EFI. Le nom du fichier doit être bootx64.efi. De plus, vous pouvez personnaliser l'icône affichée pour le système d'exploitation en plaçant un .VolumeIcon.icnsfichier dans le dossier racine du volume dans la partition EFI.

La première façon.

Remarque: Ici, rEFInd est toujours utilisé, mais ne remplace pas le gestionnaire de démarrage. Vous pourrez utiliser un mot de passe du firmware. En fait, aucun menu de réinitialisation n'est affiché. Le gestionnaire de démarrage rEFInd ne démarre que silencieusement grub (qui démarre Ubuntu).

  1. Téléchargez rEFInd de ce site Web SourceForge . Je suppose que le fichier téléchargé est nommé refund-bin-0.11.2.zipet que ce fichier a été téléchargé dans votre ~/Downloadsdossier.
  2. Créez une nouvelle partition EFI. Les instructions sont données dans la section "Ajouter une partition EFI".
  3. Téléchargez le logiciel rEFInd Boot Manager à partir de ce site Web SourceForge .
  4. Installez rEFInd dans le volume de la nouvelle partition EFI.

    cd  ~/Downloads/refind-bin-0.11.2
    ./refind-install  --usedefault  /dev/disk0s3
    
  5. Démontez et montez la nouvelle partition EFI en entrant les commandes suivantes.

    diskutil  unmount  disk0s3
    sudo  diskutil  mount  disk0s3
    

    La nouvelle partition EFI aura le nom du volume EFI2.

  6. Configurez l'application TextEdit. Ouvrez TextEdit, puis accédez à la fenêtre "Préférences ...". Décochez toutes les "Options", comme indiqué ci-dessous. Lorsque vous avez terminé, quittez TextEdit.

    y1

  7. Utilisez la commande ci-dessous pour accéder au dossier contenant le refind.conffichier.

    cd  /Volumes/EFI2/EFI/BOOT
    

    Faites une copie de sauvegarde de ce fichier.

    cp  refind.conf  refind.conf.orignal
    

    Ouvrez le fichier dans l'application TextEdit.

    open  -e  refind.conf
    
  8. Dans ce volume, éditez le EFI/BOOT/refind.conffichier pour démarrer silencieusement grub (ce qui permettra de démarrer Ubuntu en interne). Cela peut être accompli en ajoutant les lignes suivantes à la fin du refind.conffichier. Vous devriez pouvoir couper et coller ces lignes. Lorsque vous avez terminé, enregistrez les modifications, puis quittez TextEdit.

    #
    # Added to make rEFInd silent. 
    #
    menuentry "Ubuntu" {
        icon \EFI\BOOT\icons\os_ubuntu.png
        volume "EFI"
        loader \EFI\ubuntu\grubx64.efi
        ostype Linux
        graphics on
    }
    timeout -1
    hideui all
    scanfor manual
    
  9. Démontez le nouveau volume nommé EFI2.

    diskutil  unmount  disk0s3
    

Avantages: Ubuntu n'est pas affecté, donc aucune mise à jour d'Ubuntu ne nécessitera d'attention.

Inconvénients: vous devez utiliser le gestionnaire de démarrage tiers rEFInd.

La deuxième façon.

  1. Créez une nouvelle partition EFI. Les instructions sont données dans la section "Ajouter une partition EFI".
  2. Montez les partitions EFI d'origine et nouvelles en entrant les commandes suivantes.

    sudo  diskutil  mount  disk0s1
    sudo  diskutil  mount  disk0s3
    

    Le nom de la partition EFI d'origine EFIet celui de la nouvelle partition EFI EFI2.

  3. Dans le nouveau volume nommé EFI2, créez les dossiers EFI/ubuntuet EFI/boot, en entrant les commandes suivantes.

    mkdir  -p  /Volumes/EFI2/EFI/ubuntu
    mkdir  -p  /Volumes/EFI2/EFI/boot
    
  4. Copiez les fichiers grub.cfget grubx64.efidans le nouveau volume nommé EFI2. Les commandes nécessaires sont données ci-dessous.

    cp  /Volumes/EFI/EFI/ubuntu/grub.cfg  /Volumes/EFI2/EFI/ubuntu/grub.cfg
    cp  /Volumes/EFI/EFI/ubuntu/grubx64.efi  /Volumes/EFI2/EFI/boot/bootx64.efi
    

Avantages: vous n'avez pas besoin d'utiliser le gestionnaire de démarrage tiers rEFInd.

Inconvénients: Si le grubx64.efiou grub.cfgest mis à jour, vous devez copier manuellement ces fichiers sur le nouveau volume nommé EFI2.

Ajout d'une icône personnalisée

Les étapes ci-dessous ajouteront l'icône Ubuntu suivante au menu de démarrage.

os_ubuntu.png

  1. Téléchargez une collection d’icônes à partir du site Web sourceforge Mac icns .
  2. Utilisez l'application Finder pour ouvrir le fichier téléchargé mac-icns.dmg. Je suppose que ce fichier a été téléchargé dans votre ~/Downloadsdossier.
  3. Montez le volume nommé EFI2en entrant la commande suivante.

    sudo  diskutil  mount  disk0s3
    
  4. Utilisez l'application Finder pour copier le os_ubuntu.icnsfichier d'icône dans le dossier racine du volume nommé EFI2. Vous pouvez également utiliser la commande ci-dessous.

    cp  /Volumes/mac-icns/os_ubuntu.icns  /Volumes/EFI2/.
    
  5. Renommez le os_ubuntu.icnsfichier d'icône en .VolumeIcon.icns. Cela peut être accompli en entrant la commande suivante.

    mv  /Volumes/EFI2/os_ubuntu.icns  /Volumes/EFI2/.VolumeIcon.icns
    

    Remarque: Les fichiers commençant par un point ( .) n'apparaissent pas dans la fenêtre de l'application Finder.

  6. Utilisez l'application Finder pour éjecter la partition EFI System avec le nom du volume EFI2. Vous pouvez également utiliser la commande ci-dessous pour démonter le volume.

    diskutil  unmount  disk0s3
    
  7. Utilisez l'application Finder pour éjecter le volume nommé mac-icns.

Ajout d'une partition EFI

Remarque: ci-dessous est basé sur la sortie de diskutil listcelle que vous avez fournie dans votre question.

Lors du démarrage sur macOS, entrez les commandes ci-dessous dans une fenêtre de l’application Terminal.

sudo  diskutil  apfs  resizecontainer  disk0s2  242300M  %EFI%  n  200M
sudo  newfs_msdos  -F  32  -v  EFI2  /dev/disk0s3

Si vous avez besoin de moi pour développer l'une des étapes ci-dessus, faites le moi savoir.

David Anderson
la source
Malheureusement, la première solution n'est pas celle que je souhaitais et la deuxième ne fonctionne pas du tout.
kouwei32
La deuxième solution est basée sur des solutions éprouvées que j'avais précédemment publiées. De nombreux autres utilisateurs ont utilisé cette solution avec succès. Voir ici et ici .
David Anderson
1
Peut-être que je n'ai pas donné assez de détails. Par exemple, dans votre cas, vous devrez créer une nouvelle partition EFI. Cela ne peut pas être une partition formatée FAT32 normale. Ce doit être une partition EFI où se trouve le GUID du GPT C12A7328-F81F-11D2-BA4B-00A0C93EC93B.
David Anderson
J'ai déjà une partition EFI. Essayé 3 fois et en vain.
kouwei32
Vous pouvez avoir autant de partitions EFI que vous avez besoin. Dans votre cas, Windows utilise déjà le dossier EFI / boot de votre partition EFI. C'est pourquoi vous avez besoin d'une seconde partition EFI.
David Anderson