logind.confのマニュアルページ は次のように述べています。
IdleAction =
システムがアイドル状態のときに実行するアクションを構成します。 「ignore」、「poweroff」、「reboot」、「halt」、「kexec」、「suspend」、「hibernate」、「hybrid-sleep」、「suspend-then-hibernate」、「lock」のいずれかを取ります。デフォルトは「無視」です。
kexec
の値がどこにも説明されているのを見たことがありません。ここで正確にkexec
は何をしますか?
実行する同等の kexec(8)
コマンドラインはありますか?
とにかく、システムがアイドル状態のときに新しいカーネルをホットリブートすると便利な場合はどのような場合ですか?
はい、新しいカーネルにkexec
するために使用できるkexec
コマンドラインツールがあります。
ユーザーの観点から見ると、kexec
の使用はreboot
の使用とほぼ同じですが、現在のカーネルが新しいカーネルをロードして実行を開始する(BIOS、ファームウェアをバイパスする)ため、高速になる傾向があります、ブートローダーなど)
Logindが "kexec"(または "reboot")などのアイドルアクションを提供するポイントは、システムを常に最新の状態に保つのに役立ちます。これは、カーネルのアップグレードの場合、通常、再起動が必要です。アイドル検出は、いつシステムを再起動するのが良いか(うまくいけば、それほど大きな混乱を引き起こさない時間に)を把握し、頻繁に再起動するのに役立ちます(十分な頻度でアイドル状態であると想定)は、パッケージマネージャーが更新されたカーネルをインストールした後、それほど長くないで新しいカーネルで起動することを保証します。
もちろん、これはすべてのユーザーが同意する設定ではないため、このオプションのデフォルト設定ではありません(デフォルトは「何もしない」であり、何もしません...)。
kexec
アクションが正確に何をトリガーするかを理解するには、systemctl kexec
と同様の systemctl reboot
を調べます。そのドキュメントには次のように書かれています。
kexecを介してシステムをシャットダウンして再起動します。これはsystemctl start kexec.target --job-mode = replace-irreversibly --no-blockと同等です。
したがって、これは特別な kexec.target を通過します。これは通常、 require a systemd-kexec.service に構成され、次に 呼び出しkexec
引数を持つ/usr/lib/systemd/systemd-shutdown
ツール(systemctl --force kexec
を介して、それは判明します...)。
さらに進むには、ソースコードを確認する必要があります。systemd-shutdown kexec
は単純に kexec -e
を使用して再起動しようとし、ロジックを「それが失敗した場合、通常の再起動。
kexec(8) のマニュアルページを見ると、kexecの再起動を実行するために必要なのはkexec -e
だけであることがわかります。 systemdが統合するすべてのもの。
欠落している他の部分は、起動カーネルをメモリにロードする部分、実際の実行が機能するようにkexec -l
を実行する部分です。それは従うべきもう一つのウサギの穴です。読者への演習として(またはおそらく、ここU&Lでの別の質問にはかなり適切です)