Comment empêcher update-grub d'analyser tous les lecteurs?


19

À chaque update-grubexécution, tous les disques durs sont analysés. Chaque lecteur en état de veille tournera pour devenir inactif. C'est un gaspillage d'énergie. Nous utilisons la version 1.98 de update-grub:

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

Régression

  1. Il y a une GRUB_DISABLE_OS_PROBER=trueoption dans le /etc/default/grubfichier. Mais cela ne semble fonctionner qu'à partir de la version 2 et plus. Au moins, cela n'arrête pas d'analyser tous les lecteurs de notre version 1.98.

  2. Il existe un /etc/grub.d/20_linux_xenscript qui peut être exécuté dans le cadre de update-grub. Après avoir supprimé les droits d'exécution pour tous les utilisateurs avec chmod a-x /etc/grub.d/20_linux_xentous les lecteurs, ils continuent de tourner.

Comment arrêter update-grubd'analyser chaque disque dur?


C'est juste un script shell ... Le modifier? Il ne devrait s'exécuter qu'après les mises à jour du noyau, ce qui ne se produit pas très souvent.
jordanm

L'une des lignes de script s'exécute /usr/sbin/grub-probe --target=device /. Cette commande entraîne également la rotation de tous les lecteurs. Ce /usr/sbin/grub-proben'est pas un script shell.
Pro Backup

À quelle fréquence courez-vous update-grub? Cela ne devrait se produire que lorsque vous installez un nouveau noyau, alors qui s'en soucie?
2012

Je sais que tout le picojoule qu'il utilise est un tel gaspillage - si vous exécutez update-grub 24/7 pendant un mois sur 1000 ordinateurs avec 3 disques durs chacun, cela pourrait ajouter un cent ou deux à votre facture d'électricité.
tkbx

Réponses:


14

Dans le fichier /etc/grub.d/30_os-prober la ligne

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

fait tourner tous les disques (veille -> inactif). Os-prober est un utilitaire pour trouver des installations Linux sur des lecteurs autres que votre lecteur de démarrage. C'est le os-proberqui doit être désactivé.

  1. La première consiste à supprimer le paquet : apt-get --purge remove os-prober.
  2. Une autre façon consiste à supprimer les droits exécutables pour os-prober . Trouvez d'abord l'emplacement d'os-prober à l'aide de $ which os-prober. Sortie pourrait ressembler à : /usr/bin/os-prober. Le supprimer les droits exécutables pour tous les utilisateurs de ce fichier:# chmod a-x /usr/bin/os-prober
  3. Une autre façon consiste à supprimer les droits exécutables pour 30_os-prober . Trouvez l'emplacement de 30_os-prober à l'aide de $ locate /30_os-prober. Sortie pourrait ressembler à : /etc/grub.d/30_os-prober. Le supprimer les droits exécutables pour tous les utilisateurs de ce fichier:# chmod a-x /etc/grub.d/30_os-prober
  4. Une autre façon consiste à ignorer l'exécution de /etc/grub.d/30_os-prober. Par exemple, en faisant fonctionner l' GRUB_DISABLE_OS_PROBER=trueoption dans notre version grub 1.98. Cela peut être fait en insérant dans le fichier /etc/grub.d/30_os-proberle code sous la ligne set -e:

...

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

5

Pour ceux qui se demandent si cela en vaut vraiment la peine, oui. Peut-être pas pour économiser de l'énergie, mais aujourd'hui j'ai rencontré un problème avec update-grub car il voulait sonder à la fois / dev / sda (mon disque dur) et / dev / sdc (une clé USB). Sans ce dernier inséré dans mon ordinateur portable, update-grub se bloquerait, même s'il n'y a en fait aucun système d'exploitation sur ma clé USB installé et que je n'ai jamais démarré à partir de cette clé. Comme la clé USB s'est récemment cassée, j'avais besoin d'un moyen pour update-grub de continuer (vivant) sans elle. Heureusement, GRUB_DISABLE_OS_PROBER=truevient de faire l'affaire. :)


1
J'ai eu le problème inverse: échec de la mise à jour-grub si une clé USB était présente. La clé USB était un peu inhabituelle, car Easy2Boot était installé. Mais comme il s'agissait d'un kiosque avec la commande update-grub provenant d'un script placé sur cette même clé USB, cette solution était la bienvenue.
noamik

3

(Cela vaut-il vraiment le temps et les efforts pour y remédier?)

Comme vous l'avez mentionné, le sondage se produit probablement lors des grub-mkconfigappels grub-probe. Vous pouvez modifier grub-mkconfigsimplement en codant en dur le résultat des grub-probeappels. Il est utilisé pour remplir GRUB_DEVICE, GRUB_DEVICE_UUID, GRUB_DEVICE_BOOT, GRUB_DEVICE_BOOT_UUIDet GRUB_FS.


1

Voir ma solution ici pour désactiver sélectivement les partitions qui sont vérifiées par os-proberun petit patch.

La configuration de GRUB_OS_PROBER_SKIP_LIST="UUID@device_path"dans /etc/default/grub:

  • réduit le nombre d'appareils ${OSPROBED}utilisés par/etc/grub.d/30_os-prober

  • qui arrête le chèque avec ${grub_probe} --target=fs_uuid --device


0

Je sais que c'est un vieux post, mais j'ai trouvé un autre moyen d'y parvenir qui n'implique pas de modifier les scripts. dans /etc/grub.d/j'ai renommé le fichier 30_os-proberen .30_os-prober(commencez par un point) et il est ignoré lors de la mise à jour même s'il apparaît au même endroit lssi vous utilisez -a.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.