この記事ではLinuxのSystemdが何をやっているのかを初学者の身から同じく初学者の仲間の皆さんに解説していきたいと思います。
Linux起動順序は下図のような順序で起動していきます。
ちなみにこのLinuxのブートプロセスを理解することはトラブルシューティングを行う際に
重要になってくるらしいのでLinuxをお仕事で触わられる方は、一緒に勉強していきましょう。
systemdとは一言でいうと、システム管理を担うソフトウェア群のことです。
これだけでは何を言ってるのかさっぱりなので解説していきます。
さて、Systemdに関してですが一度はLinuxを触ったことがある方なら一度は目にしてるかと思います。
下記のようなコマンドを使用したことがあるはずです。
コマンド
systemctl start httpd.service
今回指定したのはhttpデーモンすなわち、webサーバーを実際に立ち上げるコマンドです。
これにより、ブラウザのUrl から自身のホストipアドレスでアクセスすることができ、私たちが日常的に目にするwebサイトを使用することができるようになります。
実際には私たちが今アクセスしているmiracle-jobのサイトを利用するためには、
データベースサーバーや名前解決を行うDNSサーバー、phpやrubyといったプログラムを
動かすためのAPサーバーの起動なども必要になってくるのですが、これらすべてのサーバーを起動したり、停止したりさせているのがこのsystemdになります。
すごく重要なソフトウェア群になりますね。
そして、これらのサーバーを起動するのに必要なプロセスもsystemdはまとめて管理していてくれています。
例えば、webサーバーはネットワークの通信があってこそ成り立つものになるので
webサーバーを立ち上げる前にネットワークのプロセスを起動するといった形です。
このように依存関係の管理もそれぞれしてくれているのです。
さてこのようにプロセスもとい、デーモンの管理をしているSystemdですが、実はこれだけではなく
もっとたくさんのことを管理していたりします。
例えば、私たちが今目にしているディスプレイはGUIですが、
そのGUIを使用して起動するかどうかさえSystemdのターゲットを変更することによって切り替えることができます。
設定コマンドは下記になります。
コマンド
systemctl set-default (ターゲット名).target
それぞれのターゲット名とその説明は下記になります。
|
poweroff.target |
システムをシャットダウンし、電源を切ります。 |
|
rescue.target |
レスキューシェルを設定します。 |
|
multi-user.target |
非グラフィカルなマルチユーザーシステムを設定します。 |
|
graphical.target |
グラフィカルなマルチユーザーシステムを設定します。 |
|
reboot.target |
システムをシャットダウンして再起動します。 |
このように、パソコンをいろんな仕方で起動することができるようになります。
現在のターゲット名を確認するコマンドは下記になります。
コマンド
systemctl get-default
おそらく、マルチーユーザーでグラフィカルターゲットになっているかと思います。
このようにデーモンの管理以外にもSystemdはいろいろ管理しており、他にもファイルシステムのマウントや各種システムの設定などを行っています。
この設定ファイルが書かれたディレクトリの場所は下記になります
① /usr/lib/systemd/system/
システムのデフォルトの設定
② /etc/systemd/system/
ユーザ独自設定(管理者が作成・管理するUnitの設定ファイル)
この設定ファイルに書かれている順番等でそれぞれのシステムを起動していき
依存関係をしっかり解決したうえで私たちが普段利用するようなOSの全般的なシステムが利用可能になります。
今回systemdの簡単な説明は以上になります。
Unitなどのファイルの設定の説明等は省きましたが参考にさせていただいたサイト様を下記に
記載しておきますので興味があれば閲覧してみてください。
https://qiita.com/yuzo_____/items/3dadff33556502b1b7f5>
systemdとは - 意味をわかりやすく - IT用語辞典 e-Words