update-grub
が実行されるたびに、すべてのハードドライブがスキャンされます。スタンバイ状態の各ドライブは、アイドル状態になるまでスピンアップします。これはエネルギーの浪費です。 update-grubバージョン1.98を使用します。
# update-grub -v
grub-mkconfig (GRUB) 1.98+20100804-14+squeeze1
回帰
GRUB_DISABLE_OS_PROBER=true
ファイルには/etc/default/grub
オプションがあります。しかし、これはバージョン2以降でのみ機能するようです。少なくとも、バージョン1.98のすべてのドライブのスキャンは停止しません。
Update-grubの一部として実行される/etc/grub.d/20_linux_xen
スクリプトがあります。 chmod a-x /etc/grub.d/20_linux_xen
を使用してすべてのユーザーの実行権限を削除した後も、すべてのドライブが起動します。
update-grub
がすべてのハードドライブのスキャンを停止する方法
ファイル/ etc/grub.d/30_os-proberの行
OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
すべてのドライブをスピンさせます(スタンバイ->アイドル)。 Os-prober は、ブートドライブ以外のドライブでLinuxインストールを検索するユーティリティです。無効にする必要があるのはos-prober
です。
apt-get --purge remove os-prober
。$ which os-prober
を使用してos-proberの場所を見つけます。出力は次のようになります:/usr/bin/os-prober
。そのファイルのすべてのユーザーの実行権限を削除します:# chmod a-x /usr/bin/os-prober
$ locate /30_os-prober
を使用して、30_os-proberの場所を見つけます。出力は次のようになります:/etc/grub.d/30_os-prober
。そのファイルのすべてのユーザーの実行権限を削除します:# chmod a-x /etc/grub.d/30_os-prober
/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
それが本当に努力に値するかどうか疑問に思う人にとっては、そうです。おそらく省エネのためではありませんが、/ dev/sda(私のハードディスク)と/ dev/sdc(USBスティック)の両方をプローブする必要があるため、今日、update-grubで問題が発生しました。後者をラップトップに挿入しないと、実際にはUSBスティックにOSがインストールされておらず、このスティックから起動したこともありませんが、update-grubがハングします。最近USBスティックが壊れたので、それがなくてもupdate-grubを続行(ライブ)する方法が必要でした。幸いにも、GRUB_DISABLE_OS_PROBER=true
トリックを行いました。 :)
(これは本当に修正する時間と労力の価値がありますか?)
ご指摘のとおり、grub-mkconfig
がgrub-probe
を呼び出したときにプローブが行われている可能性があります。 grub-mkconfig
呼び出しの結果をハードコードするだけでgrub-probe
を変更できます。 GRUB_DEVICE
、GRUB_DEVICE_UUID
、GRUB_DEVICE_BOOT
、GRUB_DEVICE_BOOT_UUID
、GRUB_FS
の入力に使用されます。
小さい[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
でチェックを停止します
私はこれが古い投稿であることを知っていますが、スクリプトを変更することを含まない、これを達成する別の方法を見つけました。 /etc/grub.d/
でファイル名を30_os-prober
から.30_os-prober
に変更し(ピリオドで開始)、-a
を使用するとls
の同じ場所に表示されますが、更新中にスキップされます。