Gérer les entrées de grub /Grub et mac

PS : Au cas où il arriverait que la machine démarre avec d’autres disques présents (internes ou externes), il serait plus prudent d’utiliser les UUID des partitions comme GRUB le fait dans ses entrées de menu auto-générées, par exemple :

    insmod part_gpt
    insmod hfsplus
    set root='hd0,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  6201e6e69aa6d78b
    else
      search --no-floppy --fs-uuid --set=root 6201e6e69aa6d78b
    fi

L’UUID est la chaîne de caractère à la fin des lignes search, qui doit correspondre à l’UUID de la partition affiché par blkid (pas le PARTUUID que GRUB ne semble pas savoir utiliser, ce qui est fort dommage à mon avis).

Autant en mode BIOS le disque de boot est toujours hd0, autant je ne peux garantir que c’est le cas en mode EFI, la notion même de disque de boot étant floue dans ce contexte.

Et bien justement, j’ai eu très peur lorsque j’ai fais la manipulation sur le macbook pro, car grub m’affichait une fin de non recevoir, il ne pouvait pas joindre la partition… tout simplement parce qu’effectivement, sur ce mac il ne s’agissait pas de hd0, qui n’existe pas, mais de hd1.

Ok, merci pour ton script, je vais le mettre en place avec mes UUID. Je vais essayer ça.

Ca fonctionne toujours, mais l’objectif visé est raté je crois. Grub m’annonce que l’uuid ne lui “parle” pas :

Error : No such device 0714e1c8-6a31-32ed-bfa3-371c784f3214

Cependant, le boot finit par se faire quand même, ça prend simplement 3 secondes de plus durant lesquels il y a cette phase d’erreur.

J’ai dû me tromper en intégrant le script, mais je ne vois pas comment. L’UUID est bien celui correspondant à la bonne partition, je l’ai intégré à la place des tiens pour chaque ligne search. Je ne peux pas avoir fait de faute de “recopiage”, il s’agit d’une copie, et c’est la première chose que j’ai vérifié ensuite. Voici le script au complet pour une entrée :

menuentry "Mac OS X - Lion - 10.7.5 - /dev/sda2" {
insmod part_gpt
insmod hfsplus
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 0714e1c8-6a31-32ed-bfa3-371c784f3214 
    else
      search --no-floppy --fs-uuid --set=root 0714e1c8-6a31-32ed-bfa3-371c784f3214
    fi
chainloader /System/Library/CoreServices/boot.efi
}

L’UUID présent dans l’entrée de menu générée automatiquement par update-grub avec os-prober avait une forme différente : 6201e6e69aa6d78b. C’est la première fois que je vois GRUB utiliser un UUID différent de celui rapporté par blkid. Ne connaissant rien au monde Mac et au système de fichiers HFS/HFS+, je n’ai pas la moindre idée de l’explication. Mais cela devrait mieux fonctionner avec ces UUID.

Oui, quand j’ai vu ton script, je me suis dit que tu avais des uuid bizarre, en tout cas différents de miens.

J’ai remplacé les uuid “réels” par ceux que grub génère via os-prober, et ça enlève la phase d’erreur : tout est à nouveau parfaitement fonctionnel.

Ce script permet donc à grub de chercher via l’uuid si sa recherche par dénomination hd0, hd1, ne fonctionne pas, c’est bien ça ?

En gros, oui. C’est au cas où le numéro du disque ou de la partition ne serait pas fiable.