Come fermare update-grub dalla scansione di tutte le unità?


19

Ogni volta che update-grubviene eseguito, vengono scansionati tutti i dischi rigidi. Ciascuna unità che si trova in stato di standby ruoterà per diventare inattiva. Questo è uno spreco di energia. Usiamo update-grub versione 1.98:

# update-grub -v
grub-mkconfig (GRUB) 1.98+20100804-14+squeeze1

Regressione

  1. C'è GRUB_DISABLE_OS_PROBER=trueun'opzione nel /etc/default/grubfile. Ma sembra funzionare solo dalla versione 2 in poi. Almeno non smette di scansionare tutte le unità nella nostra versione 1.98.

  2. C'è uno /etc/grub.d/20_linux_xenscript che potrebbe essere eseguito come parte di update-grub. Dopo aver rimosso i diritti di esecuzione per tutti gli utenti con chmod a-x /etc/grub.d/20_linux_xentutte le unità continuano a girare.

Come interrompere la update-grubscansione di ogni singolo disco rigido?


È solo uno script di shell ... Modificarlo? Dovrebbe funzionare solo dopo gli aggiornamenti del kernel, cosa che non si verifica molto spesso.
Giordania,

Viene eseguita una delle righe di script /usr/sbin/grub-probe --target=device /. Questo comando fa anche girare tutte le unità. Non /usr/sbin/grub-probeè uno script di shell.
Pro Backup

Quanto spesso corri update-grub? Questo dovrebbe succedere solo quando installi un nuovo kernel, quindi a chi importa?
psusi,

So che l'intero picojoule che utilizza è un tale spreco: se avessi eseguito update-grub 24/7 per un mese su 1000 computer con 3 HDD ciascuno, potresti aggiungere un centesimo o due alla tua bolletta elettrica.
tkbx,

Risposte:


14

Nel file /etc/grub.d/30_os-prober la riga

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"

fa girare tutte le unità (standby -> inattivo). Os-prober è un'utilità per trovare installazioni Linux su unità diverse dall'unità di avvio. È quello os-proberche deve essere disabilitato.

  1. Un modo è quello di rimuovere il pacchetto : apt-get --purge remove os-prober.
  2. Un altro modo è quello di rimuovere i diritti eseguibili per os-prober . Per prima cosa trova la posizione di os-prober usando $ which os-prober. Uscita potrebbe essere simile: /usr/bin/os-prober. Rimuovere i diritti eseguibili per tutti gli utenti per quel file:# chmod a-x /usr/bin/os-prober
  3. Un altro modo è rimuovere i diritti eseguibili per 30_os-prober . Trova la posizione di 30_os-prober utilizzando $ locate /30_os-prober. Uscita potrebbe essere simile: /etc/grub.d/30_os-prober. Rimuovere i diritti eseguibili per tutti gli utenti per quel file:# chmod a-x /etc/grub.d/30_os-prober
  4. Ancora un altro modo è saltare l'esecuzione di /etc/grub.d/30_os-prober. Ad esempio facendo ilGRUB_DISABLE_OS_PROBER=true opzione nella nostra versione 1.98 di grub. Questo può essere fatto inserendo nel file /etc/grub.d/30_os-proberil codice sotto la riga set -e:

...

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
  exit 0
fi

5

Per quelli che si chiedono se valga davvero la pena, sì, lo è. Forse non per il risparmio energetico, ma oggi ho riscontrato un problema con update-grub perché voleva sondare sia / dev / sda (il mio hard disk) sia / dev / sdc (una chiavetta USB). Senza quest'ultimo inserito nel mio laptop, update-grub si bloccherebbe, anche se in realtà non è installato alcun sistema operativo sulla mia chiavetta USB né ho mai avviato da questa chiavetta. Dato che la chiavetta USB si è rotta di recente, avevo bisogno di un modo per update-grub di continuare (vivo) senza di essa. Fortunatamente, GRUB_DISABLE_OS_PROBER=trueho appena fatto il trucco. :)


1
Ho avuto il problema inverso: update-grub fallito se era presente una chiavetta USB. La chiavetta USB è stata un po 'insolita, dal momento che Easy2Boot è installato. Ma poiché questo era su un chiosco con il comando update-grub emesso da uno script posto su quella chiavetta USB, questa soluzione è stata molto gradita.
Noamik,

3

(Vale davvero la pena dedicare tempo e fatica a risolvere?)

Come hai detto, il sondaggio sta probabilmente accadendo quando le grub-mkconfigchiamate grub-probe. È possibile modificare grub-mkconfigsemplicemente codificando il risultato delle grub-probechiamate. Esso viene utilizzato per riempire GRUB_DEVICE, GRUB_DEVICE_UUID, GRUB_DEVICE_BOOT, GRUB_DEVICE_BOOT_UUID, e GRUB_FS.


1

Vedi la mia soluzione qui per disabilitare selettivamente quali partizioni vengono controllate os-probercon un piccolo patch.

La configurazione di GRUB_OS_PROBER_SKIP_LIST="UUID@device_path"in /etc/default/grub:

  • riduce il numero di dispositivi ${OSPROBED}utilizzati da/etc/grub.d/30_os-prober

  • che interrompe il controllo con ${grub_probe} --target=fs_uuid --device


0

So che questo è un vecchio post, ma ho trovato un altro modo per ottenere questo risultato che non comporta la modifica degli script. in /etc/grub.d/ho rinominato il file 30_os-proberin .30_os-prober(iniziare con un punto) e viene ignorato durante l'aggiornamento anche se viene visualizzato nello stesso posto in lsse si utilizza -a.

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.