10.3. systemd ターゲットでの作業
以前のバージョンの Red Hat Enterprise Linux は、SysV init または Upstart で配布されており、特定モードのオペレーションを表す事前定義の ランレベル を実装していました。このランレベルは 0 から 6 までの数字で表され、システム管理者が各ランレベルを有効にしたときに実行するシステムサービスが定義されていました。Red Hat Enterprise Linux 7 では、ランレベルの概念が systemd ターゲット に代わっています。
systemd ターゲットは ターゲットユニット で表現されます。ターゲットユニットは .target ファイル拡張子で終わり、その唯一の目的は依存関係の連鎖で他の systemd ユニットをグループ化することです。たとえば、グラフィカルセッションの開始に使用する graphical.target ユニットは、GNOME Display Manager (gdm.service) または Accounts Service (accounts-daemon.service) といったシステムサービスを開始するとともに、multi-user.target ユニットもアクティブにします。同様に、multi-user.target ユニットは、NetworkManager (NetworkManager.service)、D-Bus (dbus.service) といった、その他の必須システムサービスを開始し、basic.target という別のターゲットユニットをアクティブにします。
Red Hat Enterprise Linux 7 では、以前のシステムリリースの標準ランレベルと類似する定義済みターゲットが多数同梱されています。互換性の理由から、このようなターゲットのエイリアスも SysV ランレベルに直接マッピングします。表10.6「SysV ランレベルと systemd ターゲットの比較」 SysV ランレベルとそれに対応する systemd ターゲットの完全リストを提供します。
| ランレベル | ターゲットユニット | 詳細 |
|---|---|---|
|
|
| システムをシャットダウンし、電源を切ります。 |
|
|
| レスキューシェルを設定します。 |
|
|
| 非グラフィカルなマルチユーザーシステムを設定します。 |
|
|
| 非グラフィカルなマルチユーザーシステムを設定します。 |
|
|
| 非グラフィカルなマルチユーザーシステムを設定します。 |
|
|
| グラフィカルなマルチユーザーシステムを設定します。 |
|
|
| システムをシャットダウンして再起動します。 |
systemd ターゲットを表示、変更、または設定するには、表10.7「SysV init コマンドと systemctl の比較」 および以下のセクションの説明に従って systemctl ユーティリティーを使用します。runlevel コマンドおよび telinit コマンドは今も利用でき、期待どおりに機能しますが、このコマンドは互換性のために同梱されているため、なるべく使用しないでください。
| 古いコマンド | 新しいコマンド | 詳細 |
|---|---|---|
|
|
| 現在読み込まれているターゲットユニットをリスト表示します。 |
|
|
| 現在のターゲットを変更します。 |
10.3.1. デフォルトターゲットの表示 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでどのターゲットユニットが使用されるかを決定するには、以下のコマンドを実行します。
systemctl get-default
systemctl get-default
このコマンドは、/etc/systemd/system/default.target にあるシンボリックリンクを解決して、結果を表示します。デフォルトのターゲット変更する方法は 「デフォルトターゲットの変更」 を参照してください。現在、読み込み済みのターゲットユニットをリスト表示する方法は 「現在のターゲットの表示」 を参照してください。
例10.10 デフォルトターゲットの表示
デフォルトのターゲットユニットを表示するには、以下のコマンドを実行します。
systemctl get-default
~]$ systemctl get-default
graphical.target
10.3.2. 現在のターゲットの表示 リンクのコピーリンクがクリップボードにコピーされました!
読み込み済みのターゲットユニットのリストを表示するには、以下のコマンドを実行します。
systemctl list-units --type target
systemctl list-units --type target
このコマンドを実行すると、各ターゲットユニットの正式名 (UNIT) の後に、そのユニットが読み込まれているかどうか (LOAD)、そのユニットファイルアクティベーションの状態の概要 (ACTIVE) および詳細 (SUB) な状態、簡単な説明 (DESCRIPTION) が表示されます。
デフォルトでは、systemctl list-units コマンドは、アクティブなユニットのみを表示します。状態に関係なく読み込み済みユニットをすべて表示する場合は、コマンドラインオプションの --all または -a を付けて、以下のコマンドを実行します。
systemctl list-units --type target --all
systemctl list-units --type target --all
デフォルトターゲットの表示方法は、「デフォルトターゲットの表示」 を参照してください。現在のターゲットを変更する方法は、「現在のターゲットの変更」 を参照してください。
例10.11 現在のターゲットの表示
現在読み込み済みのターゲットユニットをリスト表示するには、以下のコマンドを実行します。
10.3.3. デフォルトターゲットの変更 リンクのコピーリンクがクリップボードにコピーされました!
システムがデフォルトで異なるターゲットユニットを使用するように設定するには、root で次のコマンドを実行します。
systemctl set-default name.target
systemctl set-default name.target
name を、デフォルトで使用するターゲットユニットの名前 (multi-user など) に置き換えます。このコマンドにより、/etc/systemd/system/default.target ファイルが、/usr/lib/systemd/system/name.target へのシンボリックリンクに置き換わります。name は、使用するターゲットユニットの名前になります。現在のターゲットを変更する方法は、「現在のターゲットの変更」 を参照してください。現在、読み込み済みのターゲットユニットをリスト表示する方法は 「現在のターゲットの表示」 を参照してください。
例10.12 デフォルトターゲットの変更
デフォルトで multi-user.target ユニットを使用するようにシステムを設定するには、root で以下のコマンドを実行します。
systemctl set-default multi-user.target
~]# systemctl set-default multi-user.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
10.3.4. 現在のターゲットの変更 リンクのコピーリンクがクリップボードにコピーされました!
現行セッションで異なるターゲットユニットに変更するには、root で次のコマンドを実行します。
systemctl isolate name.target
systemctl isolate name.target
name を、使用するターゲットユニットの名前 (multi-user など) に置き換えます。このコマンドは、name という名前のターゲットユニットと、その従属ユニットをすべて起動し、その他のユニットを直ちに停止します。デフォルトのターゲット変更する方法は 「デフォルトターゲットの変更」 を参照してください。現在、読み込み済みのターゲットユニットをリスト表示する方法は 「現在のターゲットの表示」 を参照してください。
例10.13 現在のターゲットの変更
グラフィカルユーザーインターフェイスを無効にし、現行セッションで multi-user.target ユニットに変更するには、root で以下のコマンドを実行します。
systemctl isolate multi-user.target
~]# systemctl isolate multi-user.target
10.3.5. レスキューモードへの変更 リンクのコピーリンクがクリップボードにコピーされました!
レスキューモード は、便利なシングルユーザー環境を提供し、通常の起動プロセスを完了できない状況でのシステムの修復を可能にします。レスキューモードでは、システムはすべてのローカルファイルシステムのマウントと、いくつかの重要なシステムサービスの開始を試みますが、ネットワークインターフェイスをアクティブにしたり、他のユーザーによるシステムへの同時ログインを許可したりすることはしません。Red Hat Enterprise Linux 7 では、レスキューモードはシングルユーザーモードと同等であり、single user mode パスワードを必要とします。
現在のターゲットを変更し、現行セッションでレスキューモードに入るには、root で次のコマンドを実行します。
systemctl rescue
systemctl rescue
このコマンドは systemctl isolate rescue.target と似ていますが、システムに現在ログインしているすべてのユーザーに情報メッセージを送信します。systemd がこのメッセージを送信しないようにするには、コマンドラインオプション --no-wall を付けてこのコマンドを実行します。
systemctl --no-wall rescue
systemctl --no-wall rescue
緊急モードに入る方法は、「緊急モードへの変更」 を参照してください。
例10.14 レスキューモードへの変更
現行セッションでレスキューモードに入るには、root で以下のコマンドを実行します。
systemctl rescue
~]# systemctl rescue
Broadcast message from root@localhost on pts/0 (Fri 2013-10-25 18:23:15 CEST):
The system is going down to rescue mode NOW!
10.3.6. 緊急モードへの変更 リンクのコピーリンクがクリップボードにコピーされました!
緊急モード は、可能な限り最小限の環境を提供し、レスキューモードに入れないシステム状態でのシステムの修復を可能にします。緊急モードでは、システムは root ファイルシステムを読み込み専用でマウントし、他のローカルファイルシステムのマウントは試みません。また、ネットワークインターフェイスのアクティブ化も行わず、限定的な必須サービスのみを起動します。Red Hat Enterprise Linux 7 では、緊急モードでは root パスワードが必要です。
現在のターゲットを変更し、緊急モードに入るには、root で次のコマンドを実行します。
systemctl emergency
systemctl emergency
このコマンドは systemctl isolate emergency.target と似ていますが、システムに現在ログインしているすべてのユーザーに情報メッセージを送信します。systemd がこのメッセージを送信しないようにするには、コマンドラインオプション --no-wall を付けてこのコマンドを実行します。
systemctl --no-wall emergency
systemctl --no-wall emergency
レスキューモードに入る方法は、「レスキューモードへの変更」 を参照してください。
例10.15 緊急モードへの変更
現在システムにログインしている全ユーザーにメッセージを送信せずに緊急モードに入るには、root で以下のコマンドを実行します。
systemctl --no-wall emergency
~]# systemctl --no-wall emergency