Que fait l'option --hint dans la commande de recherche de grub2?

10

Je consulte les documents officiels GRUB2 pour la searchcommande, tels que trouvés sur http://www.gnu.org/software/grub/manual/grub.html#index-search

Command: search [--file|--label|--fs-uuid] [--set [var]] [--no-floppy] name

Search devices by file (-f, --file), filesystem label (-l, --label),
or filesystem UUID (-u, --fs-uuid).

If the --set option is used, the first device found is set as the
value of environment variable var. The default variable is ‘root’.

The --no-floppy option prevents searching floppy devices, which can be slow.

The ‘search.file’, ‘search.fs_label’, and ‘search.fs_uuid’ commands are aliases
for ‘search --file’, ‘search --label’, and ‘search --fs-uuid’ respectively.

La section 5.3 contient de nombreux exemples

menuentry "FreeBSD" {
      insmod zfs
      search --set=root --label freepool --hint hd0,msdos7
      ...
}

Il semble que l' --hintoption ne soit pas documentée autrement qu'à titre d'exemple. Que fait-il exactement? Quel est le format exact de l'argument?

Jens
la source

Réponses:

6

--hintest utilisé pour sélectionner la partition à sélectionner lorsqu'il existe plusieurs partitions correspondantes. Par défaut, le premier correspondant est sélectionné.

Supposons qu'il y ait 2 périphériques de stockage avec démarrage d' étiquette comme suit

hd0,msdos1
hd1,msdos7

puis la commande:

search --set=root --label freepool --hint hd1,msdos7

sélectionnera hd1, msdos7 au lieu de hd0, msdos1

totti
la source
6
Une idée de la raison pour laquelle il existe des options distinctes --hint-efi, --hint-baremetal, etc.?
Michael Scheper
Et si search --fs-uuidest utilisé, à quoi sert le --hint?
Saad Malik
@SaadMalik, UUID ne doit pas être unique. Les UUID du système de fichiers fonctionnent de la même manière que les étiquettes, mais l'UUID est généralement généré lors de la création de FS.
jiwopene
1

Ceci n'est pas décrit dans le manuel GRUB mais il y a de la documentation à trouver dans GRUB lui-même ( search --helpsur le shell GRUB):

--hint
    First try the device HINT.
    If HINT ends in comma, also try subpartitions

--hint-ieee1275
    First try the device HINT if currently running on IEEE1275.
    If HINT ends in comma, also try subpartitions

--hint-bios
    First try the device HINT if currently running on BIOS.
    If HINT ends in comma, also try subpartitions

--hint-baremetal
    First try the device HINT if direct hardware access is supported.
    If HINT ends in comma, also try subpartitions

--hint-efi
    First try the device HINT if currently running on EFI.
    If HINT ends in comma, also try subpartitions

--hint-arc
    First try the device HINT if currently running on ARC.
    If HINT ends in comma, also try subpartitions

Maintenant, quel est le point de "First try device"?

Vous devez comprendre que searchc'est une opération potentiellement lente.

Peut-être que vous avez 50 disques, chacun avec 100 partitions, et que vous devez maintenant searchpasser par tous ces éléments ... jusqu'à ce qu'il trouve enfin l'UUID que vous cherchiez lors de la 2356e tentative.

Ou peut-être que vous avez un appareil très lent et que la vérification de son UUID searchest bloquée pendant un certain temps. Il --no-floppyfaut éviter le cas le plus courant, je suppose - mais d'autres appareils peuvent également être lents.

Avec --hint, vous configurez un appareil pour vérifier d'abord. Pourvu que l'indice soit correct, vous ignorez complètement l'opération de recherche potentiellement longue. Il s'agit donc d'une optimisation de la vitesse. (Ne sera probablement pas perceptible avec un seul lecteur, trois partitions)

L'effet décrit dans la réponse de @ totti de donner la préférence à un appareil spécifique quand il y en a deux avec le même LABEL ou UUID, cela ne devrait être qu'un effet secondaire.

Bien sûr, si vous vérifiez d'abord un appareil, un doublon sur un autre appareil ne devrait pas être trouvé. Même ainsi, il serait plus logique de ne pas avoir de tels doublons en premier lieu. Comme les UUID en double (ou LABEL) peuvent être considérés comme une erreur de configuration, et au cas où cela --hintse révélerait incorrect, il pourrait toujours renvoyer le mauvais périphérique.

frostschutz
la source