Do czego służy opcja --hint w poleceniu wyszukiwania grub2?

10

Patrzę na oficjalne dokumenty GRUB2 dla searchpolecenia, które można znaleźć na stronie 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.

W sekcji 5.3 podano wiele przykładów

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

Wygląda na --hintto, że opcja jest nieudokumentowana inaczej niż jako przykład. Co to dokładnie robi? Jaki jest dokładny format argumentu?

Jens
źródło

Odpowiedzi:

6

--hintsłuży do wyboru, którą partycję wybrać, gdy istnieje wiele pasujących partycji. Domyślnie wybrany jest pierwszy dopasowany.

Załóżmy, że istnieją 2 urządzenia pamięci masowej z uruchamianiem etykiety w następujący sposób

hd0,msdos1
hd1,msdos7

następnie polecenie:

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

wybierze hd1, msdos7 zamiast hd0, msdos1

Totti
źródło
6
Masz pojęcie, dlaczego istnieją osobne opcje --hint-efi, --hint-baremetal itp.?
Michael Scheper,
A jeśli search --fs-uuidjest używany, jaki jest pożytek --hint?
Saad Malik
@ SaadMalik, UUID nie musi być unikalny. Identyfikatory UUID systemu plików działają w taki sam sposób jak etykiety, ale UUID jest zwykle generowany podczas tworzenia FS.
jiwopene
1

Nie jest to opisane w Podręczniku GRUB, ale w samej GRUB-ie ( search --helpw powłoce GRUB-a) znajduje się dokumentacja :

--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

Jaki jest sens „urządzenia z pierwszą próbą”?

Musisz zrozumieć, że searchjest to potencjalnie powolna operacja.

Może masz 50 dysków, każdy ze 100 partycjami, a teraz musisz searchprzejść przez wszystkie te ... aż w końcu znajdzie UUID, którego szukałeś w 2356 próbie.

A może masz bardzo wolne urządzenie, a sprawdzanie jego UUID powoduje, searchże utkniesz na chwilę. Jest --no-floppyuniknąć najczęściej sprawy, myślę - ale inne urządzenia mogą być również powolne.

Za pomocą --hintustaw urządzenie, aby sprawdzało najpierw. Pod warunkiem, że podpowiedź była poprawna, całkowicie pomijasz potencjalnie długotrwałą operację wyszukiwania. To jest optymalizacja prędkości. (Prawdopodobnie nie będzie zauważalny z jednym dyskiem, trzema partycjami)

Efekt opisany w odpowiedzi @ totti polegający na preferowaniu określonego urządzenia, gdy są dwa z tym samym ETYKIETĄ lub UUID, powinien to być jedynie efekt uboczny.

Oczywiście, jeśli najpierw sprawdzisz jedno urządzenie, nie powinieneś znaleźć duplikatu na innym urządzeniu. Mimo to rozsądniej byłoby nie mieć takich duplikatów. Ponieważ zduplikowane identyfikatory UUID (lub ETYKIETY) można uznać za błąd konfiguracji, a jeśli --hintokaże się, że są nieprawidłowe, nadal może zwrócić niewłaściwe urządzenie.

frostschutz
źródło