<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Soracqt</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Soracqt"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Soracqt"/>
	<updated>2026-04-14T06:19:58Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E9%9B%BB%E6%BA%90%E7%AE%A1%E7%90%86&amp;diff=21887</id>
		<title>電源管理</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E9%9B%BB%E6%BA%90%E7%AE%A1%E7%90%86&amp;diff=21887"/>
		<updated>2021-10-07T13:36:53Z</updated>

		<summary type="html">&lt;p&gt;Soracqt: グローバルarchwikiからsystemd-logindのリロード方法を修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:電源管理]]&lt;br /&gt;
[[en:Power management]]&lt;br /&gt;
[[es:Power management]]&lt;br /&gt;
[[it:Shutdown Pressing Power Button]]&lt;br /&gt;
[[zh-hans:Power management]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|サスペンドとハイバネート}}&lt;br /&gt;
{{Related|Display Power Management Signaling}}&lt;br /&gt;
{{Related|CPU 周波数スケーリング}}&lt;br /&gt;
{{Related|ハイブリッドグラフィック}}&lt;br /&gt;
{{Related|カーネルモジュール}}&lt;br /&gt;
{{Related|sysctl}}&lt;br /&gt;
{{Related|udev}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
電源管理とはシステムが使われていない場合に電力の供給を切ったり低電力状態にする機能のことです。このページでは Arch Linux における電源管理の全体的な外観を説明します。&lt;br /&gt;
&lt;br /&gt;
ハードウェアの電源管理の設定を直接変更するときはカーネルの設定を使います:&lt;br /&gt;
* [[カーネルパラメータ]]&lt;br /&gt;
* [[カーネルモジュール]]&lt;br /&gt;
* [[udev]] ルール&lt;br /&gt;
&lt;br /&gt;
また、カーネルと対話してイベントを処理する電源管理ツールが多数あります: [[#ユーザースペースツール]] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Note|ひとつの設定箇所・ツールで設定した電力設定が他の設定箇所・ツールで上書きされる可能性もあるので注意してください。}}&lt;br /&gt;
&lt;br /&gt;
== ユーザースペースツール ==&lt;br /&gt;
&lt;br /&gt;
以下のツールを使うことで手動で多数の設定を行うかわりになります。どのツールも多かれ少なかれ同じような動作をするので、衝突をさけるためにツールはどれか一つだけを実行してください。[[:Category:電源管理|電源管理カテゴリ]]を見ることで Arch Linux にどんな電源管理の選択肢が存在するかわかります。&lt;br /&gt;
&lt;br /&gt;
以下は省電力設定をするために作られた人気のあるスクリプトやツールです:&lt;br /&gt;
&lt;br /&gt;
=== コンソール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[acpid]]|ACPI の電源管理イベントを届けるデーモン。netlink をサポート。|https://sourceforge.net/projects/acpid2/|{{pkg|acpid}}}}&lt;br /&gt;
* {{App|[[Laptop Mode Tools]]|ノートパソコンの省電力設定をするユーティリティ。多少設定が要りますが省電力設定ユーティリティのデファクトスタンダードとされています。|https://github.com/rickysarraf/laptop-mode-tools|{{AUR|laptop-mode-tools}}}}&lt;br /&gt;
* {{App|libsmbios|Dell SMBIOS テーブルを操作するためのライブラリおよびツール。|https://github.com/dell/libsmbios|{{Pkg|libsmbios}}}}&lt;br /&gt;
* {{App|[[powertop]]|消費電力や電源管理の問題を診断して省電力設定を補助するツール。|https://01.org/powertop/|{{Pkg|powertop}}}}&lt;br /&gt;
* {{App|[[systemd]]|システムおよびサービスマネージャ。|https://freedesktop.org/wiki/Software/systemd/|{{Pkg|systemd}}}}&lt;br /&gt;
* {{App|[[TLP]]|Linux 向けの先進的な電源管理。|https://linrunner.de/tlp|{{Pkg|tlp}}}}&lt;br /&gt;
&lt;br /&gt;
=== グラフィカル ===&lt;br /&gt;
&lt;br /&gt;
* {{App|batterymon-clone|シンプルなバッテリモニタートレイアイコン。|https://github.com/jareksed/batterymon-clone|{{AUR|batterymon-clone}}}}&lt;br /&gt;
* {{App|batsignal|libnotify を使用してバッテリレベルの低下を警告する軽量バッテリモニタ。|https://github.com/electrickite/batsignal|{{AUR|batsignal}}}}}&lt;br /&gt;
* {{App|cbatticon|システムトレイにある軽量で高速なバッテリアイコン。|https://github.com/valr/cbatticon|{{Pkg|cbatticon}}}}}&lt;br /&gt;
* {{App|GNOME power manager|GNOME のシステム電力情報および統計|https://gitlab.gnome.org/GNOME/gnome-power-manager|{{Pkg|gnome-power-manager}}}}&lt;br /&gt;
* {{App|KDE Power Devil|Plasma 用の電源管理モジュール。|https://invent.kde.org/plasma/powerdevil|{{Pkg|powerdevil}}}}&lt;br /&gt;
* {{App|LXQt Power Management|LXQt 用の電源管理モジュール。|https://github.com/lxqt/lxqt-powermanagement|{{Pkg|lxqt-powermanagement}}}}&lt;br /&gt;
* {{App|MATE Power Management|MATE 用電源管理ツール|https://github.com/mate-desktop/mate-power-manager|{{Pkg|mate-power-manager}}}}&lt;br /&gt;
* {{App|MATE Power Statistics|MATE のシステム電力情報と統計|https://github.com/mate-desktop/mate-power-manager|{{Pkg|mate-power-manager}}}}&lt;br /&gt;
* {{App|powerkit|デスクトップに依存しない電源マネージャー。|https://github.com/rodlie/powerkit|{{AUR|powerkit}}}}&lt;br /&gt;
* {{App|Xfce Power Manager|Xfce 用の Power Manager。|https://docs.xfce.org/xfce/xfce4-power-manager/start|{{Pkg|xfce 4-power-manager}}}}&lt;br /&gt;
* {{App|vattery|システムトレイ内のラップトップバッテリのステータスを表示する、 Vala で書かれたバッテリ監視アプリケーション。|https://www.jezra.net/projects/vattery.html|{{AUR|vattery}}}}&lt;br /&gt;
&lt;br /&gt;
== systemd による電源管理 ==&lt;br /&gt;
&lt;br /&gt;
=== ACPI イベント ===&lt;br /&gt;
&lt;br /&gt;
systemd は電源関連の [[Wikipedia:Advanced_Configuration_and_Power_Interface|ACPI]] イベントを扱えます。{{ic|/etc/systemd/logind.conf}} や {{ic|/etc/systemd/logind.conf.d/*.conf}} のオプションを使って設定できます:&lt;br /&gt;
&lt;br /&gt;
* {{ic|HandlePowerKey}}: パワーキーが押された時に行う動作を定めます。&lt;br /&gt;
* {{ic|HandleSuspendKey}}: サスペンドキーが押された時に行う動作を定めます。&lt;br /&gt;
* {{ic|HandleHibernateKey}}: ハイバネートキーが押された時に行う動作を定めます。&lt;br /&gt;
* {{ic|HandleLidSwitch}}: フタが閉じられた時に行う動作を定めます。&lt;br /&gt;
&lt;br /&gt;
定めることができる動作は {{ic|ignore}}, {{ic|poweroff}}, {{ic|reboot}}, {{ic|halt}}, {{ic|suspend}}, {{ic|hibernate}}, {{ic|hybrid-sleep}}, {{ic|lock}}, {{ic|kexec}} のいずれかです。&lt;br /&gt;
&lt;br /&gt;
オプションが設定されていない場合、systemd が使うデフォルトは: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, {{ic|1=HandleLidSwitch=suspend}}。&lt;br /&gt;
&lt;br /&gt;
グラフィカルセットアップを走らせていなかったり [[i3]] や [[awesome]] などシンプルなウィンドウマネージャしか使っていないシステムでは、これで ACPI イベントに反応するものとして使っている [[acpid]] デーモンを置き換えることが可能です。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 変更を適用するには {{ic|systemctl kill -s HUP systemd-logind}} を実行してください。&lt;br /&gt;
* Systemd は AC やバッテリの ACPI イベントを取り扱うことはできません、[[Laptop Mode Tools]] などのツールを使うには、依然として [[acpid]] が必要になります。&lt;br /&gt;
* 外付けモニターが接続されている場合、フタが閉じられても {{ic|HandleLidSwitch}} オプションはアクションを実行しません。&lt;br /&gt;
}}&lt;br /&gt;
{{Warning|1=[[systemd]] バージョン 211 と 212 では、{{ic|HandleLidSwitch}} オプションは [[NVIDIA]] バイナリドライバーがインストールされている環境では使用できません。この問題はバージョン 213 で修正されています。[https://bugs.freedesktop.org/show_bug.cgi?id=76267 systemd のバグトラッカー]や [https://bbs.archlinux.org/viewtopic.php?pid=1410252#p1410252 BBS のトピック]を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 電源マネージャ ====&lt;br /&gt;
&lt;br /&gt;
[[デスクトップ環境]]には電源マネージャが含まれていることがあります。現在のバージョンの systemd では、{{ic|Handle*}} オプションは電源マネージャによって &amp;quot;inhibited&amp;quot; (一時的にオフ) にされない限りシステム全体に適用されます。停止されなければ、systemd がシステムをサスペンドした状態で終わることができ、立ち上がった時に他の電源マネージャによってもう一度停止されます。&lt;br /&gt;
&lt;br /&gt;
最新の [[KDE]], [[GNOME]], [[Xfce]] の電源マネージャは &amp;quot;inhibited&amp;quot; コマンドを実行します。[[acpid]] など他のプログラムで ACPI イベントを管理したい場合は、{{ic|Handle}} オプションを {{ic|ignore}} に設定する必要があります。詳しくは {{man|1|systemd-inhibit}} を参照。&lt;br /&gt;
&lt;br /&gt;
==== xss-lock ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|xss-lock}} は systemd の {{ic|suspend}}, {{ic|hibernate}}, {{ic|lock-session}}, {{ic|unlock-session}} イベントで適切なアクションを実行します (ロッカーの起動など)。&#039;&#039;xss-lock&#039;&#039; は [[DPMS]] イベントにも反応します。&lt;br /&gt;
&lt;br /&gt;
xss-lock を[[自動起動]]するときは以下のようなコマンドを使います:&lt;br /&gt;
&lt;br /&gt;
 xss-lock -- i3lock -n -i &#039;&#039;background_image.png&#039;&#039; &amp;amp;&lt;br /&gt;
&lt;br /&gt;
xss-lock によってサスペンド時に CPU 消費率が 100% になる場合、[https://bitbucket.org/raymonad/xss-lock/commits/1e158fb20108058dbd62bd51d8e8c003c0a48717 commit 1e158f] にあるように {{AUR|xss-lock-git}} を使うことで問題が解決します。&lt;br /&gt;
&lt;br /&gt;
=== サスペンドとハイバネート ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; はカーネルに入っているサスペンド・レジューム機能を使ってサスペンド (suspend to RAM)・ハイバネート・ハイブリッドサスペンドを行うコマンドを提供しています。また、サスペンドの前後の行動をカスタマイズするフックを追加する仕組みも存在します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;systemd&#039;&#039; はデフォルトの&#039;&#039;カーネル&#039;&#039;バックエンドに加えて、他のサスペンドバックエンド ([[Uswsusp]]) を使ってコンピュータをサスペンドしたりハイバネートすることもできます。例えば [[Uswsusp#systemd を使う]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|systemctl suspend}} は何も設定しなくても動きますが、あなたの環境で {{ic|systemctl hibernate}} を使うには[[サスペンドとハイバネート#ハイバネーション]]の指示に従う必要があります。&lt;br /&gt;
&lt;br /&gt;
==== ハイブリッドスリープ ====&lt;br /&gt;
&lt;br /&gt;
{{ic|systemctl hybrid-sleep}} はハイバネートとサスペンドを同時に行います。サスペンドとハイバネートのメリット・デメリットを組み合わせたものになります。突然コンピュータの電源が喪失 (コンセントが抜けたりバッテリーが切れる) しても、ハイバネートから復帰するため便利です。電源喪失がない場合、サスペンドから復帰するため、ハイバネートから復帰するよりも高速に復帰します。ただし、&amp;quot;hybrid-sleep&amp;quot; はハイバネートを機能させるためにメモリをスワップする必要があるので、普通の {{ic|systemctl suspend}} よりもスリープするのにかかる時間が長くなります。ハイブリッドスリープの別の方法として[[#遅延ハイバネーション|遅延ハイバネーション]]があります。&lt;br /&gt;
&lt;br /&gt;
==== サスペンドやハイバネーションの代わりに常にハイブリッドスリープを使う ====&lt;br /&gt;
&lt;br /&gt;
サスペンドやハイバネートが要求されたときでもハイブリッドスリープを行うように systemd を設定することができます。&lt;br /&gt;
&lt;br /&gt;
デフォルトのサスペンドとハイバネートのアクションは {{ic|/etc/systemd/sleep.conf}} ファイルで設定します。両方ともハイブリッドスリープを実行するように設定するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/sleep.conf|2=&lt;br /&gt;
[Sleep]&lt;br /&gt;
# suspend=hybrid-sleep&lt;br /&gt;
SuspendMode=suspend&lt;br /&gt;
SuspendState=disk&lt;br /&gt;
# hibernate=hybrid-sleep&lt;br /&gt;
HibernateMode=suspend&lt;br /&gt;
HibernateState=disk&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|5|sleep.conf.d}} のマニュアルページを読んでください。&lt;br /&gt;
&lt;br /&gt;
=== スリープフック ===&lt;br /&gt;
&lt;br /&gt;
===== サスペンド/リジューム サービスファイル =====&lt;br /&gt;
&lt;br /&gt;
サービスファイルを suspend.target, hibernate.target, sleep.target にフックすることでサスペンド・ハイバネート前後に行うアクションを設定できます。ユーザー・システムアクションを行うにはファイルを分割する必要があります。ユーザーサービスファイルを作動させるには、{{ic|# systemctl enable suspend@&amp;lt;user&amp;gt; &amp;amp;&amp;amp; systemctl enable resume@&amp;lt;user&amp;gt;}}。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/suspend@.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=User suspend actions&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=%I&lt;br /&gt;
Type=forking&lt;br /&gt;
Environment=DISPLAY=:0&lt;br /&gt;
ExecStartPre= -/usr/bin/pkill -u %u unison ; /usr/local/bin/music.sh stop ; /usr/bin/mysql -e &#039;slave stop&#039;&lt;br /&gt;
ExecStart=/usr/bin/sflock&lt;br /&gt;
ExecStartPost=/usr/bin/sleep 1&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/resume@.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=User resume actions&lt;br /&gt;
After=suspend.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=%I&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStartPre=/usr/local/bin/ssh-connect.sh&lt;br /&gt;
ExecStart=/usr/bin/mysql -e &#039;slave start&#039;&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=suspend.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* [[アプリケーション一覧/セキュリティ#スクリーンロック|slock]] を使用する場合、スリープする前にサービスを起動してはいけません。デフォルトの simple サービスタイプを使って下さい。でないと、先に &#039;&#039;slock&#039;&#039; が起動して、ロックを解除しないとスリープに入らないようになってしまいます。forking タイプを指定しても解決しません。&lt;br /&gt;
* スクリーンがロックされる前にスクリーンロックが返ってきてしまい、サスペンドから復帰するときに画面が点滅することがあります。{{ic|1=ExecStartPost=/usr/bin/sleep 1}} で遅延を追加することで解決します。}}&lt;br /&gt;
&lt;br /&gt;
root アクションでは ({{ic|# systemctl enable root-suspend}} で有効にしてください):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/root-resume.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Local system resume actions&lt;br /&gt;
After=suspend.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/systemctl restart mnt-media.automount&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=suspend.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/root-suspend.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Local system suspend actions&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=-/usr/bin/pkill sshfs&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
サービスファイルについてのヒント (詳しくは {{man|5|systemd.service}}):&lt;br /&gt;
* {{ic|1=&amp;lt;nowiki&amp;gt;Type=oneshot&amp;lt;/nowiki&amp;gt;}} の場合、複数の {{ic|1=&amp;lt;nowiki&amp;gt;ExecStart=&amp;lt;/nowiki&amp;gt;}} 行を使うことができます。それ以外の場合は使える ExecStart は一行だけです。{{ic|ExecStartPre}} を使ったりコマンドをセミコロンで分割することでコマンドを追加することができます（最初の例を見て下さい -- セミコロンの前後にはスペースが必要です）。&lt;br /&gt;
* コマンドの前に &#039;-&#039; を付けるとエラーが起こっても（終了ステータスが0以外でも）無視され、コマンドは成功したとして扱われます。&lt;br /&gt;
* サービスファイルのトラブルシューティングのときにエラーを見つけるには [[Systemd#Journal|journalctl]] を使うのがベストです。&lt;br /&gt;
&lt;br /&gt;
===== サスペンド/レジューム サービスファイルの統合 =====&lt;br /&gt;
&lt;br /&gt;
サスペンド/レジューム サービスファイルを統合すれば、様々なフェイズ（スリープ・レジューム）やターゲット（サスペンド・ハイバネート・ハイブリッドスリープ）でやることをひとつのフックで行うことができます。&lt;br /&gt;
&lt;br /&gt;
例と説明:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/wicd-sleep.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Wicd sleep hook&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
StopWhenUnneeded=yes&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
ExecStart=-/usr/share/wicd/daemon/suspend.py&lt;br /&gt;
ExecStop=-/usr/share/wicd/daemon/autoconnect.py&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=&amp;lt;nowiki&amp;gt;RemainAfterExit=yes&amp;lt;/nowiki&amp;gt;}}: 起動後、明示的に止められるまでサービスは常時 active になります。&lt;br /&gt;
* {{ic|1=&amp;lt;nowiki&amp;gt;StopWhenUnneeded=yes&amp;lt;/nowiki&amp;gt;}}: active のとき、サービスは sleep.target が停止した後に止められます。&lt;br /&gt;
* sleep.target は suspend.target, hibernate.target, hybrid-sleep.target から呼ばれ sleep.target 自身は StopWhenUnneeded サービスなので、タスクごとにフックが正しく起動・停止することが保証されています。&lt;br /&gt;
&lt;br /&gt;
==== 遅延ハイバネーション ====&lt;br /&gt;
&lt;br /&gt;
遅延ハイバネーションではスリープフックを利用して通常通りにサスペンドしますが、その後にハイバネーションを実行するタイマーをセットします。ハイバネーションを最初に実行しないためスリープに入るのが {{ic|systemctl hybrid-sleep}} よりも早くなります。ただし、&amp;quot;hybrid-sleep&amp;quot; とは違って、サスペンド中にハイバネーションを使うことで電源喪失から保護するようなことはできません。そのため遅延ハイバネーションはデスクトップなどよりもノートパソコンで使うほうが適しています。ハイバネーションが遅延されるため、サスペンド中はノートパソコンのバッテリーだけが使われ、それからハイバネーションが実行されます。バッテリーがなくなるまでサスペンドし続ける &amp;quot;hybrid-sleep&amp;quot; よりも消費電力を抑えることが可能です。ノートパソコンにハードディスクが搭載されている場合、ハイバネートするためにサスペンドから復帰したとき、ノートパソコンを数秒間は動かさないほうがよいでしょう。遅延ハイバネーションは消費電力だけでなくセキュリティに関しても利点があります (例: 完全なディスク暗号化を使っている場合)。サンプルスクリプトは [https://superuser.com/questions/298672/linuxhow-to-hibernate-after-a-period-of-sleep こちら] にあります。systemd のスリープフックについては [https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279 こちらの投稿] も参照してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/suspend-to-hibernate.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Delayed hibernation trigger&lt;br /&gt;
Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279&lt;br /&gt;
Documentation=https://wiki.archlinux.org/index.php/Power_management&lt;br /&gt;
Conflicts=hibernate.target hybrid-sleep.target&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
StopWhenUnneeded=true&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
Environment=&amp;quot;WAKEALARM=/sys/class/rtc/rtc0/wakealarm&amp;quot;&lt;br /&gt;
Environment=&amp;quot;SLEEPLENGTH=+2hour&amp;quot;&lt;br /&gt;
ExecStart=-/usr/bin/sh -c &#039;echo -n &amp;quot;alarm set for &amp;quot;; date +%%s -d$SLEEPLENGTH | tee $WAKEALARM&#039;&lt;br /&gt;
ExecStop=-/usr/bin/sh -c &#039;\&lt;br /&gt;
  alarm=$(cat $WAKEALARM); \&lt;br /&gt;
  now=$(date +%%s); \&lt;br /&gt;
  if [ -z &amp;quot;$alarm&amp;quot; ] || [ &amp;quot;$now&amp;quot; -ge &amp;quot;$alarm&amp;quot; ]; then \&lt;br /&gt;
     echo &amp;quot;hibernate triggered&amp;quot;; \&lt;br /&gt;
     systemctl hibernate; \&lt;br /&gt;
  else \&lt;br /&gt;
     echo &amp;quot;normal wakeup&amp;quot;; \&lt;br /&gt;
  fi; \&lt;br /&gt;
  echo 0 &amp;gt; $WAKEALARM; \&lt;br /&gt;
&#039;&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|Before}} と {{ic|Conflicts}} オプションはハイバネートでは動作させないようにするために必要です。そうしないと遅延ハイバネーションが実行されたときにサービスが2回実行されてしまいます。{{ic|WantedBy}} と {{ic|StopWhenUnneeded}} オプションはスリープの前に実行して復帰時に停止するように設定しています。サービスを[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
==== /usr/lib/systemd/system-sleep のフック ====&lt;br /&gt;
&lt;br /&gt;
Systemd は {{ic|/usr/lib/systemd/system-sleep/}} 内の全ての実行可能ファイルを実行するときに、2つの引数を渡します:&lt;br /&gt;
&lt;br /&gt;
* 引数 1: {{ic|pre}} か {{ic|post}}。マシンが停止するときと起動するとき。&lt;br /&gt;
* 引数 2: {{ic|suspend}} か {{ic|hibernate}} か {{ic|hybrid-sleep}}。呼び出されるものによる。&lt;br /&gt;
&lt;br /&gt;
systemd はスクリプトを（ひとつずつではなく）同時に実行します。&lt;br /&gt;
&lt;br /&gt;
カスタムスクリプトの出力は {{ic|systemd-suspend.service}}, {{ic|systemd-hibernate.service}}, {{ic|systemd-hybrid-sleep.service}} によって記録されます。出力を見るには systemd の [[Systemd#Journal|journal]] を使って下さい:&lt;br /&gt;
 # journalctl -b -u systemd-suspend&lt;br /&gt;
&lt;br /&gt;
{{Note|カスタムスクリプトを使うかわりに {{ic|sleep.target}}, {{ic|suspend.target}}, {{ic|hibernate.target}}, {{ic|hybrid-sleep.target}} を使ってユニットをスリープステートロジックにフックさせることもできます。}}&lt;br /&gt;
&lt;br /&gt;
カスタムスリープスクリプトの例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/system-sleep/example.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
case $1/$2 in&lt;br /&gt;
  pre/*)&lt;br /&gt;
    echo &amp;quot;Going to $2...&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
  post/*)&lt;br /&gt;
    echo &amp;quot;Waking up from $2...&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
esac}}&lt;br /&gt;
&lt;br /&gt;
スクリプトを実行可能にするのを忘れないで下さい:&lt;br /&gt;
 # chmod a+x /usr/lib/systemd/system-sleep/example.sh&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|7|systemd.special}} や {{man|8|systemd-sleep}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== 省電力設定 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|[[ノートパソコン#電源管理]]ではノートパソコンでの電源管理（特にバッテリー状態の監視）を説明しています。}}&lt;br /&gt;
&lt;br /&gt;
このセクションでは省電力機能を使用するのに必要な設定を扱います。コンピュータが AC 電源またはバッテリーで動作しているかに関わらず、ここに記載されているほとんど全ての機能には使用する価値があります。パフォーマンスへの影響は軽微ですが、大抵壊れているハードウェアやドライバーのためにデフォルトでは有効になっていません。電力の使用量を減らすことは熱を減らすことでもあり、[[Wikipedia:ja:インテル ターボ・ブースト・テクノロジー|動的なオーバークロック]]によって、最近の Intel や AMD の CPU ではパフォーマンスの向上につながることもあります。&lt;br /&gt;
&lt;br /&gt;
udev ルールなどを使ってスクリプトや省電力設定を自分で作成したい場合は以下の設定を参考にすることができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|以下で記述しているルールのほとんどは [[TLP]] などのツールで管理することもでき、ツールを使いながら自分でも管理するのは不得策です。}}&lt;br /&gt;
&lt;br /&gt;
=== オーディオ ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、オーディオの省電力機能はほとんどのドライバーで無効になっています。{{ic|power_save}} パラメータを設定することで有効にすることができます。アイドルモードに移行するまでの時間を秒数で指定します。1秒後にサウンドカードをアイドル状態にするには、Intel の場合、以下を作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/audio_powersave.conf|2=options snd_hda_intel power_save=1}}&lt;br /&gt;
&lt;br /&gt;
ac97 の場合は以下を使って下さい:&lt;br /&gt;
&lt;br /&gt;
 options snd_ac97_codec power_save=1&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サウンドカードの製造者や使われているカーネルドライバーの情報を取得するには、{{ic|lspci -k}} を実行してください。&lt;br /&gt;
* サウンドカードの電源状態を変更すると壊れたハードウェアでポップノイズがまじったり著しい遅延が発生することがあります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
HDMI の音声出力を無効化することで消費電力を下げることもできます。適切なカーネルモジュールを[[ブラックリスト]]に追加してください (例: {{ic|snd_hda_codec_hdmi}})。&lt;br /&gt;
&lt;br /&gt;
=== バックライト ===&lt;br /&gt;
&lt;br /&gt;
[[バックライト]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth ===&lt;br /&gt;
&lt;br /&gt;
[[Bluetooth]] を完全に無効化するには、{{ic|btusb}} と {{ic|bluetooth}} モジュールを[[カーネルモジュール#ブラックリスト|ブラックリスト]]に入れてください。&lt;br /&gt;
&lt;br /&gt;
一時的にだけ bluetooth をオフにするには、&#039;&#039;rfkill&#039;&#039; を使用します:&lt;br /&gt;
&lt;br /&gt;
 # rfkill block bluetooth&lt;br /&gt;
&lt;br /&gt;
もしくは udev ルールを使って:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/50-bluetooth.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# disable bluetooth&lt;br /&gt;
SUBSYSTEM==&amp;quot;rfkill&amp;quot;, ATTR{type}==&amp;quot;bluetooth&amp;quot;, ATTR{state}=&amp;quot;0&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== ウェブカメラ ===&lt;br /&gt;
&lt;br /&gt;
内蔵のウェブカメラを使わない場合、{{ic|uvcvideo}} モジュールを[[カーネルモジュール#ブラックリスト|ブラックリスト]]に入れてください。&lt;br /&gt;
&lt;br /&gt;
=== カーネルパラメータ ===&lt;br /&gt;
&lt;br /&gt;
このセクションでは {{ic|/etc/sysctl.d/}} の設定を使います。このディレクトリはカーネルの sysctl パラメータと対応するディレクトリです。詳しくは [http://0pointer.de/blog/projects/the-new-configuration-files The New Configuration Files] や、より正確な {{man|5|sysctl.d}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== NMI watchdog の無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Non-maskable interrupt|NMI]] watchdog はカーネルパニックを引き起こすハードウェアのハングアップをキャッチするデバッグ機能です。システムによっては大量の割り込みが発生するため、消費電力の増加につながっていることがあります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/disable_watchdog.conf|2=kernel.nmi_watchdog = 0}}&lt;br /&gt;
&lt;br /&gt;
もしくは起動の初期で完全に無効化するには[[カーネルパラメータ|カーネル行]]に {{ic|1=nmi_watchdog=0}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
==== ライトバック時間 ====&lt;br /&gt;
&lt;br /&gt;
仮想メモリのダーティなライトバック時間を増やすことでディスク I/O がまとめられて、断続的なディスクの書き込みが減って、消費電力が抑えられます。この値を60秒に設定するには (デフォルトは5秒です):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/dirty.conf|2=vm.dirty_writeback_centisecs = 6000}}&lt;br /&gt;
&lt;br /&gt;
ジャーナルをサポートしているファイルシステム (ext4 や btrfs など) でジャーナルコミットでも同じことをするには、[[fstab]] でオプションとして {{ic|1=commit=60}} を使用します。&lt;br /&gt;
&lt;br /&gt;
I/O パフォーマンスや省電力に影響する他のパラメータは [[sysctl#仮想メモリ]] を参照。&lt;br /&gt;
&lt;br /&gt;
==== Laptop Mode ====&lt;br /&gt;
&lt;br /&gt;
ラップトップモードの&#039;ノブ&#039;については[https://www.kernel.org/doc/Documentation/laptops/laptop-mode.txt カーネルドキュメント]を見て下さい。&#039;&#039;&amp;quot;このノブの適切な値は5秒です。&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/laptop.conf|2=vm.laptop_mode = 5}}&lt;br /&gt;
&lt;br /&gt;
=== ネットワークインターフェイス ===&lt;br /&gt;
&lt;br /&gt;
[[Wake-on-LAN]] は便利な機能ですが、利用しない場合はサスペンド中にマジックパケットが来るのを待つのに無駄な電力を消耗するだけです。全ての Ethernet インターフェイスで Wake-on-LAN を無効化:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/70-disable_wol.rules|2=ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;net&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, RUN+=&amp;quot;/usr/bin/ethtool -s %k wol d&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
全ての無線インターフェイスで省電力機能を有効にするには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/70-wifi-powersave.rules|2=ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;net&amp;quot;, KERNEL==&amp;quot;wlan*&amp;quot;, RUN+=&amp;quot;/usr/bin/iw dev %k set power_save on&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
上記の例では、{{ic|%k}} がマッチするデバイスのカーネル名を示します。例えば、ルールが {{ic|wlan0}} に適用可能とわかった場合、{{ic|%k}} は {{ic|wlan0}} に置き換えられます。特定のインターフェイスにだけルールを適用するには、パターン {{ic|eth*}} と修飾子 {{ic|%k}} を適当なインターフェイスの名前に置き換えて下さい。詳しくは、[http://www.reactivated.net/writing_udev_rules.html Writing udev rules] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Note|ここで、設定ファイルの名前は重要です。systemd v197 から {{ic|80-net-setup-link.rules}} によって[[ネットワーク設定#デバイス名|永続的なデバイス名]]が導入されたため、デバイスに {{ic|enp2s0}} というような名前で呼ばれるようになる前に適用されるように、ネットワークの powersave ファイルは辞書順で {{ic|80-net-setup-link.rules}} よりも前に来る名前を付けなくてはなりません。}}&lt;br /&gt;
&lt;br /&gt;
==== Intel ワイヤレスカード (iwlwifi) ====&lt;br /&gt;
&lt;br /&gt;
Intel 製ワイヤレスカードの省電力機能は {{ic|iwlwifi}} ドライバーに適切なパラメータを渡すことで有効にできます。{{ic|/etc/modprobe.d/iwlwifi.conf}} ファイルに以下の行を追加することで永続的に有効にできます:&lt;br /&gt;
&lt;br /&gt;
 options iwlwifi power_save=1 d0i3_disable=0 uapsd_disable=0&lt;br /&gt;
 options iwldvm force_cam=0&lt;br /&gt;
&lt;br /&gt;
上記の省電力オプションは実験的であり、システムが不安定になる可能性があります。&lt;br /&gt;
&lt;br /&gt;
=== バスパワーの管理 ===&lt;br /&gt;
&lt;br /&gt;
==== Active State Power Management ====&lt;br /&gt;
&lt;br /&gt;
コンピュータが [[Wikipedia:Active State Power Management|ASPM]] をサポートしているという信頼が得られなかった場合、起動時に無効化されます:&lt;br /&gt;
&lt;br /&gt;
 $ lspci -vv | grep ASPM.*abled\;&lt;br /&gt;
&lt;br /&gt;
ASPM は BIOS によって扱われるため、ASPM が無効化される理由は以下の通りです [https://wireless.kernel.org/en/users/Documentation/ASPM]:&lt;br /&gt;
&lt;br /&gt;
# BIOS が何らかの理由で ASPM を無効化した (コンフリクトが起こるから？)。&lt;br /&gt;
# PCIE が L0s 以外の ASPM を必要とする (L0s は無効化され L1 だけが有効化される)。&lt;br /&gt;
# ASPM について BIOS がプログラムされていない。&lt;br /&gt;
# BIOS にバグが存在する。&lt;br /&gt;
&lt;br /&gt;
コンピュータが ASPM をサポートしていると信じられる場合は、{{ic|1=pcie_aspm=force}} [[カーネルパラメータ]]を使うことで強制的にオンにすることができます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* ASPM を強制するとフリーズやパニックが発生することがあります。ASPM が動作しなかったときにオプションを戻す手段があるか確認してください。&lt;br /&gt;
* ASPM をサポートしていないシステムで強制させると消費電力が逆に上昇することがあります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|powersave}} に調整するには次を実行 (以下のコマンドは ASPM が有効になっていないと機能しません):&lt;br /&gt;
&lt;br /&gt;
 echo powersave | tee /sys/module/pcie_aspm/parameters/policy&lt;br /&gt;
&lt;br /&gt;
デフォルトでは以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/module/pcie_aspm/parameters/policy|[default] performance powersave}}&lt;br /&gt;
&lt;br /&gt;
==== PCI Runtime Power Management ====&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/pci_pm.rules|2=ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;pci&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==== デバイスの電源管理 ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;USB を含む&#039;&#039;、(ほぼ) 全てのデバイスの電源管理を有効化:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/dev_power_save.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Various subsystems runtime power management (by bus or class)&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEMS==&amp;quot;*&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Various subsystems power saving (by module)&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEMS==&amp;quot;*&amp;quot;, TEST==&amp;quot;parameters/power_save&amp;quot;, ATTR{parameters/power_save}=&amp;quot;1&amp;quot; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
影響を受けるデバイスを表示するには:&lt;br /&gt;
 ls /sys/bus/*/devices/*/power/control&lt;br /&gt;
 ls /sys/class/*/*/power/control&lt;br /&gt;
 ls /sys/module/*/parameters/power_save&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;USB を除く&#039;&#039;全てのシステムで電源管理を有効にするには、最初のルールをサブシステムごとのルールに置き換えます (/sys/bus/&#039;&#039;some_subsystem&#039;&#039;, /sys/class/&#039;&#039;some_subsystem&#039;&#039;):&lt;br /&gt;
 ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;some_subsystem&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== USB の自動サスペンド ====&lt;br /&gt;
&lt;br /&gt;
Linux カーネルは USB デバイスが使用されていないときに USB デバイスを自動的にサスペンドさせることができます。これによって電力を相当カットできるときもありますが、USB の省電力機能に対応していない USB デバイスではおかしな挙動が起こる可能性もあります (特に USB マウスやキーボード)。ホワイトリストとブラックリストでフィルタリングする [[udev]] ルールを使うことで問題は軽減されます。&lt;br /&gt;
&lt;br /&gt;
最も単純であまり役に立たない、全ての USB デバイスで自動サスペンドを有効にする例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/50-usb_power_save.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
自動サスペンドが動作するデバイスにだけ自動サスペンドを有効にするには、ベンダーとプロダクト ID でマッチングを行います (&#039;&#039;lsusb&#039;&#039; を使って値を取得):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/50-usb_power_save.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# whitelist for usb autosuspend&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{idVendor}==&amp;quot;05c6&amp;quot;, ATTR{idProduct}==&amp;quot;9205&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
もしくは、USB 自動サスペンドが使えないデバイスをブラックリストに入れて、他の全てのデバイスで自動サスペンドを有効にするには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/50-usb_power_save.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# blacklist for usb autosuspend&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTR{idVendor}==&amp;quot;05c6&amp;quot;, ATTR{idProduct}==&amp;quot;9205&amp;quot;, GOTO=&amp;quot;power_usb_rules_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
LABEL=&amp;quot;power_usb_rules_end&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
自動サスペンドに入るデフォルトのアイドル遅延時間は {{ic|usbcore}} [[カーネルモジュール]]の {{ic|autosuspend}} パラメータによって制御されています。遅延時間をデフォルトの2秒から5秒に設定するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/usb-autosuspend.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
options usbcore autosuspend=5&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|power/control}} と同じように、{{ic|power/autosuspend}} 属性を設定することで遅延時間はデバイスごとに細かく設定することができます。&lt;br /&gt;
&lt;br /&gt;
USB の電源管理に関する詳細は [https://www.kernel.org/doc/Documentation/usb/power-management.txt Linux カーネルドキュメント]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== SATA Active Link Power Management ====&lt;br /&gt;
&lt;br /&gt;
{{Note|以下の設定を行うとアイドル状態になっているドライブにアクセスするときに遅延が発生するようになります。AC 電源を使用するかどうかによって変えるべき設定です。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/hd_power_save.rules|2=ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;scsi_host&amp;quot;, KERNEL==&amp;quot;host*&amp;quot;, ATTR{link_power_management_policy}=&amp;quot;min_power&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|デバイスによっては SATA Active Link Power Management でデータが消失する可能性があります (例: [[Lenovo ThinkPad T440s|Lenovo T440s]] はこの問題を抱えていることが[http://lkml.indiana.edu/hypermail/linux/kernel/1401.2/02171.html 知られています])。バックアップを取っていない場合は設定を有効にしないでください。}}&lt;br /&gt;
&lt;br /&gt;
=== ハードディスクドライブ ===&lt;br /&gt;
&lt;br /&gt;
設定できるドライブのパラメータについては [[hdparm]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
多数のプログラムがディスクに頻繁に書き込みをおこなう場合は省電力は効率的ではありません。全てのプログラムを調査して、いつどのようにプログラムがディスクに書き込むを行うのか調べるのがディスクの使用量を減らす道です。{{Pkg|iotop}} を使えばどのプログラムがディスクに頻繁に書き込みしているかわかります。他のヒントは[[ソリッドステートドライブ#SSD の読み書きを最小化するヒント]]を見て下さい、ほとんどのヒントは SSD に限ったものではありません。&lt;br /&gt;
&lt;br /&gt;
[[Fstab#atime オプション|noatime]] オプションを設定するなどの小さなことも馬鹿にできません。十分な RAM がある場合、[[スワップ#Swappiness|swappiness]] を無効化したり制限することでディスクへの書き込みが減る可能性があります。&lt;br /&gt;
&lt;br /&gt;
=== CD/DVD のスピンダウン ===&lt;br /&gt;
&lt;br /&gt;
[[udisks]] を使用してしばらくしてから CD/DVD ロムをスピンダウンさせるには:&lt;br /&gt;
&lt;br /&gt;
 # udisks --inhibit-polling /dev/sr0&lt;br /&gt;
&lt;br /&gt;
== ツールとスクリプト ==&lt;br /&gt;
&lt;br /&gt;
=== スクリプトと udev ルールを使う ===&lt;br /&gt;
&lt;br /&gt;
systemd ユーザーは {{ic|systemctl suspend}} や {{ic|systemctl hibernate}} でサスペンドとハイバネートを行うことができ、{{ic|/etc/systemd/logind.conf}} で acpi イベントを処理することができるので、[[pm-utils]] と [[acpid]] を削除するということに興味を引かれるかもしれません。systemd が行えないことがたったひとつだけ存在します (systemd-204 現在): システムが AC 電源またはバッテリーで動作しているのかで別れる電源管理です。このギャップをなくすには、AC アダプタが抜き差しされたときにスクリプトを実行する [[udev]] ルールを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/powersave.rules|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;power_supply&amp;quot;, ATTR{online}==&amp;quot;0&amp;quot;, RUN+=&amp;quot;/path/to/your/script true&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;power_supply&amp;quot;, ATTR{online}==&amp;quot;1&amp;quot;, RUN+=&amp;quot;/path/to/your/script false&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;pm-powersave&#039;&#039; が使用しているのと同じスクリプトを使うことができます。実行可能属性を付与して別の所に保存する必要があります (例えば {{ic|/usr/local/bin/}})。}}&lt;br /&gt;
&lt;br /&gt;
powersave スクリプトのサンプル: [[powerdown]], [https://github.com/Unia/powersave powersave]。&lt;br /&gt;
&lt;br /&gt;
上記の udev ルールはちゃんと動作するはずですが、電源設定がサスペンドやハイバネートをした後に更新されない場合、以下の内容で {{ic|/usr/lib/systemd/system-sleep/}} にスクリプトを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/system-sleep/00powersave|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
case $1 in&lt;br /&gt;
    pre) /path/to/your/script false ;;&lt;br /&gt;
    post)       &lt;br /&gt;
	if cat /sys/class/power_supply/AC0/online | grep 0 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
	then&lt;br /&gt;
    		/path/to/your/script true	&lt;br /&gt;
	else&lt;br /&gt;
    		/path/to/your/script false&lt;br /&gt;
	fi&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
忘れずに実行可能属性を付与してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|あなたのノートパソコンでは AC0 が異なっている可能性があります。その場合は変更してください。}}&lt;br /&gt;
&lt;br /&gt;
=== 電源設定の表示 ===&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは USB や PCI デバイスの電源設定などのプロパティを表示します。全ての設定を見るには root 権限が必要なので注意して下さい。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
for i in $(find /sys/devices -name &amp;quot;bMaxPower&amp;quot;)&lt;br /&gt;
do&lt;br /&gt;
	busdir=${i%/*}&lt;br /&gt;
	busnum=$(&amp;lt;$busdir/busnum)&lt;br /&gt;
	devnum=$(&amp;lt;$busdir/devnum)&lt;br /&gt;
	title=$(lsusb -s $busnum:$devnum)&lt;br /&gt;
&lt;br /&gt;
	printf &amp;quot;\n\n+++ %s\n  -%s\n&amp;quot; &amp;quot;$title&amp;quot; &amp;quot;$busdir&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	for ff in $(find $busdir/power -type f ! -empty 2&amp;gt;/dev/null)&lt;br /&gt;
	do&lt;br /&gt;
		v=$(cat $ff 2&amp;gt;/dev/null|tr -d &amp;quot;\n&amp;quot;)&lt;br /&gt;
		[[ ${#v} -gt 0 ]] &amp;amp;&amp;amp; echo -e &amp;quot; ${ff##*/}=$v&amp;quot;;&lt;br /&gt;
		v=;&lt;br /&gt;
	done | sort -g;&lt;br /&gt;
done;&lt;br /&gt;
&lt;br /&gt;
printf &amp;quot;\n\n\n+++ %s\n&amp;quot; &amp;quot;Kernel Modules&amp;quot;&lt;br /&gt;
for mod in $(lspci -k | sed -n &#039;/in use:/s,^.*: ,,p&#039; | sort -u)&lt;br /&gt;
do&lt;br /&gt;
	echo &amp;quot;+ $mod&amp;quot;;&lt;br /&gt;
	systool -v -m $mod 2&amp;gt; /dev/null | sed -n &amp;quot;/Parameters:/,/^$/p&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== フタのスイッチのアクションの遅延 ===&lt;br /&gt;
&lt;br /&gt;
短期間に連続してフタのスイッチが反応した場合、&#039;&#039;logind&#039;&#039; はドッキングを検出するために90秒までサスペンドを遅延します [https://lists.freedesktop.org/archives/systemd-devel/2015-January/027131.html]。この遅延時間は systemd v220 から設定ができます [https://cgit.freedesktop.org/systemd/systemd/commit/?id=9d10cbee89ca7f82d29b9cb27bef11e23e3803ba]:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/logind.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
HoldoffTimeoutSec=30s&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== ノートパソコンをサスペンドする Fn キーが動作しない ===&lt;br /&gt;
&lt;br /&gt;
{{ic|logind.conf}} をどう設定してもスリープボタンが動作しない場合 (ボタンを押しても syslog にメッセージすら表示されない)、おそらく logind がキーボードデバイスを監視していません [https://lists.freedesktop.org/archives/systemd-devel/2015-February/028325.html]。次のコマンドを実行してください:&lt;br /&gt;
 # journalctl | grep &amp;quot;Watching system buttons&amp;quot;&lt;br /&gt;
すると以下のような表示がされます:&lt;br /&gt;
 May 25 21:28:19 vmarch.lan systemd-logind[210]: Watching system buttons on /dev/input/event2 (Power Button)&lt;br /&gt;
 May 25 21:28:19 vmarch.lan systemd-logind[210]: Watching system buttons on /dev/input/event3 (Sleep Button)&lt;br /&gt;
 May 25 21:28:19 vmarch.lan systemd-logind[210]: Watching system buttons on /dev/input/event4 (Video Bus)&lt;br /&gt;
キーボードデバイスがないことに気づいて下さい。したがってキーボードデバイスの ATTRS{name} を取得します [http://systemd-devel.freedesktop.narkive.com/Rbi3rjNN/patch-1-2-logind-add-support-for-tps65217-power-button]:&lt;br /&gt;
 # udevadm info -a /dev/input/by-path/*-kbd&lt;br /&gt;
 ...&lt;br /&gt;
 KERNEL==&amp;quot;event0&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 ATTRS{name}==&amp;quot;AT Translated Set 2 keyboard&amp;quot;&lt;br /&gt;
カスタム udev ルールを作成して &amp;quot;power-switch&amp;quot; タグを追加:&lt;br /&gt;
{{hc|/etc/udev/rules.d/70-power-switch-my.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
ACTION==&amp;quot;remove&amp;quot;, GOTO=&amp;quot;power_switch_my_end&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;input&amp;quot;, KERNEL==&amp;quot;event*&amp;quot;, ATTRS{name}==&amp;quot;AT Translated Set 2 keyboard&amp;quot;, TAG+=&amp;quot;power-switch&amp;quot;&lt;br /&gt;
LABEL=&amp;quot;power_switch_my_end&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
サービスを再起動してルールをリロードしてください:&lt;br /&gt;
 # systemctl restart systemd-udevd&lt;br /&gt;
 # udevadm trigger&lt;br /&gt;
 # systemctl restart systemd-logind&lt;br /&gt;
これで syslog に {{ic|Watching system buttons on /dev/input/event0}} と表示されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.thinkwiki.org/wiki/How_to_reduce_power_consumption ThinkWiki:How to reduce power consumption]&lt;br /&gt;
* [http://ivanvojtko.blogspot.sk/2016/04/how-to-get-longer-battery-life-on-linux.html How to get longer battery life on Linux]&lt;/div&gt;</summary>
		<author><name>Soracqt</name></author>
	</entry>
</feed>