Ubuntu Server는 설치 직후 CLI만 있는 상태다. 평소에는 문제가 없지만 GUI 전용 관리 도구를 써야 하거나 서버에 연결된 모니터로 직접 작업할 일이 생기면 데스크톱 환경(desktop environment)을 얹어야 한다. 문제는 데스크톱 메타패키지 하나가 패키지 600~1400개와 디스크 1~3GB를 끌고 온다는 점이고, 24.04는 GNOME 46 + Wayland가 기본이라 X11을 전제로 한 예전 설정이 그대로 통하지 않는다. 이 글에서는 갓 설치한 Ubuntu 24.04 LTS Server에 데스크톱 환경을 올리는 과정을 실제 VM에서 진행하면서 환경별 용량과 메모리 사용량을 실측하고, CLI로 되돌리는 방법까지 정리한다.
설치 전 상태 확인
$ systemctl get-default
graphical.target
$ systemctl status display-manager
Unit display-manager.service could not be found.
$ ls /usr/share/xsessions
ls: cannot access '/usr/share/xsessions': No such file or directory
$ dpkg -l | grep -c '^ii'
671
$ df -h --output=used,avail /
Used Avail
6.6G 180G
기본 타깃은 이미 graphical.target이지만 display-manager.service가 없어서 CLI로 부팅된다. 즉 GUI 설치는 부팅 타깃을 바꾸는 작업이 아니라 display manager와 세션 파일을 채워 넣는 작업이다.
데스크톱 환경별 용량 실측
24.04의 apt는 --dry-run에서 “After this operation…” 요약을 출력하지 않는다. 대신 --print-uris로 받아올 deb 크기를 합산하고, apt-cache show의 Installed-Size로 설치 후 용량을 계산했다.
import subprocess, sys
def sizes(pkg):
out = subprocess.run(["apt-get", "install", "--print-uris", "-y", pkg],
capture_output=True, text=True).stdout
download, names = 0, []
for line in out.splitlines():
if line.startswith("'"): # 'http://...deb' name_ver_arch.deb 12345 SHA256:...
parts = line.split()
download += int(parts[2])
names.append(parts[1].split("_")[0])
show = subprocess.run(["apt-cache", "show"] + names,
capture_output=True, text=True).stdout
installed, seen, cur = 0, set(), None
for line in show.splitlines():
if line.startswith("Package: "):
cur = line[9:]
elif line.startswith("Installed-Size: ") and cur not in seen:
seen.add(cur)
installed += int(line[16:]) # KB 단위
return len(names), download / 1048576, installed / 1024
for pkg in sys.argv[1:]:
n, dl, inst = sizes(pkg)
print("%-24s %5d pkgs download %6.1f MB installed %7.1f MB" % (pkg, n, dl, inst))$ sudo python3 de-size.py ubuntu-desktop ubuntu-desktop-minimal xfce4 kde-plasma-desktop lxde
ubuntu-desktop 1018 pkgs download 649.6 MB installed 2287.8 MB
ubuntu-desktop-minimal 881 pkgs download 514.2 MB installed 1822.5 MB
xfce4 634 pkgs download 305.8 MB installed 1252.0 MB
kde-plasma-desktop 954 pkgs download 626.9 MB installed 2077.3 MB
lxde 848 pkgs download 437.6 MB installed 1611.6 MB
같은 방식으로 주요 데스크톱 메타패키지를 모두 측정한 결과다. 아무것도 설치되지 않은 24.04 Server 기준이므로, 이미 다른 데스크톱을 설치한 뒤에 측정하면 공유 의존성만큼 숫자가 줄어든다.
| 패키지 | 데스크톱 | 새 패키지 | 다운로드 | 설치 용량 |
|---|---|---|---|---|
xfce4 | Xfce 4.18 | 634 | 306 MB | 1.22 GB |
lxde | LXDE | 848 | 438 MB | 1.57 GB |
ubuntu-desktop-minimal | GNOME 46 (최소) | 881 | 514 MB | 1.78 GB |
kde-plasma-desktop | KDE Plasma 5.27 | 954 | 627 MB | 2.03 GB |
ubuntu-desktop | GNOME 46 (전체) | 1018 | 650 MB | 2.23 GB |
xubuntu-desktop | Xfce + Xubuntu 앱 | 1319 | 814 MB | 2.79 GB |
lubuntu-desktop | LXQt | 1364 | 873 MB | 2.74 GB |
kubuntu-desktop | KDE Plasma + Kubuntu 앱 | 1418 | 1179 MB | 3.29 GB |
ubuntu-mate-desktop | MATE | 1456 | 879 MB | 3.06 GB |
xfce4·lxde처럼 데스크톱만 담은 패키지와 xubuntu-desktop·lubuntu-desktop처럼 배포판 기본 앱까지 묶은 패키지의 차이가 2배 가까이 난다. 서버에 GUI 도구만 띄울 목적이라면 앞쪽을 고르는 편이 낫다.
Display manager 선택
| 패키지 | 24.04 버전 | 새 패키지 | 다운로드 | 비고 |
|---|---|---|---|---|
gdm3 | 46.0-2ubuntu1 | 534 | 308 MB | GNOME 기본, Wayland 세션 지원 |
lightdm | 1.30.0-0ubuntu14 | 550 | 268 MB | Xfce/LXDE와 조합, X11 전용 |
sddm | 0.20.0-2ubuntu4 | 155 | 97 MB | KDE Plasma 기본 |
slim | 1.3.6-5.3build3 | 13 | 2.7 MB | upstream 개발 중단, 신규 사용 비권장 |
표의 “새 패키지” 수가 큰 이유는 display manager 자체가 아니라 함께 딸려오는 X 서버와 GTK 스택 때문이다. 서버 습관대로 --no-install-recommends를 붙이면 이 부분이 통째로 빠진다.
$ apt-get install -s lightdm | grep -c '^Inst'
550
$ apt-get install -s --no-install-recommends lightdm | grep -c '^Inst'
1
후자로 설치하면 X 서버도 세션도 없이 lightdm 바이너리만 들어와 부팅 후 화면이 검게 멈춘다. 데스크톱 설치에서는 recommends를 끄지 말 것.
Xfce + LightDM 설치
$ sudo apt update
$ sudo apt install xfce4
display manager를 따로 지정하지 않아도 lightdm이 함께 들어온다. xfce4 → xfce4-session의 recommends인 light-locker(화면 잠금)가 lightdm을 depends로 걸고 있고, X 서버는 xfce4의 recommends인 xorg가 담당한다. 설치가 끝나면 세션 파일과 기본 display manager가 채워졌는지 확인한다.
$ ls /usr/share/xsessions
xfce.desktop
$ cat /etc/X11/default-display-manager
/usr/sbin/lightdm
$ systemctl is-active lightdm
inactive
$ dpkg -l | grep -c '^ii'
1305
$ df -h --output=used /
Used
8.2G
패키지는 예고대로 정확히 634개(671 → 1305)가 늘었고 디스크는 1.6GB 증가했다(설치 1.22GB + apt 캐시). display manager는 설치만 되고 아직 떠 있지 않으므로 sudo systemctl start lightdm이나 재부팅이 필요하다.

SSH로만 접근하는 환경이라 세션이 실제로 뜨는지 확인하려고 자동 로그인을 걸었다. /etc/lightdm/lightdm.conf를 직접 고치는 대신 드롭인 파일을 쓰면 패키지 업그레이드 때 충돌하지 않는다.
[Seat:*]
autologin-user=noble
autologin-session=xfce$ sudo groupadd -f autologin && sudo usermod -aG autologin noble
$ sudo systemctl start lightdm
$ loginctl list-sessions --no-legend | grep seat0
c1 1000 noble seat0 tty7 active no -
$ loginctl show-session c1 -p Type -p Desktop -p Active
Type=x11
Desktop=xfce
Active=yes
Type=x11은 Xfce 세션이 Xorg 위에서 돌고 있다는 뜻으로, x11vnc처럼 X11을 전제로 하는 원격 도구를 그대로 쓸 수 있다.

Ubuntu Desktop(GNOME 46) 설치
$ sudo apt install ubuntu-desktop
ubuntu-desktop은 GNOME Shell 46과 gdm3 조합이다. Xfce처럼 데스크톱만 필요하다면 ubuntu-desktop-minimal로 앱 묶음(LibreOffice·Thunderbird 등)을 빼고 137개 패키지, 460MB를 아낄 수 있다.
앞에서 Xfce를 이미 설치한 상태라 공유 의존성이 빠져 실제로는 537개만 새로 들어왔다(1305 → 1842). 디스크는 8.2GB에서 12GB로 늘었는데, 이 중 1.7GB는 deb이 아니라 snap이다.
$ snap list
Name Version Rev Tracking Publisher Notes
bare 1.0 5 latest/stable canonical** base
core24 20260410 1643 latest/stable canonical** base
firefox 153.0.3-1 8736 latest/stable mozilla** -
gnome-46-2404 0+git.b31ceab-sdk0+git.f0723a0 164 latest/stable canonical** -
gtk-common-themes 0.1-81-g442e511 1535 latest/stable canonical** -
mesa-2404 25.2.8-snap288 1839 latest/stable canonical** -
snapd 2.76.1 27591 latest/stable canonical** snapd
thunderbird 153.0-2 1201 latest/stable canonical** -
$ du -sh /var/lib/snapd/snaps
1.7G /var/lib/snapd/snaps
Firefox·Thunderbird가 deb이 아니라 snap으로 들어오고 GNOME 런타임(gnome-46-2404)까지 따라붙는다. snapd를 두지 않는 서버라면 xfce4나 lxde 쪽을 골라야 한다.
기본 display manager 바꾸기
lightdm이 이미 있는 상태에서 gdm3가 들어오면 어느 쪽을 쓸지 debconf가 묻는다. 비대화식으로 설치하면 질문 없이 기존 선택(lightdm)이 그대로 유지되므로, 설치 후 확인이 필요하다.
$ sudo debconf-show gdm3
shared/default-x-display-manager: lightdm
gdm3/daemon_name: /usr/sbin/gdm3
$ cat /etc/X11/default-display-manager
/usr/sbin/lightdm
gdm3로 바꾸려면 sudo dpkg-reconfigure gdm3를 실행해 선택하면 된다. 선택 결과는 /etc/X11/default-display-manager 파일과 display-manager.service 심볼릭 링크 양쪽에 반영되며, systemd는 이 링크로 어떤 display manager를 띄울지 결정한다.
$ ls -l /etc/systemd/system/display-manager.service
... /etc/systemd/system/display-manager.service -> /lib/systemd/system/gdm.service
$ systemctl status display-manager --no-pager | head -2
● gdm.service - GNOME Display Manager
Loaded: loaded (/usr/lib/systemd/system/gdm.service; indirect; preset: enabled)
gdm3 유닛 이름은 gdm.service이고 static이라 systemctl enable gdm3는 동작하지 않는다. 이 링크를 직접 확인하는 편이 확실하다.

Wayland 세션 확인
$ ls /usr/share/wayland-sessions /usr/share/xsessions
/usr/share/wayland-sessions:
ubuntu.desktop ubuntu-wayland.desktop
/usr/share/xsessions:
ubuntu.desktop ubuntu-xorg.desktop xfce.desktop
$ loginctl show-session <세션ID> -p Type -p Class -p Active
Type=wayland
Class=user
Active=yes
로그인하면 Type=wayland, 즉 기본이 Wayland 세션이다. X11이 필요하면 로그인 화면에서 사용자를 선택한 뒤 톱니바퀴 버튼으로 “Ubuntu on Xorg”(ubuntu-xorg.desktop)를 고른다.

메모리 사용량 비교
메모리 8GB VM에서 자동 로그인으로 세션을 띄우고 free -m의 used를 비교했다. 데스크톱을 얹으면 세션 프로세스뿐 아니라 NetworkManager·cups·avahi 같은 서비스도 함께 올라온다.
| 상태 | used | 메모리 상위 프로세스 |
|---|---|---|
| GUI 설치 전 (CLI) | 476 MB | — |
| Xfce만 설치, Xfce 세션 | 811 MB | xfwm4(119MB), Xorg(89MB), ibus-ui-gtk3(88MB) |
| 둘 다 설치, Xfce 세션 | 892 MB | xfwm4(112MB), ibus-ui-gtk3(95MB), Xorg(90MB) |
| 둘 다 설치, GNOME 세션 | 992 MB | gnome-shell(364MB), gjs(62MB), evolution-alarm(60MB) |
같은 머신에서 셸만 바꿔 비교하면 GNOME 세션이 Xfce보다 100MB 정도 더 쓴다. gnome-shell 한 프로세스가 364MB로 Xfce 전체 세션 프로세스를 합친 것보다 크다.
CLI로 되돌리기
패키지는 그대로 두고 부팅만 CLI로 돌리려면 기본 타깃을 바꾼다. 재부팅 없이 즉시 적용하려면 isolate를 함께 쓴다.
$ sudo systemctl set-default multi-user.target
$ sudo systemctl isolate multi-user.target
디스크를 회수하려면 메타패키지를 지운 뒤 고아 의존성까지 정리한다. 메타패키지 자체는 의존성 목록일 뿐이라 지워봐야 7개만 빠진다.
$ sudo apt purge ubuntu-desktop ubuntu-desktop-minimal gdm3 xfce4 lightdm
...
0 upgraded, 0 newly installed, 7 to remove and 128 not upgraded.
$ dpkg -l | grep -c '^ii'
1835
$ sudo apt autoremove --purge
...
0 upgraded, 0 newly installed, 315 to remove and 128 not upgraded.
$ sudo snap remove --purge firefox thunderbird gnome-46-2404 gtk-common-themes mesa-2404
$ sudo apt clean
여기까지 하면 패키지 1842 → 1520개, 디스크 12GB → 10GB가 된다. 설치 전(671개, 6.6GB)에는 한참 못 미치는데, autoremove가 기본적으로 “설치된 다른 패키지가 recommends하는 패키지”를 보호하기 때문이다. 데스크톱 패키지들은 서로를 recommends로 물고 있어 이 규칙에 걸려 남는다.
$ sudo apt-get autoremove --purge --dry-run | grep -c '^Purg'
315
$ sudo apt-get autoremove --purge --dry-run \
-o APT::AutoRemove::RecommendsImportant=false \
-o APT::AutoRemove::SuggestsImportant=false | grep -c '^Purg'
1291
다만 이 옵션은 데스크톱과 무관하게 recommends로만 걸려 있던 서버 원래 패키지(systemd-timesyncd, systemd-oomd, ssh-import-id, bash-completion 등)까지 목록에 넣는다. 실행 전 --dry-run으로 목록을 반드시 확인할 것.
$ sudo systemctl set-default multi-user.target
$ sudo reboot
$ systemctl get-default
multi-user.target
$ systemctl is-active display-manager
inactive
$ free -m | sed -n 2p
Mem: 7940 448 7374 1 350 7492
메모리는 GUI 설치 전 수준(448MB)으로 돌아왔다.
주의사항
데스크톱을 설치하면 서버에 없던 서비스가 함께 켜진다. 설치 직후 상태를 확인해 두는 편이 좋다.
$ for u in NetworkManager cups cups-browsed bluetooth avahi-daemon ModemManager udisks2; do \
printf "%-16s %-9s %s\n" $u "$(systemctl is-enabled $u)" "$(systemctl is-active $u)"; done
NetworkManager enabled active
cups enabled active
cups-browsed enabled active
bluetooth enabled inactive
avahi-daemon enabled active
ModemManager enabled active
udisks2 enabled active
$ sudo ss -tulnp | grep 5353
udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* users:(("avahi-daemon",pid=708,fd=12))
udp UNCONN 0 0 [::]:5353 [::]:* users:(("avahi-daemon",pid=708,fd=13))
- avahi-daemon이 모든 인터페이스에서 mDNS(5353/udp)를 열고, cups·ModemManager처럼 서버에 불필요한 서비스도 함께 enabled 상태가 된다. 외부에 노출된 서버라면 설치 후
systemctl disable --now로 정리한다. - GNOME 세션은 24.04에서 Wayland가 기본이다. x11vnc·xdotool처럼 X11을 전제로 하는 도구를 쓰려면 로그인 화면에서 “Ubuntu on Xorg” 세션을 고르거나
/etc/gdm3/custom.conf에서WaylandEnable=false로 막아야 한다. --no-install-recommends를 붙이면 X 서버와 세션이 빠져 화면이 뜨지 않는다. 데스크톱 설치에서는 쓰지 말 것.- 디스크는 설치 용량 외에 apt 캐시가 다운로드 크기만큼 더 필요하다.
ubuntu-desktop기준 3GB 이상 여유를 두고, 설치 후apt clean으로 캐시를 비운다. - 여기까지는 서버에 연결된 모니터로 쓰는 로컬 GUI다. 원격에서 데스크톱을 띄우려면 VNC나 NoMachine 같은 별도 설정이 필요하다.
마무리
Ubuntu 24.04 Server의 GUI 설치는 데스크톱 메타패키지 하나로 끝나지만, 어떤 메타패키지를 고르느냐에 따라 디스크 1.2GB와 3.3GB, 패키지 634개와 1418개로 갈린다. 메모리도 GNOME 세션이 Xfce보다 100MB가량 더 든다. GUI 도구만 띄우는 용도라면 xfce4 + LightDM 조합이 가장 가볍고, Ubuntu 기본 데스크톱이 필요하면 ubuntu-desktop-minimal이 ubuntu-desktop보다 460MB 덜 쓴다. 설치 후에는 함께 켜진 서비스와 열린 포트를 확인해 서버에 필요 없는 것을 정리하는 편이 좋다.