Cosa fa l'opzione --hint nel comando di ricerca di grub2?


10

Sto guardando i documenti ufficiali di GRUB2 per il searchcomando, come si trova su 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.

Nella sezione 5.3 ci sono molti esempi insieme

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

Sembra che l' --hintopzione non sia documentata se non come esempio. Che cosa fa esattamente? Qual è il formato esatto dell'argomento?

Risposte:


6

--hintè usato per selezionare quale partizione selezionare quando ci sono più partizioni abbinate. Per impostazione predefinita, viene selezionato il primo corrispondente.

Supponiamo che ci siano 2 dispositivi di archiviazione con avvio etichetta come segue

hd0,msdos1
hd1,msdos7

quindi il comando:

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

selezionerà hd1, msdos7 invece di hd0, msdos1


6
Qualche idea sul perché esistano opzioni separate --hint-efi, --hint-baremetal, ecc.?
Michael Scheper,

E se search --fs-uuidviene utilizzato, a che serve --hint?
Saad Malik,

@SaadMalik, UUID non deve essere unico. Gli UUID del filesystem funzionano allo stesso modo delle etichette ma l'UUID è generalmente generato durante la creazione di FS.
jiwopene,

1

Questo non è descritto nel Manuale di GRUB ma è presente documentazione in GRUB stesso ( search --helpsulla shell di 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

Ora, qual è il punto del "primo dispositivo di prova"?

Devi capire che searchè un'operazione potenzialmente lenta.

Forse hai 50 unità, ognuna con 100 partizioni, e ora searchdeve passare attraverso tutte queste ... fino a quando non trova finalmente l'UUID che stavi cercando nel 2356 ° tentativo.

O forse hai un dispositivo molto lento e il controllo del suo UUID provoca un blocco searchper un po '. C'è --no-floppyda evitare il caso più comune, immagino - ma anche altri dispositivi possono essere lenti.

Con --hint, si imposta un dispositivo per il controllo prima. Se il suggerimento è corretto, si salta del tutto l'operazione di ricerca potenzialmente lunga. Quindi questa è un'ottimizzazione della velocità. (Probabilmente non sarà evidente con una sola unità, tre partizioni)

L'effetto descritto nella risposta di @ totti di dare la preferenza a un dispositivo specifico quando ce ne sono due con lo stesso LABEL o UUID, dovrebbe semplicemente essere un effetto collaterale.

Certo, se controlli prima un dispositivo, non dovrebbe essere trovato un duplicato su un altro dispositivo. Anche così, avrebbe più senso non avere tali duplicati in primo luogo. Poiché UUID duplicati (o LABEL) possono essere considerati un errore di configurazione e, nel caso in cui risultasse --hinterrato, potrebbe comunque restituire il dispositivo sbagliato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.