web-dev-qa-db-ja.com

update-grubがすべてのドライブをスキャンしないようにする方法は?

update-grubが実行されるたびに、すべてのハードドライブがスキャンされます。スタンバイ状態の各ドライブは、アイドル状態になるまでスピンアップします。これはエネルギーの浪費です。 update-grubバージョン1.98を使用します。

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

回帰

  1. GRUB_DISABLE_OS_PROBER=trueファイルには/etc/default/grubオプションがあります。しかし、これはバージョン2以降でのみ機能するようです。少なくとも、バージョン1.98のすべてのドライブのスキャンは停止しません。

  2. Update-grubの一部として実行される/etc/grub.d/20_linux_xenスクリプトがあります。 chmod a-x /etc/grub.d/20_linux_xenを使用してすべてのユーザーの実行権限を削除した後も、すべてのドライブが起動します。

update-grubがすべてのハードドライブのスキャンを停止する方法

21
Pro Backup

ファイル/ etc/grub.d/30_os-proberの行

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

すべてのドライブをスピンさせます(スタンバイ->アイドル)。 Os-prober は、ブートドライブ以外のドライブでLinuxインストールを検索するユーティリティです。無効にする必要があるのはos-proberです。

  1. 1つの方法は、パッケージを削除することですapt-get --purge remove os-prober
  2. 別の方法は、os-proberの実行権限を削除することです。まず、$ which os-proberを使用してos-proberの場所を見つけます。出力は次のようになります:/usr/bin/os-prober。そのファイルのすべてのユーザーの実行権限を削除します:# chmod a-x /usr/bin/os-prober
  3. 別の方法は、30_os-proberの実行権限を削除することです。 $ locate /30_os-proberを使用して、30_os-proberの場所を見つけます。出力は次のようになります:/etc/grub.d/30_os-prober。そのファイルのすべてのユーザーの実行権限を削除します:# chmod a-x /etc/grub.d/30_os-prober
  4. さらに別の方法は、/etc/grub.d/30_os-proberの実行をスキップすることです。たとえば、grubバージョン1.98でGRUB_DISABLE_OS_PROBER=trueオプションを機能させることによって。これは、ファイル/etc/grub.d/30_os-proberに行set -eの下のコードを挿入することで実行できます。

...

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

それが本当に努力に値するかどうか疑問に思う人にとっては、そうです。おそらく省エネのためではありませんが、/ dev/sda(私のハードディスク)と/ dev/sdc(USBスティック)の両方をプローブする必要があるため、今日、update-grubで問題が発生しました。後者をラップトップに挿入しないと、実際にはUSBスティックにOSがインストールされておらず、このスティックから起動したこともありませんが、update-grubがハングします。最近USBスティックが壊れたので、それがなくてもupdate-grubを続行(ライブ)する方法が必要でした。幸いにも、GRUB_DISABLE_OS_PROBER=trueトリックを行いました。 :)

5
PPP

(これは本当に修正する時間と労力の価値がありますか?)

ご指摘のとおり、grub-mkconfiggrub-probeを呼び出したときにプローブが行われている可能性があります。 grub-mkconfig呼び出しの結果をハードコードするだけでgrub-probeを変更できます。 GRUB_DEVICEGRUB_DEVICE_UUIDGRUB_DEVICE_BOOTGRUB_DEVICE_BOOT_UUIDGRUB_FSの入力に使用されます。

3
Jim Paris

小さい[patchを使用してos-proberによってチェックされるパーティションを選択的に無効にするには、 ここに私の解決策 を参照してください。

GRUB_OS_PROBER_SKIP_LIST="UUID@device_path"/etc/default/grubの構成:

  • ${OSPROBED}が使用する/etc/grub.d/30_os-proberのデバイスの数を減らします

  • ${grub_probe} --target=fs_uuid --deviceでチェックを停止します

1
Stuart Cardall

私はこれが古い投稿であることを知っていますが、スクリプトを変更することを含まない、これを達成する別の方法を見つけました。 /etc/grub.d/でファイル名を30_os-proberから.30_os-proberに変更し(ピリオドで開始)、-aを使用するとlsの同じ場所に表示されますが、更新中にスキップされます。

0
James