🖥️ 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 시스템에서 부팅 시 기본 런레벨을 설정하던 파일입니다.
  • systemd Target: 최신 시스템에서는 systemdtarget 유닛으로 부팅 모드를 관리합니다.
    • CLI 모드 부팅: systemctl set-default multi-user.target
    • GUI 모드 부팅: systemctl set-default graphical.target
    • 현재 모드 확인: systemctl get-default

서비스 관리 명령어 (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 기본 프로그램

구분GNOMEKDE
파일 관리자nautilusDolphin
이미지 뷰어eog (Eye of GNOME)Gwenview
문서 뷰어(PDF)evinceOkular
동영상 플레이어totemDragon Player
이메일 클라이언트evolutionKMail