システムのスリープ/ウェイクアップ サイクル後に、(Linux) カーネルにセカンダリ HDD を起動しないように指示する方法はありますか? 私のラップトップには、システム ルートを含むプライマリ ドライブとして SSD があり、バックアップ システムと散発的にアクセスするファイルを保存するセカンダリ HDD があるため、質問しています。ラップトップは通常、何日にもわたって毎日多くのスリープ/ウェイクアップ サイクル (休止状態ではなく、RAM へのサスペンド) を繰り返すため、セカンダリ HDD を手動でスリープ状態にし、システムのスリープ/ウェイクアップ サイクル中はスリープ状態を維持するようにカーネルに指示したいと思います。
答え1
セカンダリ HDD はバックアップにのみ使用するため、fstab にドライブを自動的にマウントしないように指示し、ドライブをマウントし、バックアップを作成して、再度ドライブをアンマウントするバックアップ スクリプトを作成することをお勧めします。
noauto オプションを指定した fstab 行の例:
/dev/sdb1 /media/backup ext4 user,noauto 0 0
バックアップ用のbashスクリプトは次のように始まりmount /media/backup
、次のように終わります。umount /media/backup
答え2
ディスクを回転させない
ディスクの回転はカーネルにハードコードされているようだ(感謝ヴェオンこれを掘り起こしてくれた人に感謝します。)
しかし、もちろん修正することは可能です:古いバージョンのカーネル用のパッチ全体的に奇妙です。
これについてはカーネル パラメータ/スイッチがあったことを覚えていると思っていました。
これはハックなので、アップデートのたびにカーネルにパッチを当ててビルドする必要があり、場合によっては変更されたコードにパッチを適応させる必要があるため、お勧めしません。より良い方法は、パッチ (実際のスイッチを提供し、すべてのシステムで機能するもの) をカーネル開発者自身に送信することです。これは、この回答の範囲を超えていると思います。:)
ディスクを再度停止する (SystemD/Linux)
Marc.2377 のソリューションを基にして、SystemD/Linux Mint で HDD をシャットダウンすることができました。
[Unit]
Description="Put woken HDD back to sleep and tell it to go to sleep after 2 min of not being used."
After=systemd-suspend.service systemd-hybrid-sleep.service systemd-hibernate.service systemd-suspend-then-hibernate.service
[Service]
Type=simple
ExecStart=/usr/sbin/hdparm -q -S 24 -q -Y /dev/disk/by-id/MYDISK
[Install]
WantedBy=sleep.target
MYDISK
を 内の実際のデバイス ファイル名に置き換え/dev/disk/by-id
、 として保存します/etc/systemd/system/wake_hdd-stop.service
。
次に実行してsystemctl daemon-reload
アクティブ化します。
ディスクを再度停止する (GNU/Linux)
通常の GNU/Linux システムでは、pm-utils
に以下を入力するだけです/etc/pm/sleep.d/99_hdd-stop
。
#! /bin/sh
case "$1" in
resume|thaw)
/usr/sbin/hdparm -q -S 24 -q -Y /dev/disk/by-id/MYDISK
;;
esac
MYDISK
もちろん、を置き換えます。
次に、ファイルを実行可能にします。chmod +x /etc/pm/sleep.d/99_hdd-stop
注記
いずれにしても、コマンドはできるだけ遅く実行する必要があります。そうしないと、何らかの初期化プロセスがディスクにアクセスしたために、ディスクが再び回転してしまう可能性があります。
また、私のディスクはコマンドを完全に無視しているようです-S
。したがって.desktop
、結果は状況によって異なります。(上記のスクリプトを実行するファイルを作成し、デスクトップ環境のグローバル キーボード ショートカット設定を使用して、そのファイルにショートカットをマップしました。そのため、いつでも即座に停止できます。)
答え3
それは不可能だと思います。ドライブはカーネルだけでなく、起動時に BIOS / UEFI によっても検査されます。
私がやっているのは、システムの起動直後にドライブをスリープモードにするようにシステムに指示することです。https://wiki.archlinux.org/index.php/Hdparm#起動後直接ドライブをスリープ状態にする。
私の場合は次のとおりです。
/usr/local/lib/systemd/system/rsleephdd.service
[Unit]
Description="Ranolfi's script to sleep hard drives on boot"
[Service]
Type=oneshot
ExecStart=/usr/bin/hdparm -q -S 120 -Y /dev/sdc
[Install]
WantedBy=multi-user.target
ドライブまたはそのパーティションが fstab (または crypttab) によってマウントされているかどうかは関係ありません。
(編集):厳密に言えば、パッチを当てることでカーネルにディスクを無視させることは可能のようだただし、これによってドライブの起動が妨げられることはありません。むしろ、私がリンクしたパッチによってドライブにアクセスできなくなり、散発的にファイルにアクセスすることも、ドライブをスリープ状態にすることもできなくなります。