
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.target | CUI | 文字ベースのログイン環境 |
| graphical.target | GUI | 画面表示を伴うログイン環境 |
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=target | target のみを表示 |
| --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 → CUI | multi-user.target | systemctl isolate multi-user.target |
| CUI → GUI | graphical.target | systemctl isolate graphical.target |
systemd を使うことで、再起動せずにこの切り替えができる点が大きなメリットです。
systemd による CUI と GUI の切り替えは、サーバ運用やトラブル対応の現場でとても役立ちます。
「今は GUI が不要だから軽くしたい」「設定作業のために一時的に CUI にしたい」といった要望に、すぐ応えられるようになります。
仕組みを理解しておけば、慌てずに操作できるようになりますので、ぜひ実際の環境でも試してみてくださいね。
