X11
1. 개요
X11, X Window System, Xorg, 혹은 그냥 X으로 불린다.
1984년에 MIT에서 처음 개발되었으며 MIT 허가서로 배포된다. 현재는 X.org 재단에서 개발하고 있다.
리눅스(+유닉스)의 GUI는 대개가 X 윈도우 시스템이다.
그래픽 출력을 위해 클라이언트 서버 모델을 사용하며, TCP/IP 네트워크 기반의 X 프로토콜로 통신을 한다. 간단하게, 클라이언트가 무언가 그래픽적인 요구를 X 서버로 전달하면, X 서버가 요청을 처리하여 클라이언트로 반환해 준다. 그렇기 때문에 이론상으로는 다른 시스템에 설치되어 있는 프로그램을 내 컴퓨터에 깔지 않고도 X 윈도우를 통해 원격으로 출력할 수 있다.
[image]
X 서버와 X 클라이언트를 이해하기 위해, '''메모장'''을 예로 들어보자. '''메모장'''은 X 클라이언트가 된다. 웹브라우저, 동영상 재생기, 게임 같은 모든 실행 프로그램을 X 클라이언트라고 생각해도 무리는 없다. 위키 작성을 위해 Openbox 메뉴에서 메모장을 클릭하면
- X 클라이언트 메모장에 실행 명령이 전달되고
- 호출을 받은 메모장은 X 서버에 "가로세로 크기는 이만큼, 배경색과 글자색은 이렇게, 커서는 깜빡일 것."하고 X 서버로 X 프로토콜을 날린다.
- 이제 X 서버는 그래픽 카드와 모니터로 하여금 메모장이 표시되게 하고
- 사용자가 키를 두들기면 같은 식으로 해당 글자들도 화면에 나타나게 된다.
2. 문제점
X11은 XFree86[1] 의 라이센스 문제를 해결하기 위해 XFree86의 구버전을 토대로 개발한 프로그램이다. 그런데 하도 오래 쓰다보니 코드 최적화가 이루어질래야 이루어질 수가 없고, 여러 편의사항은 추가를 하니 덩치가 많이 커졌다.
3. Wayland
위 문제점을 해결하기 위한 대체판으로, 차세대 X Window System으로서 X11에 비해 덩치가 많이 작으나, 아직까지는 X11이 대세이기 때문에 X11 기반으로 돌아가는 프로그램이 많다. 그러나 점차 Wayland를 기본으로 사용하려는 배포판이 늘어나고 있는 추세인지라, 대세가 되는 것은 시간 문제일지도 모른다.
리눅스 커널에서 최신 그래픽스 칩셋을 지원하는 기술들이 필요하여 X11과 중복되는 부분이 많아졌기에 이 부분을 모던화 하기 위해 시작했다. 2008년부터 시작되었으며, 2012년에 버전 1.0이 나왔다. 초기에는 하드웨어 호환성과 안정화 문제도 있고 해서 사용이 많지 않았으나, GNOME의 디폴트가 Wayland가 되면서 GNOME을 채택하고 있는 페도라, 데비안 등 배포판도 사용하고 있다. X11가 원격 접속에 특화되어 있다면, Wayland는 하드웨어 가속같이 일반 유저에게 중요한 기능에 특화되어 있다.[2]
메이저 배포판인 우분투가 Mir를 만들어 경쟁을 하기도 했으나 프로젝트가 좌초하고, 우분투 17.10에 Wayland가 정식 채택되었다. 하지만 그 다음 LTS 버전인 18.04에서는 X11로 복귀 했으며, 20.04에서는 X11과 Wayland를 설정 파일을 통해 선택가능하다.
엔비디아는 AMD나 인텔과는 달리 Wayland가 사용하는 GBM#을 거부하고 독자 기술인 EGLStream을 통해 Wayland API를 제공한다.
[1] X11이 만들어지기 전에 있던 X 윈도우 시스템이다.[2] 하드웨어 가속은 X11도 지원하지만 로레벨 코딩이 어렵고 난이도에 비해 얻는 성능 효율이 나쁘다. 파이어폭스의 경우 X11은 동영상 하드웨어 가속이 있으나 마나 성능이 비슷하다고 판단해 Wayland에서만 하드웨어 가속을 지원하도록 코드가 수정되고 있다. 반면 VNC 같은 원격 GUI 접속은 Wayland가 밀리는데, X11은 TigerVNC, X11vnc, X2go 등 여러 가지 프로토콜을 지원하나 Wayland는 ogon, gnome-remote-desktop, krfb, waypipe 등 다양한 시도가 있지만 특정 데스크톱 환경에 종속되어 있거나 X11 세션에만 접속할 수 있는 제한이 있다.