このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

プロセス制御システム(systemd)ターゲット

プロセス制御システム(systemd)は、以下の4部に分けて解説しています。

ターゲットの概要

 SysVinitでは、OSの動作モードをランレベルで表現していました。ランレベルは、システムの状態を0から6までの数値で表現し、各ランレベルは異なるシステム状態を示します。例えば、ランレベル0はシステムのシャットダウン、ランレベル3はマルチユーザー環境、ランレベル5はGUI環境、ランレベル6は再起動を示します。

 一方、systemdでは、OSの動作モードをターゲット(target)と呼びます。ターゲットは、システムの特定の状態を定義するために使用されるUnitの一種です。ターゲットは他のUnitをグループ化し、特定のシステム状態を達成するために必要な依存関係を管理します。ターゲットは、SysVinitのランレベルに相当する概念ですが、より柔軟で詳細な制御が可能です。

主なsystemdのターゲット

ターゲット説明ランレベル
default.targetシステムのデフォルトのターゲット。通常のシステム起動時に使用される。
poweroff.targetシステムをシャットダウンし、電源を切る。0
rescue.targetレスキューモードで起動。基本的なシステム修復作業を行うための最小限の環境を提供。1/S/s
multi-user.targetマルチユーザーモードで起動。ネットワークサービスを含む、GUIなしの完全なテキストベースのシステム。(マルチユーザーモード / CUI)2/3/4
graphical.targetマルチユーザーモードで起動。グラフィカルユーザーインターフェース(GUI)を含む完全なシステム。(マルチユーザーモード / GUI)5
reboot.targetシステムを再起動する。6
emergency.target緊急モードで起動。システムの最小限の環境を提供し、他のほとんどのサービスを無効にする。rootユーザーのみログインできる状態。(緊急モード)
主なsystemdのターゲット

default.targetファイル

 default.targetファイルはリンクファイルであり、Linuxを起動したときのデフォルトのターゲットを決定します。このファイルのリンク先のターゲットファイルにより、システムの起動モードが決まります。

systemctlコマンド

 systemctlコマンドは、systemdで管理されるシステムおよびサービスマネージャを制御するためのコマンドです。

【構文】
systemctl サブコマンド [対象Unit]

systemctlコマンドの主なサブコマンド

サブコマンド説明
get-default現在のデフォルトターゲットを表示する。systemctl get-default
set-default ターゲット名デフォルトターゲットを指定したターゲットに設定する。systemctl set-default multi-user.target
isolate ターゲット名指定したターゲットに切り替える。既存のターゲットと依存関係を終了し、新しいターゲットの依存関係を開始する。systemctl isolate rescue.target
systemctlコマンドの主なサブコマンド

default.targetの操作

1.default.tarrgetファイルのリンク先を確認します。

・「systemctl get-default」コマンドを実行します。

default.tarrgetのリンク先が「graphical.target」であることが確認できます。

user01@ubuntu-vm:~$ systemctl get-default
graphical.target
2.default.tarrgetファイルのリンク先を変更します。

・「systemctl set-default rescue.target」コマンドを実行し、「systemctl get-default」でターゲットが変更されていることを確認します。

 default.tarrgetファイルのリンク先を「rescue」ターゲットに変更します。パスワードの入力が求められたら、パスワードを入力します。

user01@ubuntu-vm:~$ systemctl set-default rescue.target
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/rescue.target.
user01@ubuntu-vm:~$ systemctl get-default 
rescue.target
3.システムを再起動します。

ターゲットが変更されていることを確認するために、システムを再起動します。

・「shutdown -r now」コマンドを実行します。

user01@ubuntu-vm:~$ shutdown -r now
4.rescue.targetでの起動

・「rootユーザー」のパスワードを入力します。

5.ターゲットをgraphical.targetに戻します。

・「systemctl set-default graphical.target」コマンドを実行します。

root@ubuntu-vm:~# systemctl systemctl set-default graphical.target

実際の出力は下図となります。

・「systemctl get-default」コマンドを実行します。

root@ubuntu-vm:~# systemctl get-default
graphical.target

・「exit」コマンドを実行します。

graphical.targetで起動します。

root@ubuntu-vm:~# systemctl get-default graphical.target

実際の出力は下図となります。

6.GUIのログイン画面

GUIのログイン画面に戻ります。

まとめ

 systemdでは、OSの動作モードをターゲットとして管理します。ターゲットはシステムの特定の状態を定義し、必要なサービスや依存関係をグループ化します。default.targetファイルは、システム起動時のデフォルトのターゲットを決定するリンクファイルであり、systemctlコマンドを使用して確認および変更が可能です。

ターゲット説明
default.targetシステムのデフォルトのターゲット。通常のシステム起動時に使用される。
poweroff.targetシステムをシャットダウンし、電源を切る。
rescue.targetレスキューモードで起動。
multi-user.targetマルチユーザーモードで起動。
graphical.targetグラフィカルユーザーインターフェース(GUI)を含む完全なシステム。
reboot.targetシステムを再起動する。
emergency.target緊急モードで起動。
ターゲット
サブコマンド説明
get-default現在のデフォルトターゲットを表示する。systemctl get-default
set-default ターゲット名デフォルトターゲットを指定したターゲットに設定する。systemctl set-default multi-user.target
isolate ターゲット名指定したターゲットに切り替える。systemctl isolate rescue.target
サブコマンド

systemdを理解し、適切に操作することで、システム管理の柔軟性と効率性が向上します。