システムの起動速度を大幅に向上させる5つの重要なsystemdの調整
Linuxユーザー全員がシステムの起動速度にこだわっているわけではありませんが、個人的には高速でクリーンな起動を見るのが大好きです。SSDを使用していても、ボトルネックが発生して動作が遅くなることがあります。Systemdには、こうした遅延の原因を特定して解決するためのさまざまなツールが用意されています。少し調整するだけで、安定性を犠牲にすることなく起動時間を大幅に短縮できました。
これらの変更の真のメリットは、ストップウォッチの秒数を短縮するだけではありません。システムの高速化により応答性が向上し、貴重な待ち時間を節約できます。
離陸プロセスにおける弱点の特定
systemd-analyze を使用してブートパフォーマンスを追跡する
スピードを上げる前に、何がスピードを低下させているのかを知る必要があります。 systemd-analyze カーネルとユーザー空間の初期化にかかる時間。起動時間の概要が分かります。 systemd-analyze blame 起動にかかった時間順に並べられたサービスの内訳が表示されます。設定ミスによる隠しプログラムや、普段あまり使わないプログラムなど、真の原因はここにあることが多いです。
この分析を複数回実行することで、外れ値と一貫性を把握できます。デバイス検出により断続的に負荷が急増するサービスもあれば、常に負荷が高いサービスもあります。最も負荷の高いサービスに焦点を当てることで、最小限の労力で最大限の改善を実現できます。私は通常、変更を加える前に出力のコピーを保存し、進捗状況を客観的に測定できるようにしています。
使う価値もある systemd-analyze critical-chainは、起動シーケンスにおける依存関係の順序を示します。他の重要なタスクの妨げとなるサービスは、順序変更や無効化の有力な候補です。このツールを使えば、推測による調整から、情報に基づいた調整へと移行し、起動の遅延を真に短縮できます。
バックグラウンドで実行されているサービスを減らす
実際に使用しないサービスを無効にします。
時間のかかるタスクを特定したら、次のステップは不要なタスクを減らすことです。 多くのLinuxディストリビューションでは デフォルトで有効になっているサービスは、すべてのユーザーにとって必ずしも必要ではない場合があります。例えば、プリンタードライバーやBluetoothマネージャーは、プリンターやBluetoothデバイスを搭載していないデバイスでもバックグラウンドで実行されることがよくあります。これらのサービスを無効にすることで、起動時の貴重な時間を節約できます。
これを管理する最も簡単な方法は、コマンドを使用することです systemctl disable に続けてサービス名を指定します。これにより、起動時にサービスが実行されないようにしつつ、必要に応じて手動で起動することができます。絶対に使用しないサービスの場合は、次のコマンドを使用します。 systemctl mask さらに一歩進んで、それらを完全にブロックします。systemd が実行するプログラムが少なければ少ないほど、マシンが使用可能な状態になるまでの時間が短くなります。
サービスをむやみに無効にしないでください。サービスが何をしているか、また他のどのサービスがそのサービスに依存しているかをよく確認してください。変更を加える前に、コンピューターのバックアップを取ることをお勧めします。
もちろん、これには注意が必要です。重要な機能を無効にすると、頼りにしている機能が動作しなくなる可能性があるため、一度に1つずつ変更し、変更ごとにテストすることをお勧めします。数日かけて、システムを不安定にすることなく、よりスムーズで高速なブートプロファイルを作成できるようになります。
Systemdの並列処理を活用する
依存関係を最適化して起動を高速化する
systemd が従来の構成システムに対して持つ利点の一つは、サービスを並列起動できることです。各プログラムの読み込みを待ってから次のプログラムを起動するのではなく、独立したプログラムを同時に実行します。これにより、CPUとディスクの使用効率が向上し、必然的に処理速度が向上します。重要なのは、サービスが不必要に相互にブロックしないように、依存関係を正しく定義することです。
依存関係は次のコマンドで確認できます systemctl list-dependencies あるいは、モジュールファイルを直接確認することもできます。サービスが実際には必要のないものを待機していることに気づいたら、その設定を変更できます。次のようなディレクティブを追加します。 After= أو Requires= 他のサービスと比較してサービスの開始時間を調整します。不要な依存関係を削除することで、アイドル待機を防ぎ、並列処理をより有効に活用できます。
もう一つのコツは、一部のサービスに対してソケットアクティベーションを有効にすることです。こうすることで、systemdは起動のたびにサービスを起動するのではなく、ソケットにアクセスした場合にのみサービスを起動します。これにより起動時間が短縮されるだけでなく、バックグラウンドでのシステムリソースの使用量も削減されます。正しく設定すれば、より高速で軽量なシステムを実現できます。
速度低下の原因となるサービスを非表示にする
非表示にしたものを再度有効にしないように注意してください。
サービスを無効化するだけでは不十分な場合があります。別のパッケージや依存関係のアップデートによってサービスが再び有効化される可能性があるためです。サービスを非表示にすることは、本質的にサービスを /dev/null そのため、誤って起動されることがありません。これは、セットアップに必須ではないことが分かっているサービスに特に役立ちます。例えば、選択したネットワークマネージャーと競合するネットワークドライバーなどがその好例です。
サービスを非表示にするには、次のコマンドを使用します。 systemctl mask モジュール名を続けて入力します。これで、他のプロセスがそのモジュールを実行しようとしても、systemdは拒否します。いつでも気が変わったら、次のコマンドで簡単に非表示を解除できます。 systemctl unmask不要なサービスがブート シーケンスに再表示されないので安心です。
欠点は、間違ったサービスを非表示にすると混乱を招く可能性があることです。特に、他のサービスが間接的にそのサービスに依存している場合はなおさらです。そのため、私は非表示にする前に必ず依存関係ツリーを再確認しています。しかし、正しく非表示にすれば、システムはアップデート後も常に最適な状態を維持できます。
デスクトップセッションの開始方法を改善する
ディスプレイマネージャーを編集してログイン速度を上げる
デスクトップユーザーにとって、起動プロセスの最終段階は多くの場合、グラフィカルセッションです。GDM、LightDM、SDDMなどのディスプレイマネージャーは、起動時間を増加させる可能性があります。これらの設定を変更したり、より軽量なバージョンに切り替えたりすると、顕著な違いが現れる場合があります。例えば、LightDMは、比較的低スペックのハードウェアでは、より高スペックのディスプレイマネージャーよりも高速になる傾向があります。
セッション設定で自動的に起動するアプリケーションも確認する価値があります。多くのデスクトップ環境では、小さなヘルパーアプリケーション、アップデータ、クラウド同期クライアントがデフォルトで実行されます。これらのアプリケーションを実際に使用するものだけに減らすことで、デスクトップの起動が速くなるだけでなく、ログイン後の煩雑さも軽減されます。これはシステムサービスを無効にするのと同じ原理ですが、ユーザーレベルで適用されます。
システムがグラフィカル環境とマルチユーザー環境の間をどのように遷移するかを試してみるのも良いでしょう。デスクトップの読み込み後まで特定のサービスを遅らせることで、使用可能なセッションへのアクセスを優先できます。このような小さな調整が積み重なることで、遅い起動が目に見えてスムーズになることもあります。
systemdの変更が日常的な使用に役立つ理由
これらの調整の真のメリットは、数秒の節約だけではありません。起動が速いシステムは、応答性が高く、待ち時間が短くなります。サービスを分析、無効化、非表示、そして微調整することで、ニーズに合わせてよりスムーズなエクスペリエンスを実現できます。何か問題が発生した場合、変更は簡単に元に戻せますが、一度設定すれば、そのまま維持される傾向があります。私にとって、これらの小さなメリットは日々積み重なり、その見返りとして、Linuxシステムが期待通りの速さで動作するようになりました。
コメントは締め切りました。