だからシステムサービスファイルを作成しました。マンジャロ Linux2つのシェルコマンドを実行して、実行時にいくつかのカーネルパラメータを設定して、カスタムスリープ操作を有効にします。
注:これはドイツのコンピュータ雑誌からのヒントです。もともとはシェルコマンドをfileに入れることになっていましたが、/etc/rc.local
systemdサービスを使って作成しようとしました。もう使われないと思われるのでrc.local
新しいことを学びたいです。
下から私のサービスファイルが/etc/systemd/system/power-savings.service
。命令が2つなのでExecStart
選択しましたType=oneshot
。
[Unit]
Description=Enable custom power saving actions provided by c't magazine
# Quelle(n): c't 25/2016, S. 77
# c't 26/2016, S. 12
[Service]
Type=oneshot
# SATA Link Power Management aktivieren
ExecStart=/usr/bin/sh -c 'for I in /sys/class/scsi_host/host?/link_power_management_policy; do echo min_power > $I; done'
# Energieverwaltung für den Audiocodec aktivieren
ExecStart=/usr/bin/sh -c 'echo 1 > /sys/module/snd_hda_intel/parameters/power_save'
[Install]
WantedBy=multi-user.target
以下でサービスファイルを確認しました。
$ sudo systemd-analyze verify /etc/systemd/system/power-savings.service
その後、次のコマンドを使用してデーモンを再ロードしました。
$ sudo systemctl daemon-reload
私はそれをアクティブにします:
$ sudo systemctl enable power-savings.service
その後、サービスを実行します。
$ sudo systemctl start power-savings.service
効果がありました!カーネルパラメータが設定されました。
ただし、システムの再起動後もサービスが適用されないようです。サービスのステータスは成功としてマークされていますが...
$ systemctl status power-savings.service
Process: 412 ExecStart=/usr/bin/bash -c echo 1 > /sys/module/snd_hda_intel/parameters/power_save (code=exited, status=0/SUCCESS)
Process: 404 ExecStart=/usr/bin/bash -c for I in /sys/class/scsi_host/host?/link_power_management_policy; do echo min_power > $I; done (code=exited, status=0/SUCCESS)
Main PID: 412 (code=exited, status=0/SUCCESS)
ただし、カーネルパラメータは設定されていません。したがって、私のサービスはユーザーセッション中にのみ機能します。残念ながら、システムの起動中は正常に動作しません。
私が逃した部分がありますか?これらのいくつかまたはAfter
指示が必要ですかRequire
?ExecStart
命令で実際に何が起こっているのかをデバッグするにはどうすればよいですか?
ベストアンサー1
私の問題の詳細を調べている間、Arch Linuxコミュニティで興味深い声明を見つけました。存在するこの投稿ユーザーカールソン 65私と似たようなことをしようとしています。
ディスカッションは私を次にリダイレクトします。記事これについてtmpfiles.d
考えられる解決策は、パイプやリダイレクトを使用する代わりにファイルに値を書き込むことです。しかし、この記事では興味深い点が1つあります。ノート:
/sys
この方法では、次の理由でオプションを設定できません。systemd-tmpファイル - 設定適切なデバイスモジュールがロードされる前にサービスを実行できます。
私たちのプロジェクトの共通点は、どちらも/sys/...
システムの起動中に作成を試みることです。この事実はなぜ機能しないのかという質問に対する答えです。