システムの起動中にシステムサービスが機能しません。

システムの起動中にシステムサービスが機能しません。

だからシステムサービスファイルを作成しました。マンジャロ Linux2つのシェルコマンドを実行して、実行時にいくつかのカーネルパラメータを設定して、カスタムスリープ操作を有効にします。

注:これはドイツのコンピュータ雑誌からのヒントです。もともとはシェルコマンドをfileに入れることになっていましたが、/etc/rc.localsystemdサービスを使って作成しようとしました。もう使われないと思われるので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指示が必要ですかRequireExecStart命令で実際に何が起こっているのかをデバッグするにはどうすればよいですか?

ベストアンサー1

私の問題の詳細を調べている間、Arch Linuxコミュニティで興味深い声明を見つけました。存在するこの投稿ユーザーカールソン 65私と似たようなことをしようとしています。

ディスカッションは私を次にリダイレクトします。記事これについてtmpfiles.d考えられる解決策は、パイプやリダイレクトを使用する代わりにファイルに値を書き込むことです。しかし、この記事では興味深い点が1つあります。ノート:

/sysこの方法では、次の理由でオプションを設定できません。systemd-tmpファイル - 設定適切なデバイスモジュールがロードされる前にサービスを実行できます。

私たちのプロジェクトの共通点は、どちらも/sys/...システムの起動中に作成を試みることです。この事実はなぜ機能しないのかという質問に対する答えです。

おすすめ記事