Wie verhindere ich, dass update-grub alle Laufwerke scannt?

19

Jedes Mal, wenn ausgeführt update-grubwird, werden alle Festplatten gescannt. Jedes Laufwerk, das sich im Standby-Zustand befindet, dreht sich in den Leerlauf. Dies ist eine Verschwendung von Energie. Wir verwenden Update-Grub Version 1.98:

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

Regression

  1. Es gibt eine GRUB_DISABLE_OS_PROBER=trueOption in der /etc/default/grubDatei. Das scheint aber erst ab Version 2 zu funktionieren. Zumindest hört es nicht auf, alle Laufwerke in unserer Version 1.98 zu scannen.

  2. Es gibt ein /etc/grub.d/20_linux_xenSkript, das möglicherweise als Teil von update-grub ausgeführt wird. Nach dem Entfernen von Ausführungsrechten für alle Benutzer mit chmod a-x /etc/grub.d/20_linux_xenallen Laufwerken drehen sich immer noch.

Wie kann update-grubich verhindern, dass jede Festplatte gescannt wird?

Pro Backup
quelle
Es ist nur ein Shell-Skript ... Ändern Sie es? Es sollte nur nach Kernel-Updates ausgeführt werden, was nicht sehr oft vorkommt.
Jordanien
Eine der Skriptzeilen wird ausgeführt /usr/sbin/grub-probe --target=device /. Dieser Befehl bewirkt auch, dass alle Laufwerke hochfahren. Das /usr/sbin/grub-probeist kein Shell-Skript.
Pro Backup
Wie oft rennst du update-grub? Dies sollte nur passieren, wenn Sie einen neuen Kernel installieren. Wen interessiert das?
Psusi
Ich weiß, dass das gesamte Picojoule, das es verwendet, eine solche Verschwendung ist. Wenn Sie update-grub für einen Monat rund um die Uhr auf 1000 Computern mit jeweils 3 Festplatten laufen lassen, wird Ihre Stromrechnung möglicherweise um ein oder zwei Cent aufgestockt.
tkbx

Antworten:

14

In der Datei /etc/grub.d/30_os-prober die Zeile

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

dreht alle Laufwerke (Standby -> Leerlauf). Os-Prober ist ein Dienstprogramm, mit dem Sie Linux-Installationen auf anderen Laufwerken als Ihrem Startlaufwerk finden können. Es ist das os-prober, was deaktiviert werden muss.

  1. Eine Möglichkeit ist, das Paket zu entfernen : apt-get --purge remove os-prober.
  2. Eine andere Möglichkeit besteht darin , ausführbare Rechte für os-prober zu entfernen . Finden Sie zuerst den Speicherort von os-prober mit $ which os-prober. Ausgabe könnte wie folgt aussehen: /usr/bin/os-prober. Das Entfernen der ausführbaren Rechte für alle Benutzer für diese Datei:# chmod a-x /usr/bin/os-prober
  3. Eine andere Möglichkeit besteht darin , ausführbare Rechte für 30_os-prober zu entfernen . Finden Sie den Standort von 30_os-prober mit $ locate /30_os-prober. Ausgabe könnte wie folgt aussehen: /etc/grub.d/30_os-prober. Das Entfernen der ausführbaren Rechte für alle Benutzer für diese Datei:# chmod a-x /etc/grub.d/30_os-prober
  4. Ein weiterer Weg ist, die Ausführung von zu überspringen/etc/grub.d/30_os-prober . Zum Beispiel, indem die GRUB_DISABLE_OS_PROBER=trueOption in unserer Grub-Version 1.98 funktioniert. Dies kann durch Einfügen /etc/grub.d/30_os-proberdes folgenden Codes in die Datei geschehen set -e:

...

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

Für diejenigen, die sich fragen, ob es die Mühe wirklich wert ist, ja, das ist es. Vielleicht nicht aus Energiespargründen, aber heute bin ich auf ein Problem mit Update-Grub gestoßen, da es sowohl nach / dev / sda (meiner Festplatte) als auch nach / dev / sdc (einem USB-Stick) suchen wollte. Ohne diesen in meinem Laptop zu finden, würde update-grub hängen bleiben, obwohl auf meinem USB-Stick kein Betriebssystem installiert ist und ich noch nie von diesem Stick gebootet habe. Da der USB-Stick kürzlich kaputt gegangen ist, brauchte ich eine Möglichkeit, um update-grub ohne ihn (lebendig) fortzusetzen. Zum Glück habe ich es GRUB_DISABLE_OS_PROBER=trueeinfach geschafft. :)

PPP
quelle
1
Ich hatte das umgekehrte Problem: update-grub schlägt fehl, wenn ein USB-Stick vorhanden war. Der USB-Stick war etwas ungewöhnlich, da Easy2Boot installiert ist. Da sich dies jedoch auf einem Kiosk befand und der Befehl update-grub von einem Skript auf diesem USB-Stick aus ausgegeben wurde, war diese Lösung sehr willkommen.
Noamik
3

(Lohnt es sich wirklich, diese Probleme zu beheben?)

Wie Sie bereits erwähnt haben, erfolgt die Prüfung wahrscheinlich bei grub-mkconfigAnrufen grub-probe. Sie können Änderungen grub-mkconfigvornehmen, indem Sie das Ergebnis der grub-probeAufrufe einfach fest codieren . Es wird verwendet , um zu füllen GRUB_DEVICE, GRUB_DEVICE_UUID, GRUB_DEVICE_BOOT, GRUB_DEVICE_BOOT_UUID, und GRUB_FS.

Jim Paris
quelle
1

Sehen Sie sich meine Lösung hier an, um selektiv zu deaktivieren, welche Partitionen os-probermit einem kleinen Häkchen überprüft werden patch.

Die Konfiguration von GRUB_OS_PROBER_SKIP_LIST="UUID@device_path"in /etc/default/grub:

  • reduziert die Anzahl der Geräte, ${OSPROBED}die von verwendet werden/etc/grub.d/30_os-prober

  • das stoppt die Prüfung mit ${grub_probe} --target=fs_uuid --device

Stuart Cardall
quelle
0

Ich weiß, dass dies ein alter Beitrag ist, aber ich habe einen anderen Weg gefunden, dies zu erreichen, bei dem keine Änderungen an den Skripten vorgenommen werden. in /etc/grub.d/Ich habe die Datei 30_os-proberin umbenannt .30_os-prober(beginne mit einem Punkt) und sie wird während des Updates übersprungen, obwohl sie bei Verwendung an derselben Stelle in lsangezeigt wird -a.

James
quelle