不要なサービスを無効化してLinuxの起動時間を短縮する方法
最近のOSは、バックグラウンドで動作する多数のサービスによって肥大化しがちです。これらのサービスがCPUに大きな負荷をかけることは少ないものの、起動時間の長期化やメモリ使用量の増加につながります。幸い、オープンソースのOSでは、自分にとって必要なものとそうでないものを自由に判断し、不要なものを無効化したり削除したりできます。本記事では、不要なサービスを無効化してLinuxの起動時間を改善する方法を解説します。
注意: ここではサービスを「削除」ではなく「無効化」する方法を紹介します。無効化の方がシステムを恒久的に壊してしまうリスクが低く、何か不具合に気づいた場合も、再度有効化するだけで元の状態に戻せるためです。
各サービスの読み込み時間を分析する
多くのLinuxディストリビューションは、デフォルトでSystemdを採用しています。Systemdに含まれるユーティリティの中には、システムの起動速度を分析できるプログラムがあり、起動にかかる総時間や各サービスの読み込み時間を確認できます。ただし、一部のサービスは並列で読み込まれるため、あるサービスに2秒、別のサービスに3秒かかっていたとしても、合計で5秒必要というわけではありません。実際にはそれより短い時間で済むことが多いです。
ターミナルエミュレータを開き、次のコマンドを実行します。
systemd-analyze
このコマンドでは、Linuxカーネルとコアシステムサービスの初期化にかかった時間が表示されます。デスクトップのアニメーションやユーザーアプリケーションの読み込み完了までの時間は含まれない点に注意してください。
グラフィカルインターフェースの初期化に要した時間を確認したい場合は、次のコマンドを使用します。
systemd-analyze critical-chain graphical.target
グラフィカルターゲットに到達するまでの一連のサービスチェーンが表示されます。有用な情報ですが、これはあくまで技術的なマイルストーンを示すものであり、デスクトップが完全にアイドル状態になる時点とは限りません。一部のバックグラウンドコンポーネントは、その後も読み込みを続けることがあります。
注意: デスクトップ環境上で自動起動するプログラムは、通常、デスクトップ固有の自動起動設定やsystemdのユーザーサービスによって管理されています。
そして、本チュートリアルの目的においておそらく最も役立つのが、次のコマンドです。
systemd-analyze blame
表示されたリストは矢印キーまたはPage Up/Page Downキーでスクロールでき、qキーを押すと終了できます。
systemctlで不要なサービスを無効化する
先ほどの出力例を見ると、snapdのようなサービスは読み込みに数秒かかっていることがわかります。SSD搭載環境では誤差のようなものですが、従来型のHDDでは複数秒単位になり、起動時間全体に大きく影響します。
たとえば、Snapパッケージ(コンテナ化されたアプリケーション)へのアクセスを提供するsnapdサービスが不要であれば、次のコマンドで無効化できます。
sudo systemctl disable snapd.service
ただし、再起動後も特定の条件ではsnapdが起動していることがあります。これはsnapdがソケットアクティベーション(socket activation)を使用しており、サービス自体が無効化されていても、要求に応じてオンデマンドで起動する仕組みを持つためです。
関連するユニットは、次のコマンドで確認できます。
systemd-analyze blame | grep snap
これにより、起動時にどのSnap関連ユニットが動作しているのかを特定できます。
ソケットアクティベーション方式のサービスへの対処法
snapdをはじめとする一部のサービスは、ソケットアクティベーションを採用しています。これは、サービスが無効化されていても、何らかのプロセスが通信を試みると起動してしまうことを意味します。
再起動後もsnapdが表示され続ける場合は、snapd.socketやsnapd.seeded.serviceなどの関連ユニットが原因の可能性があります。こうしたケースでは、サービスとソケットの両方を「マスク(mask)」する方が効果的です。
sudo systemctl mask snapd.service
sudo systemctl mask snapd.socket
マスクするとサービスは完全にブロックされ、依存関係やソケットからも起動できなくなります。ただし、この手法は慎重に使用してください。特に、システムアップデートやアプリケーションをSnapパッケージに依存しているディストリビューションでは注意が必要です。
また、「disable(無効化)」と「mask(マスク)」を混同しないようにしましょう。無効化はsystemdに対して自動起動しないよう指示するだけですが、マスクはサービスの起動そのものを完全に防ぎます。ほとんどの場合は無効化で十分であり、マスクは執拗に再起動してくるサービスや、明らかに不要なサービスに対して有効な手段です。
さらに、環境によっては、以下のようなサービスも安全に無効化できる場合があります。
avahi-daemon.service
ModemManager.service
thermald.service
ただし、無効化する前に必ずそのサービスの役割を調べてください。デスクトップ環境では不要なサービスでも、ノートPCやサーバーでは不可欠な場合があります。
まとめ
不要なサービスを無効化することで、起動時間を短縮し、システムリソースを解放できます。特に従来型のHDDを使用しているシステムではその効果が顕著です。最新のSSD環境であっても、使わないサービスを整理しておけば、システムをクリーンかつ効率的な状態に保てます。
なお、StacerなどのGUIツールでもサービス管理は可能ですが、機能が限定的だったり情報が古かったりすることも少なくありません。ディストリビューションに依存せず、一貫性のある正確な管理を行うなら、systemctlコマンドラインツールが最も信頼できる選択肢と言えるでしょう。
-
Linuxのchownコマンドでファイル・ディレクトリの所有権を変更する方法
Linuxシステムでは、すべてのファイルに「所有者」と「グループ所有者」が紐付けられています。適切な権限を持っていない場合、ファイルやディレクトリへのアクセスや編集は行えません。そんなときに役立つのが、所有者を変更できる「chown(change owner)」コマンドです。この記事では、chownコマンドの基本的な使い方から応用的なテクニックまで、具体例を交えてわかりやすく解説します。chownコマンドの基本構文chownコマンドは、以下の構文で使用します。sudo chown [新しい所有者]:[新しいグループ所有者] ファイル名ファイルの現在の権限を確認する所有者やグループを変更する前に
-
LinuxにDOSBoxをインストールして懐かしのDOSゲームを快適にプレイする方法
DOOMなど往年のDOSゲームを持っているなら、エミュレーターを使えば今のPCでも楽しむことができます。その中でも最高のDOSエミュレーターとして名高いのが「DOSBox」です。しかし、多くの入門ガイドはアプリのインストール方法と基本的なコマンドをいくつか紹介するだけで終わっており、初心者にはハードルが高く、DOS経験者にとっても意外な落とし穴が待っています。 このガイドでは、LinuxへのDOSBoxのインストール方法だけでなく、Cドライブを自動的にマウントする設定まで詳しく解説します。さらに、DOSコマンドが苦手という初心者のために、操作を助けてくれる定番ソフトウェアのおすすめもご紹介し