web-dev-qa-db-fra.com

Pourquoi est-ce que bless ne fera pas rEFInd boot par défaut?

Je suis sous OS X. Dans le script _refind-install_, une commande bless est en cours d'exécution mais ne semble pas fonctionner:

_   Elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then
      bless --setBoot --folder "$InstallDir/$TargetDir" --file "$InstallDir/$TargetDir/$Refind"
      echo BLESS COMMAND: bless --setBoot --folder "$InstallDir/$TargetDir" --file "$InstallDir/$TargetDir/$Refind"
   fi
_

J'ai ajouté la ligne supplémentaire echo pour voir à quoi ressemble la commande, et voici le résultat:

_BLESS COMMAND: bless --setBoot --folder /Volumes/efi///EFI/refind --file /Volumes/efi///EFI/refind/refind_x64.efi
_

J'exécute le script d'installation comme ceci:

_Sudo ./refind-install --root /Volumes/efi
_

où/Volume/efi contient la racine d'une partition système EFI personnalisée sur disk0s6, et non le disque disk0s1 ESP par défaut de mon MacBook.

Avez-vous une idée de la raison pour laquelle cela ne fonctionne pas et comment faire démarrer par défaut rEFInd?

MODIFIER:

D'accord, je pense que je pourrais savoir ce qui ne va pas. J'ai donc pu le faire fonctionner en remplaçant l'option _--root_ par _refind-install_ par l'option _--usedefault_, comme ceci:

_Sudo ./refind-install --usedefault /dev/disk0s6
_

Ce qui se passe ensuite, c’est que le script ignore _/dev/disk0s6_ et continue et installe rEFInd sur _/dev/disk0s1_, le système d'exploitation principal OS X ESP (ce qui n'est pas ce que je souhaitais, mais cela travaux).

Le script se poursuit et exécute la commande other bless:

_   if [[ $InstallToEspOnMac == "1" ]] ; then
      bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind" --shortform
   Elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then
_

Après le redémarrage, cela fonctionne et rEFInd démarre par défaut. J'ai l'impression que cela fonctionne car rEFInd est installé sur la partition par défaut _/EFI/BOOT/bootx64.efi_ à l'intérieur de la partition OS X ESP.

Mais ce n'est pas ce que je veux. J'aimerais que refind soit installé sur _/dev/disk0s6_, dans _/EFI/refind/_ au lieu de _/EFI/BOOT_.

MODIFIER:

Notez également que lorsque vous utilisez l'option _--usedefault_, le script d'installation installe _refind_aa64.efi_ dans _/EFI/BOOT_ de l'OS X ESP (disk0s1), mais lors de l'utilisation de _--root_ option pour installer sur disk0s6, le script installe plutôt _refind_x86.efi_

De plus, je ne sais pas si l'option _--mount_ est peut-être utilisée dans une commande bénigne, mais pas dans l'autre, c'est ce qui a fait la différence.

MODIFIER:

J'ai pu copier/EFI/BOOT de disk0s1 vers disk0s6, puis exécuter la même commande _--mount_ bless que dans le script, et cela a fonctionné.

MODIFIER:

Bon, on se rapproche. J'ai modifié le script et changé

_   Elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then
      bless --setBoot --folder "$InstallDir/$TargetDir" --file "$InstallDir/$TargetDir/$Refind"
   fi
_

à

_   Elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then
      bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind"
   fi
_

et maintenant cela fonctionne comme je le veux: refind installé à _/EFI/refind_ sur la partition dont je spécifie le point de montage avec l’option _--root_. Bien que cela me donne le résultat que je recherchais, il existe maintenant un petit problème: il faut environ 30 secondes ou plus pour arriver à la fin de la récupération, ce qui est très lent pour une raison quelconque. Je vais réinitialiser NVRAM et réessayer ...

MODIFIER

Aha! Avant de réinitialiser NVRAM, j’essayais d’ajouter l’option _--shortform_ à la commande bless, ce qui corrigeait le problème de décalage lors de l’édition précédente!

Pourquoi la seconde commande est-elle en mode --folder? Cela semble mieux fonctionner en mode --mount.

Donc, pour l'instant, la solution consistait à modifier la seconde commande bless du script pour qu'elle soit identique à la première, de sorte qu'une partie du script ressemble à ceci:

_   if [[ $InstallToEspOnMac == "1" ]] ; then
      bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind" --shortform
   Elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then
      bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind" --shortform
   fi
_

et j'ai utilisé l'option _--root_ pour _refind-install_ pour spécifier le point de montage de la partition cible.

_mkdir /Volumes/efi
Sudo mount -t msdos /dev/disk0s6 /Volumes/efi
Sudo ./refind-install --root /Volumes/efi
_
1
trusktr

Tout d'abord, l'option --root n'est pas utilisée pour spécifier un ESP; il est utilisé pour spécifier le répertoire racine de votre installation normale (/). Il est destiné à être utilisé lors de l’installation de rEFInd à partir d’un système d’urgence Linux, bien que puisse être utilisé à partir d’un système OS X (mais ne serait probablement pas très utile dans ce cas, sauf peut-être en conjonction avec --notesp - mais je n’ai pas testé cela). Ainsi, vous essayez fondamentalement "d'aboyer le mauvais arbre" en essayant d'utiliser cette option.

Le script refind-install ne dispose pas d'options explicites pour installer rEFInd sur un ESP secondaire. Sous Linux, vous pouvez contrôler le ESP en montant celui de votre choix sur /boot ou /boot/efi; mais sous OS X, le ESP n'est pas monté normalement. Le script essaie donc de trouver l'ESP. Si vous avez plusieurs ESP, il n'est pas garanti d'utiliser celui que vous voulez. Dans un tel cas, vous devez à peu près recourir à l’installation manuelle, comme décrit ici:

http://www.rodsbooks.com/refind/installing.html#osx

Vous pouvez également utiliser --ownhfs pour installer rEFInd sur un volume HFS + dédié. Notez qu’avoir deux PSE ne sera probablement pas utile. Je sais que vous dites que vous voulez deux PSE, mais vous n'avez pas dit pourquoi vous le souhaitez, et en l'absence de raison, je vous suggère de l'oublier car il n'y a probablement aucun avantage. Le ESP signifie être partagé entre plusieurs systèmes d'exploitation. Un système d'exploitation risque de gâcher les fichiers d'un autre système d'exploitation sur l'ESP, mais le fait de conserver une sauvegarde devrait vous permettre de remédier à ces problèmes.

Autant que je sache, l'option --folder sur bless fonctionne lors de l'installation sur un volume HFS +, mais pas lors de l'installation sur un volume FAT. Certains détails de cette commande ne semblent toutefois pas bien documentés - ou du moins, je n'ai pas trouvé une bonne documentation. Lorsque j'ai écrit refind-install, le IIRC, j'ai pris des exemples de différents sites et j'ai expérimenté jusqu'à obtenir quelque chose qui fonctionnait, puis je l'ai peaufiné au fil du temps en utilisant les commentaires d'autres utilisateurs.

2
Rod Smith

Je me trompe peut-être, mais si vous voulez que refind apparaisse après le démarrage, je pense que vous devez choisir votre partition ESP pour la retrouver.

Essayez-vous d’installer à partir de Linux ou de Mac OS X?

0
Joe