1. X 윈도우의 개념
[1] x윈도우의 정의
- x 윈도우란 플랫폼 독립적으로 작동하는 GUI환경을 구현하기 위해 서버 클라이언트 구조를 기반으로 X프로토콜을 통해 디스플레이 장치에 윈도우를 그려주고 마우스 및 키보드 등 입력장치를 통한 사용자와의 상호작용을 가능하게 하는 플랫폼으로 유닉스 및 리눅스의 윈도우 시스템이다.
[2] x윈도우의 특징
- x프로토콜이라 불리는 네트워크 프로토콜사용
- 서버클라이언트 모델을 사용해서 네트워크 연결만 되면 x윈도우 이용할수있음
- x서버는 x클라이언트의 요청에대한 응답이나 이벤트를 직접 x클라이언트에게 보낼수있음
- x클라이언트는 원격지의 x서버의 응용프로그램을 클라이언트에서 설치없이 실행할 수 있다
- x윈도우는 사용자 인터페이스에 독립적이다. KDE, GNOME, XFCE 등의 데스크톱환경은 X윈도우 환경에서 구현된 X클라이언트뿐이다
- 서버 클라이언트 모델을 사용하므로 이론적으로 X프로토콜만 준수할 수 있다면 어떤 시스템이든 쉽게 X윈도우 이식이 가능하다
2. x윈도우의 구조
[1] X 서버
- 키보드,마우스,화면과 같은 디바이스와 직접통신
- 디스플레이 장치를 제어하여 X클라이언트에게 디스플레이 서비스 제공
- X서버는 로컬의 X클라이언트와 통신하기위해 /tmp/.X11-unix/X0 이라는 유닉스 도메인소켓을 사용
- X 서버는 원격지 X클라이언트와 통신하기 위해 TCP포트 6000번 사용
- 로컬 및 원격지의 다수의 X클라이언트 연결 허용
- 대표적 오픈소스 프로젝트로 XFree86과 X.org가 있다
[2] X 클라이언트
- Xlib을 사용하여 작성된 일종의 응용 프로그램이다.
- '윈도우를 생성하라'와 같은 디스플레이 관련 서비스를 X 서버에게 요청한다
- 마우스 입력과 같은 X 서버에서 발생한 이벤트를 받아 처리
[3] X 프로토콜
- X 프로토콜이란 X서버와 X클라이언트가 정보를 주고 받기 위한 메시지 형식을 정의한 통신규약이다
- X 프로토콜의 기본 메시지는 Request, Reply, Event, Error로 구성
- X 서버와 X 클라이언트는 X프로토콜의 메시지를 처리하기 위해 request queue, event queue를 운용한다
- X 프로토콜을 통해 X 서버와 X 클라이언트는 높인 이식성을 갖게 되었고 원격지에서도 로컬에서 접속하는 것과 같은 동일한 사용자 경험을 갖는 것이 가능하게 되었다
[4] Xlib/XCB
- Xlib은 X윈도우 시스템 프로토콜 클라이언트 라이브러리이다
- 개발자는 X프로토콜에 대한 상세내용을 알지 못해도 Xlib 에서 제공하는 API를 통해 X클라이언트를 개발할 수 있다
- Xlib기반으로 강력한 라이브러리 제공
- XCB는 Xlib을 대체하기 위해 2001년 바트 매시에 의해 시작된 프로젝트로 X.org에서는 XCB를 직접 사용하고있다
[5] XToolkit
- Xr라고도 불리는 XToolkit은 X윈도우 시스템에서 GUI프로그램 개발을 위해 C/C++로 개발된 API 프레임워크를 뜻한다
- Xlib은 X클라이언트용 X프로토콜을 구현한 라이브러리이지만 버튼, 메뉴와 같은 그래픽요소와 연관된 기능은 제공하고 있지 않아 XToolkik이 등장하였다.
- XToolkit은 그래픽 요소를 지원하지만 직접 제공하지 않고 XaW, Motif, OLIT와 같은 다른 라이브러리를 통해 구현되어 제공된다
- 반면 FLTK, GTK+, Qt와 같은 최근 툴킷은 Xlib/XCB 기반으로 구현되었고, XToolkit을 사용하지 않는다
3. XFree86과 X.org
[1] Xfree86
- IBM 호환 시스템을 사용하는 리눅스 및 유닉스 계열 오픈소스 X서버 프로젝트
- 2004년 2월에 발표된 4.4.0 버전이 GPL 라이선스와 호환되지 않으면서 X.org 프로젝트를 더 많이 사용하기 시작
[2] X.org
- XFree86의 4.4RC2 버전과 X11R6.6 버전을 기반으로 X.org 파운데이션과 freedesktop.org에서 개발하였고 2004년에 시작되었다.
- XFree86이 회사 주도로 프로젝트가 진행된 반면 X.org는 커뮤니티 주도 프로젝트를 운영하였고 누구나 참여가 쉽도록 하였다.
4. X윈도우의 계층
[1] 디스플레이 매니저
- X11R3에서 처음 선보였으며 윈도우 매니저가 표시되기 전에 그래픽으로 구성된 로그인 유저 인터페이스를 사용자에게 제공하는 역할을 수행한다. 이 때문에 로그인 매니저라고도 불린다
- 디스플레이 매니저는 getty 또는 login을 대체하며 사용자의 userid와 password 를 그래픽 방식으로 입력받는다
- 원격지의 윈도우 매니저를 실행시키는 역할도 수행한다
- 대표적 디스플레이 매니저로 X11R3부터 사용하던 XDM(X Display Manager), GNOME에서 사용하는 GDM(GNOME Display Manager), KDM(KDE Display MAnager)이 있다
[2] X세션
- X서버에 X 클라이언트가 연결되면 X 세션이 형성된다
- 생성된 X 세션을 통해 X프로토콜에 맞춰 메시지가 송수신. 때로는 X 서버에서 발생한 마우스 입력과 같은 이벤트가 X클라이언트에게 전달되기도 한다
[3] 윈도우 매니저
- X 윈도우상에서 윈도우의 생성 위치, 윈도우의 이동/크기 변경, 윈도우의 외관 등 윈도우의 그래픽요소를 관리하는 매니저 프로그램
- Dock,Task Bar,프로그램 천처,데스크톱 아이콘,바탕화면 등과 같은 유용한 유틸리티를 제공
- 윈도우 매니저의 유형
유형 | 설명 | 사례 |
스택형 | 책상 위 종이들처럼 윈도우 위에 여러 다른 윈도우를 쌓는 형태로 관리하는방식 | Amiwm, Blackbox, Enlightenment,Fluxbox |
타일형 | 윈도우와 윈도우가 서로 겹쳐지지 않고 부엌의 타일과 같이 화면이 분할되어 관리되는 방식 | Awesome, dwm, ion |
복합형 | 스택형과 유사하나, 각 윈도우는 자신의 버퍼를 가지며 렌더링되고, 그결과 각 윈도우 간의 시각 효과를 가질 수 있게 되는 방식 | GNOME의 Mutter 및 Metacity, Xfce의 Xfwm,Unity의 Compiz, KDE의 Kwin |
가상형 | 디스플레이 장치가 가진 해상도보다 더 높은 해상도를 가질 수 있는 다수의 가상 스크린을 사용할 수 있는 방식 | FVWM, Tvtwm, HaZe |
[4] 데스크톱환경
- 마이크로소프트 윈도우와 같은 사용자환경을 제공하기 위하여 윈도우 매니저뿐만 아니라 계정관리, 디바이스관리, 시작프로그램 관리, 네트워크 관리, 문서관리 등 데스크톱 구성을 위한 모든 애플리케이션을 포함한 패키지 형태를 말함
- 대표적 사례로 GNOME, KDE, XFCE, LXDE 등이 데스크톱환경에 해당
5. 데스크톱환경 구성사례
[1] KDE의 구성
- 마티아스 에트리히가 Qt 라이브러리 기반 데스크톱환경 개발을 시작
- QT라이브러리는 QTL라이선스 채용 -> GPL과 호환성 논의
- 트롤테크가 Qt라이버러리의 유닉스용은 GPL로 공개
- Qt 4.0부터 공개용 버전에 대한 지원을 사용 버전과 같은 수준으로 지원하면서 KDE프로그램 또한 리눅스뿐 아니라 FreeBSD, Solaris, macOS, Windows 플랫폼을 모두 지원하게 되었다
- 디스플레이 매니저는 KDM을 사용한다
- 파일관리자는 Konqueror을 사용하고 윈도우 매니저는 Kwin(KWM)을 사용한다
[2] GNOME(GNU Network Object Model Environment)의 구성
- GNU에서 개발한 공개형 데스크톱 환경
- GPL라이선스가 아닌 Qt라이브러리를 사용하였던 KDE 의 대안으로 개발
- 디스플레이 매니저는 GDM을 사용
- GNOME은 LGPL 라이선스를 갖는 GTK + 라이브러리 사용. LGPL 라이선스였기 때문에 GNOME용 응용 프로그램이 활발히 개발되었다
- 파일관리자는 nautilus를 사용
- 윈도우 매니저로는 GNOME@에서는 Metacity가 사용되었고 GNOME3에서는 Mutter가 사용되었다
6. X 윈도우 실행
[1] 시스템 시작 시 X 윈도우 실행하기
1) CentOS 6 설명
- /etc/inittab 파일을 root 권한으로 열고 init 프로세스의 실행 레벨을 5로 수정한다
- /etc/inittab 파일을 저장한 다음 reboot 명령을 사용하여 시스템 재부팅하면 X윈도우가 자동으로 실행되는 것을 확인 할 수 있다
2) CentOS 7 설명
- CentOS 7에서는 /etc/inittab 파일을 수정하는 대신에 systemctl 명령어를 통해 제어할수있다
- 시스템 시작시 X윈도우를 시작하려면 다음과 같이 기본값을 변경하고 재부팅한다
systemctl set-default graphical.target
- 기본값이 잘 변경되어 있는지 확인하려면 get-default 옵션을 사용한다
$ systemctl get-defalut
graphcial.target
- 추가로 터미널 모드에서 X 윈도우를 바로 실행하고 싶다면 isolate 옵션을 사용한다
# systemctl isolate graphical.target
- graphical.target 대신에 runlevel5.target을 사용하여도 동일한 결과를 얻을 수 있다
[2] 터미널에서 X 윈도우 실행하기
- 실행레벨이 3으로 설정되어 있다면 터미널 모드로 부팅된다
- userid와 password를 입력하고 로그인한다
- 로그인이 완료되면 startx 명령어를 통해 X윈도우를 실행한다
- startx 명령은 --을 통해 인자값을 전달할수있다
startx -- -depth 16(하이컬로 모드로 x윈도우 실행)
startx -- :1 (두번째 윈도우 터미널에 X 윈도우 실행)
[3] 원격지에서 X윈도우 실행하기
1) xhost 명령어
- xhost를 통해 X서버에 접근할 수 있는 클라이언트를 지정하거나 해제 할수있다
xhost [+|-] [address|hostname]
- 현재 설정된 접근 목록을 출력한다
xhost
- 모든 클라이언트의 접속을 허용한다
xhost +
- 모든 클라이언트의 접속을 차단한다
xhost -
- 특정 IP의 접속을 허용한다특정 IP의 접속을 차단한다
xhost - 192.168.10.39
2) DISPLAY 환경변수
- X 클라이언트 프로그램이 윈도우를 표시할 서버의 주소를 설정하는 환경변수이다.
- : 0.0 은 기본값으로서 현재 시스템의 첫 번째 X 윈도우의 첫 번재 모니터를 뜻한다
- X 클라이언트 프로그램의 화면 출력을 특정IP로 보낸다
export DISPLAY="192.168.10.41:0.0"
- X 클라이언트 프로그램의 화면 출력을 특정 IP의 두 번째 모니터로 보낸다
export DISPLAY="192.168.100.41:0.1"
3) xauth
- .Xauthority 파일에 쿠키 내용을 추가, 삭제, 리스트를 출력하는 유틸리티이다
- xhost가 호스트 기반 인증 방식이라면 xauth는 MMC(MIT Magic Cookie) 기반 인증 방식이다
- 설정된 값을 보기 위해서는 xauth list 명령을 사용하고 설정을 추가하기 위해서는 xauth add 를 사용한다
7. X윈도우 응용 프로그램
1) 이미지 편집, 미디어 재생기, 문서관리 프로그램 등 다양한 응용 프로그램이 존재
구분 | X 윈도우 응용 프로그램 |
이미지 편집 | - GIMP(GNU Image Manipulation Program) - ImageMagick - Eog(Eye of GNOME) - kdegraphics |
미디어 재생 | - Totem - KMid |
음악 재생 | Rhythmbox |
문서관리 | - evince - LibreOffice |
반응형
'서버&백엔드 > 🐧 Linux' 카테고리의 다른 글
Ubuntu | 리눅스 명령어 정리 - 파일관련 (0) | 2024.09.23 |
---|---|
[Kali Linux] SSH를 통해 원격으로 리눅스서버 접속 (0) | 2023.07.15 |
[리눅스마스터 1급] 리눅스의 구조 (0) | 2023.07.09 |
[리눅스마스터 1급] 리눅스와 하드웨어 (0) | 2023.06.29 |
[리눅스마스터 1급] 리눅스의 기초 (0) | 2023.06.28 |