🖥️ X 윈도 시스템 개요 (X Window System Overview)
X 윈도 시스템(또는 X11)은 리눅스 및 유닉스 계열 운영체제에서 그래픽 사용자 인터페이스(GUI)를 구현하기 위한 핵심 기반입니다.
X 서버/클라이언트 모델의 특징
X 윈도의 서버/클라이언트 관계는 일반적인 상식과 반대입니다.
- X 서버 (X Server): 사용자의 키보드, 마우스, 모니터 등 입출력 장치를 직접 제어하는 프로그램입니다. 클라이언트가 “그려달라”고 요청한 그래픽을 화면에 표시하는 역할을 합니다. 사용자 앞에 있는 컴퓨터에서 실행됩니다.
- X 클라이언트 (X Client): 실제 응용 프로그램(예: 웹 브라우저, 터미널)을 의미합니다. GUI 출력이 필요할 때, X 서버에게 그래픽을 그려달라고 요청하는 역할을 합니다. 원격 서버에서 실행될 수도 있습니다.
이러한 구조 덕분에 네트워크를 통한 GUI 원격 접속이 가능합니다.
- 개발: MIT에서 처음 개발되었습니다.
- 프로토콜: 클라이언트와 서버는 X-Protocol을 통해 통신합니다.
- 포트: 기본적으로 TCP 6000번 포트를 사용합니다.

X 윈도 시스템의 역사와 미래
- XFree86: 초기에 리눅스에서 널리 사용되던 X 윈도 시스템 구현체입니다.
- X.org: 라이선스 문제로 XFree86에서 파생되었으며, 현재 대부분의 리눅스 배포판에서 사용하는 표준 X 윈도 시스템입니다.
- Wayland: X 윈도 시스템의 복잡성을 개선하고 성능을 높이기 위해 개발된 차세대 디스플레이 서버 프로토콜입니다.

🧩 X 윈도 시스템의 구성 요소
X 윈도 시스템은 여러 구성 요소가 조합되어 완전한 GUI 환경을 이룹니다.
- X 서버 / X 클라이언트: 위에서 설명한 핵심 통신 주체입니다.
- 윈도우 매니저 (Window Manager): 창의 모양, 배치, 크기 조절, 최소화/최대화 등 창 관리를 담당합니다. (예:
Mutter,Kwin,Metacity) - 디스플레이 매니저 (Display Manager): 그래픽 환경에서의 로그인 화면 및 사용자 세션 관리를 담당합니다. (예:
GDM,KDM,LightDM) - 데스크톱 환경 (Desktop Environment): 윈도우 매니저, 패널, 아이콘, 파일 관리자 등 모든 GUI 요소를 통합하여 일관된 사용자 경험을 제공하는 종합 세트입니다.
- GNOME: GNU 프로젝트에서 개발한 데스크톱 환경.
- KDE: Qt 라이브러리 기반의 데스크톱 환경.
- Xfce, LXDE: 가볍고 빠른 경량 데스크톱 환경.

🔑 X 윈도 접근 제어 및 설정
원격지의 X 클라이언트(응용 프로그램)가 로컬 X 서버(화면)에 접속할 수 있도록 제어합니다.
xhost (IP 주소 기반 제어)
- 가장 간단한 접근 제어 방식으로, 특정 IP 주소나 도메인을 가진 호스트의 접속을 허용/거부합니다.
xhost +: 모든 호스트의 접속을 허용합니다. (보안에 취약)xhost -: 모든 호스트의 접속을 거부합니다.xhost + 192.168.0.10: 특정 IP 주소의 접속을 허용합니다.
xauth (인증키 기반 제어)
xhost보다 보안이 강화된 방식으로, **매직 쿠키(Magic Cookie)**라는 인증키 값을 기반으로 사용자를 인증합니다.- 인증키는
$HOME/.Xauthority파일에 저장되며, 이 파일의 내용을xauth명령어로 관리합니다.
DISPLAY 환경 변수
- X 클라이언트가 그래픽을 출력할 X 서버의 위치를 지정하는 환경 변수입니다.
- 형식:
export DISPLAY=[IP주소]:[디스플레이번호].[스크린번호] - 예시:
export DISPLAY=192.168.0.5:0.0
⚙️ 부팅 모드와 서비스 관리
런레벨과 Target (부팅 모드)
/etc/inittab: (구)init시스템에서 부팅 시 기본 런레벨을 설정하던 파일입니다.systemdTarget: 최신 시스템에서는systemd의target유닛으로 부팅 모드를 관리합니다.- CLI 모드 부팅:
systemctl set-default multi-user.target - GUI 모드 부팅:
systemctl set-default graphical.target - 현재 모드 확인:
systemctl get-default
- CLI 모드 부팅:
서비스 관리 명령어 (systemctl)
systemctl start [서비스명]: 서비스 시작systemctl stop [서비스명]: 서비스 중지systemctl restart [서비스명]: 서비스 재시작systemctl status [서비스명]: 서비스 상태 확인systemctl enable [서비스명]: 부팅 시 서비스 자동 실행 등록systemctl disable [서비스명]: 부팅 시 서비스 자동 실행 해제
🎨 GUI 애플리케이션 및 패키지
주요 오피스 및 그래픽 프로그램
- LibreOffice: 오픈 소스 오피스 제품군 (
Write,Calc,Impress등). - GIMP: GNOME 환경의 강력한 이미지 편집 프로그램 (포토샵과 유사).
- ImageMagick: 이미지 보기 및 변환 작업을 위한 프로그램 모음.
- Inkscape: 벡터 그래픽 편집 프로그램 (일러스트레이터와 유사).
- Blender: 전문적인 3D 모델링 및 렌더링 프로그램.
GNOME/KDE 기본 프로그램
| 구분 | GNOME | KDE |
|---|---|---|
| 파일 관리자 | nautilus | Dolphin |
| 이미지 뷰어 | eog (Eye of GNOME) | Gwenview |
| 문서 뷰어(PDF) | evince | Okular |
| 동영상 플레이어 | totem | Dragon Player |
| 이메일 클라이언트 | evolution | KMail |