11.3. ターゲットシステム状態でのブート
システム管理者は、システムのブートプロセスを制御し、システムがブートする状態を定義できます。これは systemd ターゲットと呼ばれ、特定のレベルの機能を達成するためにシステムが起動する systemd ユニットのセットです。systemd ターゲットの操作時には、デフォルトのターゲットの表示、実行時のターゲットの選択、デフォルトのブートターゲットの変更、緊急ターゲットまたはレスキューターゲットでのブートを行うことができます。
11.3.1. ターゲットユニットファイル リンクのコピーリンクがクリップボードにコピーされました!
systemd ターゲットは、システムの起動時に同期ポイントとして機能する関連ユニットのグループです。.target ファイル拡張子で終わるターゲットユニットファイルは、systemd ターゲットを表します。ターゲットユニットの目的は、依存関係のチェーンでさまざまな systemd ユニットをグループ化することです。
以下の例を考慮してください。
-
同様に、
multi-user.targetユニットは、NetworkManager (NetworkManager.service)、D-Bus (dbus.service) といった、その他の必須システムサービスを開始し、basic.targetという別のターゲットユニットをアクティブにします。
次の systemd ターゲットをデフォルトまたは現在のターゲットとして設定できます。
| rescue | ベースシステムにプルしてレスキューシェルを生成するユニットターゲット |
|---|---|
| multi-user | マルチユーザーシステムを設定するためのユニットターゲット |
| graphical | グラフィカルログイン画面を設定するためのユニットターゲット |
| emergency | メインコンソールで緊急シェルを起動するユニットターゲット |
11.3.2. ブート先のデフォルトターゲットの変更 リンクのコピーリンクがクリップボードにコピーされました!
default.target シンボリックリンクは、システムのブート先の systemd ターゲットを参照します。システムが起動すると、systemd はこのリンクを解決し、定義されたターゲットで起動します。現在選択されているデフォルトのターゲットユニットは、/etc/systemd/system/default.target ファイルで確認できます。各ターゲットは特定のレベルの機能を表し、他のユニットをグループ化するために使用されます。さらに、ターゲットユニットはブート時に同期ポイントとして機能します。システムがブートするデフォルトターゲットを変更できます。デフォルトのターゲットユニットを設定すると、次回の再起動まで現在のターゲットは変更されません。
前提条件
- Root アクセス権がある。
手順
systemdがシステムを起動するために使用する現在のデフォルトのターゲットユニットを確認します。systemctl get-default
# systemctl get-default graphical.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 現在ロードされているターゲットをリストします。
systemctl list-units --type target
# systemctl list-units --type targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 別のターゲットユニットをデフォルトで使用するようにシステムを設定します。
systemctl set-default <name>.target
# systemctl set-default <name>.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow <name>は、デフォルトで使用するターゲットユニットの名前に置き換えます。Example: # systemctl set-default multi-user.target Removed /etc/systemd/system/default.target Created symlink /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target
Example: # systemctl set-default multi-user.target Removed /etc/systemd/system/default.target Created symlink /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトのターゲットユニットを確認します。
systemctl get-default
# systemctl get-default multi-user.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 新しいデフォルトターゲットに切り替えます。
systemctl isolate default.target
# systemctl isolate default.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、システムを再起動します。
11.3.3. 現在のターゲットの変更 リンクのコピーリンクがクリップボードにコピーされました!
実行中のシステムでは、リブートせずに現在のブートでターゲットユニットを変更できます。別のターゲットに切り替えると、systemd は、このターゲットが必要とするすべてのサービスとその依存関係を起動し、新しいターゲットで有効になっていないすべてのサービスを停止します。手動で別のターゲットに切り替えるのは一時的な操作にすぎません。ホストをリブートすると、systemd はデフォルトのターゲットで再度起動します。
手順
オプション: 選択できるターゲットのリストを表示します。
systemctl list-units --type target
# systemctl list-units --type targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ユニットファイルに
AllowIsolate=yesオプションが設定されているターゲットのみを分離できます。現在のブートで別のターゲットユニットに変更します。
systemctl isolate <name>.target
# systemctl isolate <name>.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow <name> は、現在のブートで使用するターゲットユニットの名前に置き換えます。
Example: # systemctl isolate multi-user.target
Example: # systemctl isolate multi-user.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
multi-userという名前のターゲットユニットとすべての従属ユニットを起動し、他のすべてのユニットをただちに停止します。
11.3.4. レスキューモードでの起動 リンクのコピーリンクがクリップボードにコピーされました!
システムが後のターゲットにアクセスできず、通常のブートプロセスが失敗した場合に、トラブルシューティングまたは修復のためのシングルユーザー環境を提供する レスキューモード で起動できます。レスキューモードでは、システムはすべてのローカルファイルシステムをマウントし、特定の重要なシステムサービスを起動しようとしますが、ネットワークインターフェイスはアクティブになりません。
前提条件
- Root アクセス
手順
レスキューモードに入るには、現行セッションで現在のターゲットを変更します。
systemctl rescue
# systemctl rescue Broadcast message from root@localhost on pts/0 (Fri 2023-03-24 18:23:15 CEST): The system is going down to rescue mode NOW!Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドは
systemctl isolate rescue.targetと似ていますが、システムに現在ログイン中の全ユーザーに情報メッセージを送信します。systemdがメッセージを送信しないようにするには、--no-wallコマンドラインオプションを指定して次のコマンドを入力します。systemctl --no-wall rescue
# systemctl --no-wall rescueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
トラブルシューティング
システムがレスキューモードに移行できない場合は、可能な限り最小限の環境を提供する 緊急モード でブートできます。緊急モードでは、システムは root ファイルシステムを読み込み専用でマウントし、他のローカルファイルシステムのマウントは試みません。また、ネットワークインターフェイスのアクティブ化も行わず、限定的な必須サービスのみを起動します。
11.3.5. ブートプロセスのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
システム管理者は、ブート時にデフォルト以外のターゲットを選択して、ブートプロセスのトラブルシューティングを行うことができます。ブート時のターゲットの変更は、1 回のブートにしか影響しません。可能な限り最小限の環境を提供する 緊急モード で起動できます。
手順
- システムを再起動し、通常のブートを開始する Enter キー以外の任意のキーを押してブートローダーメニューのカウントダウンを中断します。
- 開始するカーネルエントリーにカーソルを移動します。
- E キーを押して、現在のエントリーを編集します。
linuxで始まる行の末尾に移動し、Ctrl+E を押して行の末尾にジャンプします。linux ($root)/vmlinuz-5.14.0-70.22.1.e19_0.x86_64 root=/dev/mapper/rhel-root ro crash\ kernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv/swap rhgb quiet
linux ($root)/vmlinuz-5.14.0-70.22.1.e19_0.x86_64 root=/dev/mapper/rhel-root ro crash\ kernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv/swap rhgb quietCopy to Clipboard Copied! Toggle word wrap Toggle overflow 別のブートターゲットを選択するには、
linuxで始まる行の末尾にsystemd.unit=パラメーターを追加します。linux ($root)/vmlinuz-5.14.0-70.22.1.e19_0.x86_64 root=/dev/mapper/rhel-root ro crash\ kernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv/swap rhgb quiet systemd.unit=<name>.target
linux ($root)/vmlinuz-5.14.0-70.22.1.e19_0.x86_64 root=/dev/mapper/rhel-root ro crash\ kernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv/swap rhgb quiet systemd.unit=<name>.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow <name>は、使用するターゲットユニットの名前に置き換えます。たとえば、systemd.unit=emergency.targetです。- Ctrl+X を押して、これらの設定で起動します。