systemdによるターゲットの管理
systemdは個々のサービスの管理とともに、SysVinitのランレベルに相当するターゲット(target)を管理します。
| systemdターゲット | SysVinitランレベル | 説明 | 
|---|---|---|
| default.target | デフォルトランレベル | デフォルトターゲット | 
| poweroff.target | ランレベル 0 | 電源オフ | 
| rescue.target | ランレベル 1 | レスキューモード | 
| multi-user.target | ランレベル 3 | マルチユーザモード | 
| graphical.target | ランレベル 5 | グラフィカルモード(マルチユーザ+GUI) | 
| reboot.target | ランレベル 6 | システム再起動 | 
システムの起動時のシーケンス
システムの起動時にsystemdはdefault.targetをスタートします。通常、default.targetはgraphical.targetまたはmulti-user.targetへのシンボリックリンクです。default.targetはsystemctlのサブコマンドget-defaultで表示、set-defaultで変更ができます。
# systemctl get-default ← デフォルトターゲットを表示 graphical.target # systemctl set-default multi-user.target ← デフォルトターゲットをmulti-userに変更 rm '/etc/systemd/system/default.target' ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
ブートローダのカーネルコマンドライン オプションsystemd.unitによって、systemd.unit=multi-user.targetのように指定することもできます。この場合はdefault.targetのシンボリックリンクより優先されます。
現在のターゲットの変更(ランレベルの変更に相当)
現在のターゲットを変更するには、サブコマンドisolateを使用します。isolateは指定したターゲットおよびターゲットが依存するunitをスタートし、新しいターゲットでenableに設定されていない他のすべてのunitをストップします。
# runlevel ← 現在のターゲット(最後にロードされたターゲット)を確認 N 5 ← 最後にロードされたターゲットはgraphical.target(ランレベル5) # systemctl isolate multi-user.target ← multi-user.targetに変更(「init 3」でも可) # systemctl isolate graphical.target ← graphical.targetに変更(「init 5」でも可) # systemctl isolate poweroff.target ← poweroff.targetに変更(「init 0」でも可) # systemctl isolate reboot.target ← reboot.targetに変更(「init 6」でも可)
以下はそれぞれ、レスキューモード、マルチユーザモード、グラフィカルモードで立ち上げたときの画面の例です。
Welcome to rescue mode! Type "systemctl default" or ^D to enter default mode. The "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot. Give root password for maintenance (or type Control-D to continue):
上記の画面で、rootユーザのパスワードを入力してログインします。
CentOS Linux 7 (Core) Kernel 3.10.0-229.el7.x86_64 on an x86_64 lpic-1 login:
 
 以下に示すGRUB2の画面は、カーネルオプションにレスキューモードの指定を追加して起動する例です。
 
  
 レスキューモードの指定を追加するには、起動直後に[e]キーを押して編集モードに入った後、カーネルオプションにsystemd.unit=rescue.targetを追加します。1行に収まらない場合には自動的に行末に「\」が挿入され、続けて次の行に入力できます(systemd.unit=rescue.targetと指定する代わりに、SysVinitの場合と同じく1を指定することも可能)。レスキューモードの指定を加えた後、[Ctrl-x]キーを押して起動します。

 
              
               
              
               
              
               
              
               
              
               
                  
                   
                  
                 
                  
                 
                  
                 
                                            
                                         
                                            
                                         
                                            
                                         
                                            
                                         
                                            
                                         
                                            
                                         
                    