O que a opção --hint no comando de pesquisa do grub2 faz?

10

Eu estou olhando os documentos oficiais do GRUB2 para o searchcomando, conforme encontrado em 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.

Na seção 5.3, existem muitos exemplos ao longo

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

Parece que a --hintopção não está documentada, exceto como exemplo. O que isso faz exatamente? Qual é o formato exato do argumento?

Jens
fonte

Respostas:

6

--hinté usado para selecionar qual partição selecionar quando houver várias partições correspondentes. Por padrão, o 1º correspondente é selecionado.

Suponha que existam 2 dispositivos de armazenamento com inicialização de etiqueta da seguinte maneira

hd0,msdos1
hd1,msdos7

então o comando:

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

irá selecionar hd1, msdos7 em vez de hd0, msdos1

totti
fonte
6
Alguma idéia de por que existem opções separadas --hint-efi, --hint-baremetal etc.?
Michael Scheper
E se search --fs-uuidfor usado, para que serve --hint?
Saad Malik
@SaadMalik, o UUID não precisa ser exclusivo. Os UUIDs do sistema de arquivos funcionam da mesma maneira que os rótulos, mas o UUID geralmente é gerado na criação do FS.
jiwopene 23/02
1

Isso não está descrito no Manual do GRUB, mas há documentação a ser encontrada no próprio GRUB ( search --helpno shell do 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

Agora, qual é o objetivo do "dispositivo de primeira tentativa"?

Você precisa entender que searché uma operação potencialmente lenta.

Talvez você tenha 50 unidades, cada uma com 100 partições, e agora precise searchpassar por todas essas ... até finalmente encontrar o UUID que você estava procurando na 2356ª tentativa.

Ou talvez você tenha um dispositivo muito lento e a verificação de suas causas de UUID fica searchpresa por um tempo. Há --no-floppypara evitar o caso mais comum, eu acho - mas outros dispositivos também podem ser lentos.

Com --hint, você define um dispositivo para verificar primeiro. Desde que a dica esteja correta, você ignora completamente a operação de pesquisa potencialmente demorada. Portanto, esta é uma otimização de velocidade. (Provavelmente não será perceptível com apenas uma unidade, três partições)

O efeito descrito na resposta de @ totti de dar preferência a um dispositivo específico quando houver dois com o mesmo LABEL ou UUID, que deve ser apenas um efeito colateral.

Claro, se você verificar um dispositivo primeiro, uma duplicata em outro dispositivo não deverá ser encontrada. Mesmo assim, faria mais sentido não ter essas duplicatas em primeiro lugar. Como UUIDs duplicados (ou LABELs) podem ser considerados um erro de configuração e, no caso --hintde estar errado, ele ainda pode retornar o dispositivo errado.

frostschutz
fonte