LinuxC入門|systemdによるCUIとGUIの切り替え

Linux を使っていると、「普段は GUI で使っているけれど、サーバ用途では CUI に切り替えたい」「一時的に GUI を起動したい」といった場面に出会います。
そんなときに活躍するのが systemd による CUI と GUI の切り替え機能です。

AlmaLinux 9.7 では、CUI と GUI の切り替えは systemd が管理する target を使って行います。
少し難しそうに聞こえるかもしれませんが、仕組みを理解すれば操作自体はとてもシンプルです。
ここでは、CUI と GUI の違いを整理しながら、systemd を使った切り替え方法を順に確認していきましょう。

まず、CUI と GUI が systemd の中でどのように扱われているのかを見てみます。

CUI と GUI を表す target

target 名利用形態内容
multi-user.targetCUI文字ベースのログイン環境
graphical.targetGUI画面表示を伴うログイン環境

systemd では、「どの target を起動するか」によって、CUI なのか GUI なのかが決まります。
つまり、target を切り替えること = CUI と GUI を切り替えること になります。

まずは、現在どの target が既定になっているかを確認してみましょう。
ここでは、参考記事に出てくる systemctl get-default の代わりに、systemctl list-unit-files を使って考え方を説明します。

systemctl list-unit-files の役割

systemctl list-unit-files は、systemd が管理している unit ファイルと、その有効・無効状態を一覧表示するコマンドです。

コマンド書式

systemctl list-unit-files [オプション]

主なオプション

オプション説明
--type=targettarget のみを表示
--state=enabled有効な unit のみ表示

使用例(root)

[root@AlmaLinux ~]# systemctl list-unit-files --type=target

次に、GUI から CUI へ切り替える方法 を見ていきましょう。

systemctl isolate の役割

systemctl isolate は、指定した target のみを有効にし、それ以外の unit を停止するコマンドです。
「今すぐこの target に切り替える」というイメージを持つと分かりやすいです。

コマンド書式

systemctl isolate target名

使用例(GUI → CUI)

[root@AlmaLinux ~]# systemctl isolate multi-user.target

このコマンドを実行すると、GUI に関連するサービスが停止し、CUI 環境へ切り替わります。
画面はグラフィカル表示から切り替わり、bash のログインプロンプトが表示されます。

AlmaLinux 9.7(Moss Jungle Cat)
Kernel 5.14.0-611.13.1.el9_7_x86_64 on an x86_64

Activate the console with: systemctl enable --now cockpit.socket
AlmaLinux login:

ここで root ユーザーのパスワードを入力してログインします。
GUI が落ちたように見えても、これは 正常な動作 なので安心してください。

続いて、CUI から GUI へ切り替える方法 を確認します。
こちらも systemd の target を指定して切り替えます。

CUI → GUI への切り替え

CUI 状態で root ユーザーとしてログインし、次のコマンドを実行します。

[root@AlmaLinux ~]# systemctl isolate graphical.target

このコマンドにより、ディスプレイマネージャなど GUI に必要なサービスが起動し、ログイン画面が表示されます。
普段見慣れたグラフィカルなログイン画面に戻れば、切り替えは成功です。

ここまでの操作を整理すると、CUI と GUI の切り替えは次の対応関係になります。

切り替え方向使用する targetコマンド
GUI → CUImulti-user.targetsystemctl isolate multi-user.target
CUI → GUIgraphical.targetsystemctl isolate graphical.target

systemd を使うことで、再起動せずにこの切り替えができる点が大きなメリットです。

systemd による CUI と GUI の切り替えは、サーバ運用やトラブル対応の現場でとても役立ちます。
「今は GUI が不要だから軽くしたい」「設定作業のために一時的に CUI にしたい」といった要望に、すぐ応えられるようになります。

仕組みを理解しておけば、慌てずに操作できるようになりますので、ぜひ実際の環境でも試してみてくださいね。