inittab ファイルは、もう使えない

CentOS 6 までは、主に GUI から CUI へ、CUI から GUI へ変更するために、SysV 系 Init の inittabファイルを編集することによって、ランレブルを変更することができました。

しかし、CentOS 7 からは、これまで使ってきた initab をサポートしておらず、その代わりに systemd を使う必要があります。

/etc/inittab ファイルは存在するものの、中身を覗いてみると inittab は、もう使わないからここに設定を書いても動きませんよーと。 代わりに systemctl を使ってくれという記載があります。

# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target

systemd ターゲット一覧

上記の説明通りに、CentOS 7 では、ランレベルを変更するために、multi-user.targetgraphical.target といったターゲットユニットを使います。

systemd のターゲット一覧は、以下の通りです。

Runlevel ターゲットユニット 詳細
0 runlevel0.target、または poweroff.target OS シャットダウン
1 runlevel1.target、または rescue.target レスキューシェルモード
2 runlevel2.target、または multi-user.target マルチユーザ (CUI)
3 runlevel3.target、または multi-user.target マルチユーザ (CUI)
4 runlevel4.target、または multi-user.target マルチユーザ (CUI)
5 runlevel5.target、または graphical.target マルチユーザ (GUI)
6 runlevel6.target、または reboot.target OS 再起動

CUI から GUI への Runlevel 変更

以下の例では、CUI (3) から GUI (5) へランレベルを変更します。

  • 変更前のランレベル確認
  • ランレベル変更 : multi-user.target → graphical.target
  • 設定反映 : 再起動
  • 変更後のランレベル確認
CUI から GUI へのランレベル変更Raw Code(S)Raw Code(T)
# runlevel
N 3

# systemctl get-default
multi-user.target

# ls -l /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 41  5月 26 15:16 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

# systemctl set-default graphical.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'

# ls -l /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 40  5月 26 15:40 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target

# shutdown -r now

# runlevel
N 5

# systemctl get-default
graphical.target

GUI から CUI への Runlevel 変更

以下の例では、GUI (5) から CUI (3) へランレベルを変更します。

  • 変更前のランレベル確認
  • ランレベル変更 : graphical.target → multi-user.target
  • 設定反映 : 再起動
  • 変更後のランレベル確認
GUI から CUI へのランレベル変更Raw Code(S)Raw Code(T)
# runlevel
N 5

# systemctl get-default
graphical.target

# ls -l /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 40  5月 26 15:40 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.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'

# ls -l /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 41  5月 26 15:49 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

# shutdown -r now

# runlevel
N 3

# systemctl get-default
multi-user.target

その他、CUI 状態で X Window システム起動

一応、ランレベル 3 の CUI モードでも X Window システムを立ち上げることは可能なので、GUI が使いたくなったら systemctl コマンドで GUI サービスを開始すれば良いです。

以下の例は、ランレベル 3 の状態で GDM (GNOME Display Manager) を立ち上げます。

CUI から X Window 起動Raw Code(S)Raw Code(T)
# systemctl start gdm.service

終わりに

X Window が便利ちゃ便利ですが、慣れてしまうとメンテナンスに手こずってしまうので、私は使わない派です。

特に、仮想環境の場合には、リソースを節約するためにも X Window システムは使わないほうが良いです。

また、ランレベル変更時に、systemctl を使わずに、直接シンボリック・リンクを貼ってしまうやり方もありますが、タイプミスの恐れがあるので、止めた方が良いと思います。

直接シンボリック・リンクを作成し、ランレベル変更Raw Code(S)Raw Code(T)
# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

# ls -l /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 36  9月 28 10:14 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

以上、CentOS 7 Runlevel 変更でした。