新しいHD(WD5000BPVT)を購入しましたが、残念ながら5〜8秒ごとにスリープモードを試してください。カチッという音が目立つだけでなく、ブート時間が1秒のため、日常使用時に非常に目立つ遅延が追加されます。
非常に短いスリープモードが無効になっていることがわかりましたが、hdparm -B 254 /dev/sda
ドライブの電源を入れるたびにそれを適用する方法がわかりません。電源管理の基本設定アプリはdconf-editor
HD設定と何もしません。私には/etc/hdparm
道がありません/etc/acpi
。 MATEはウィンドウマネージャです。
Fedora 19でドライブがアクティブになったときにこのコマンドを強制的に実行するにはどうすればよいですか?
答え1
私は同じ問題に直面し、ここの解決策のどれも私のニーズに合わなかった。 cronの使用は実際には解決策ではなく回避策です。 udev ルールは、電源のオン/オフ時に実行されますが、一時停止/再開後は実行されず、pm-utils
Fedora 19 ではデフォルトでは使用されません。たとえば、ノートブックカバーを閉じたときです。
systemd
これが一時停止/休止状態になるので、この状況を処理する唯一の正しい方法は、起動後と一時停止から再起動した後に実行されるユニットを作成することですsystemd
。
メモ:
/dev/disk/by-id/...
代わりに、あなたは/dev/sda
常に正しいディスクを得ることができます(カーネルが検出する順序に応じてsda、b、c)。ExecStart
複数のディスクを構成できるように複数行を持つことができます。
私が書いた単位は次のとおりです。
[Unit]
Description=Silence HD
After=suspend.target
[Service]
Type=oneshot
# Disable automatic head parking for the main disk
ExecStart=/sbin/hdparm -B 254 /dev/disk/by-id/ata-ST3250824AS_4N127FD1
# Enable automatic spin down after 30 seconds for the second, infrequently used disk
ExecStart=/sbin/hdparm -S 6 /dev/disk/by-id/ata-ST31000528AS_BVP5H5X1
[Install]
WantedBy=suspend.target basic.target
このファイルを別の名前で保存し、/etc/systemd/system/hdsilence.service
以下を使用して有効にします。
systemctl enable hdsilence.service
systemctl daemon-reload
答え2
独自のシステムサービスを作成するか、/etc/rc.d/rc.localにコマンドを追加して、起動中にシステムにこのコマンドを実行させることができます。
毎回コマンドを実行するには起きるスリープ/休止状態の後のシステムでは、/etc/pm/sleep.d/に2桁の数字で始まるスクリプトを追加し、/usr/lib64/pm-utils/sleep.d(x86_64仮定)で他のスクリプトを確認しますできます。詳細については。デフォルトでは、入力したい状態に応じてパラメータを使用します。バッテリー電源を接続したときとは異なる作業を実行するには、同じ親ディレクトリの power.d/ にいくつかのログイン情報を追加することもできます。
答え3
udev
AC/バッテリーで実行する場合、他の設定の場合は、次の簡単な規則に従います
/etc/udev/rules.d/98-apmsettings.rules
。
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/usr/bin/hdparm -B 128 /dev/sda"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/usr/bin/hdparm -B 254 /dev/sda"
これは、ノートブックが接続されているときとapm
接続が失われたときに別々に設定されます。また、サスペンドから再起動した後も常に機能する必要があります。254
128
答え4
udevルールはプラグイベントでうまく機能しますが、中断から再開した後に正しい動作を得るには、次のことが必要です/etc/pm/sleep.d
。
#!/bin/sh
case "${1}" in
resume|thaw)
if grep -q 1 /sys/class/power_supply/ADP1/online; then
/usr/sbin/hdparm -B 254 /dev/sda
else
/usr/sbin/hdparm -B 128 /dev/sda
fi
;;
esac