#####. X윈도우
###. X윈도우의 개념
#. X윈도우의 정의
- X 윈도우란 플랫폼 독립적으로 작동하는 GUI 환경을 구현하기 위해 서버 클라이언트 구조를 기반으로 X 프로토콜을 통해 디스플레이 장치에 윈도우를 그려주고 마우스 및 키보드 등 입력장치를 통한 사용자와의 상호작용을 가능하게 하는 플랫폼으로 유닉스 및 리눅스의 윈도우 시스템
#. X윈도우의 역사
- 84년 IBM, MIT, DEC 공동의 아데나 프로젝트를 통하여 밥 쉐이플러, 짐 게티스가 처음 개발함
- 86년 밥 쉐이플러가 누구나 자유롭게 X를 사용하고 배포할 수 있도록 오픈소스화 하기 위해 디자인을 수행
- 87년 오픈소스 프토젝트 하에 X11발표
- 96년 수많은 컴 제조업체로 이루어진 X 컨소시엄이 조직되어 X11R2가 릴리즈 됨
- 96년 오픈소스 재단과 X/Open으로 형성된 오픈 그룹이 X11R6.4를 발표
- 99년 오픈그룹 X.org를 만들었고 X11R6.5.1 릴리즈 발표
- 04년 X.org 재단이 만들어졌고, XFree86 4, 4RC2와 X11R 6.6을 기반으로 X11R6.7 버전을 개발. 9월 X11R6.8 발표
- 12년 6월, 현재까지 가장 최신 버전인 X11R7.7 발표
- 19년 X11R7.8의 개별 컴포넌트의 개발은 모두 완료 되었고 릴리즈 매니저를 맡아줄 지원자를 기다리고 있는 상태
#. X윈도우의 특징
- X 프로토콜이라 불리느 ㄴ네트워크 프로토콜을 사용하고 서버 클라이언트 모델을 사용하여 네트워크로 연결될 수만 있다면 X 윈도우를 이용할 수 있음
- X 서버는 X 클라이언트의 요처엥 대하여 처리 후 응답하거나 이벤트를 직접 X 클라이언트에게 보낼 수 있다.
- X 크라이언트는 원ㄱㄱ지의 X 서버 시스템에서 동작하는 응용 프로그램을 실행 할 수 있음.
- X 윈도우는 사용자 인터페이스에 독립적
- 서버 클라이언트 모델을 사용하므로 이론적으로 X 프로토콜만 준수한다면 어떤 시스템이든 쉽게 X윈도우 이식이 가능
#. X 서버
- 키보드, 마우스, 화면가ㅗ 같은 디바이스와 직접 통신을 수행하고 관리
- 특히 디스플레이 장치를 제어하여 X 클라이언트에게 디스플레이 서비스르르 제공
- X 서버는 로컬의 X클라이언트와 통신하기 위해 /tmp/.X11-unix/X0라는 유닉스 도메인 소켓을 사용
- X 서버는 원격지의 X 클라이언트와 통신하기 위해 TCP 포트 6000번을 사용
- 로컬 및 원격지의 다수의 X 클라이언트 연결을 허용
- 대표적 오픈소스 프로젝트로 XFree86과 X.org가 있음
#. X 클라이언트
- Xlib을 사용하여 작성된 일종의 응용 프로그램
- 윈도우를 생성하라 와 같은 디스플레이 관련 서비스를 X서버에게 요청
- 마우스의 입력과 같은 X 서버에서 발생한 이벤트를 받아 처리함
#. X 프로토콜
- X 프로토콜이란 X 서버와 X 클라이언트가 정보를 주고 받기 위한 메시지 형식을 정의한 통신규약
- X 프로토콜의 기본 메세지는 Request, Reply, Event, Error로 구성
- X 서버와 X 클라이언트는 X프로토콜의 메세지를 처리하기 위해 reauest queue, event queue를 운용
- X 프로토콜을 통해 X 서버와 X 클라이언트는 높은 이식성을 갖게 되었고 원격지에서도 로컬에서 접속하는 것과 같은 동일한 사용자 겸험을 갖는 것이 가능하게 되었다.
#. Xlib/XCB
- Xlib는 85년 C언어로 작성된 X윈도우 시스템 프로토콜 클라이언트 라이브러리
- 개발자는 X 프로토콜에 대한 상세 내용을 알지 못해도 Xlib에서 제공하는 API를 통해 X 클라이언트를 개발 할 수 있음
- 또한 Xlib 를 기반으로 강력한 라이브러리가 제공되고 있음
- Xt(X Toolkit Intrinsic), XaW(Athena widget set), Motif, FLTK, GTK+, Qt, Tk, SDL, SFML등이 모두 Xlib 기반 라이브러리들
- XCB는 Xlib을 대체하기 위해 2001년 바트 매시에 의해 시작된 프로젝트로 X,org에서는 XCB를 직접 사용
#. XToolkt
- Xt라고도 불리는 XToolkit은 X 윈도우 시스템에서 GUI 프로그램 개발을 위해 C/C++로 개발된 API 프레임워크를 뜻함
- Xlib는 X 클라이언트용 X 프로토콜을 구현한 라이브러리지만 버튼, 메뉴와 같은 그래픽 요소와 연관된 기느응ㄴ 제공하고 있지 않아 XToolkit이 등장
- XToolkit은 그래픽 요소를 지원하지만 직접 제공하지 않고 XaWm Motif, OLIT와 같은 다른 라이브러리를 통해 구현되어 제공됨
- 반면, FLTK, GTK+, Qt와 같은 최근 툴킷은 Xlib/XCB 기반으로 구현되었고 XToolkt을 사용하지 않음
###. XFree86 // X,org
#. XFree86
- IBM 호환 시스템을 사용하는 니룩스 및 유닉스 계열 오픈소스 X 서버 프로젝트이며 92년에 시작되었고 04년 초기까지 널리 사용됨
- 04년 2월 발표된 4.4.0버전이 GPL 라이센스와 호환되지 않으면서 X.org 프로젝트를 더 많이 사용하기 시작
#. X.org
- XFree86의 4.4RC2버전과 X11R6.6 버전을 기반으로 X.org 파운데이션과 freedesktop.org에서 개발하였고 04년에 시작
- XFree86이 회사 주도로 프로젝트가 진행된 반면 X.org는 커뮤니티 주도 프로젝으를 운영하였고 누구나 참여가 쉽도록함
###. X 윈도우의 계층
#. 디스플레이 매니저
- X11R3에서 처음 선보였으며 윈도우 매니저가 표시되기 전에 그래픽으로 구성된 로그인 유저 인터페이스를 사용자에게 제공하는 역할을 수행 ==> 로그인 매니저라고도 불림
- 디스플레이 매니저는 getty 또는 login을 대체하며 사용자의 userid // pw를 그래픽 방식으로 입력 받음
- 원격지의 윈도우 매니저를 실행시키는 역할도 수행
- 대표적으로 디스플레이 매니저로는 X11R3부터 사용한 XDM(X Display Manager), GNOME에서 사용하는 GDM(GNOME Display Manager), KDM(KDE Display Manager)가 있음
#. 세션
- X 서버에 X 클라이언트가 연결되면 X 세션이 형성 됨
- 생성도니 X 세션을 통해 X 프로토콜에 맞춰 메세지가 송수신 될 수 있고, 때론 X 서버에서 발생한 마우스 입력과 같은 이벤트가 X 클라이언트에게 전달되기도 함
# 윈도우 매니저
- X 윈도우상에서 윈도우의 생성 위치, 윈도우의 이동/ 크기 변경, 윈도우의 외관 등 윈도우의 그래픽 요소를 관리하는 프로그램
- 도크, 태스크바, 프로그램 런처, 데스크톱 아이콘, 바탕화면 등과 같은 유용한 유틸리티를 제공
- 윈도우 매니저의 유형
: 스택형 : 책상 위 종이들 처럼 윈도우 위에 여러 다른 윈도우를 쌓는 형태로 관리하는 방식
: 타일형 : 윈도우와 윈도우가 서로 겹치지 않고 부엌의 타일과 같은 화면이 분할되어 관리되는 방식
: 복합형 : 스택형과 유사하나 각 윈도우는 자신의 버퍼를 가지며 렌더링되고, 그 결과 각 윈도우 간의 시각 효과를 가질 수 있는 방식
: 가상형 : 디스플레이 장치가 가진 해상도보다 더 높은 해상도를 가질 수 있는 다수의 가상 스크린을 사용하는 방식
#. 데스크톱환경
- 마이크로소프트 윈도우와 같은 사용자 완경을 제공하기 위하여 윈도우 매니저 뿐만 아니라 계정 관리, 디바이스 관리, 시작 프로그램 관리, 네트워크 관리, 문서 관리 등 데스크톱 구성을 위한 모든 애플리케이션을 포함한 패키지 형태를 말함
- 대표적인 사례로 GNOME, KDE, XFCE, LXDE 등이 해당
###. 데스크톱환경 구성 사례
#. KDE의 구성
- 96년 에트리히가 Qt라이브러리 기반 데스크톱 환경 개발을 시작
- Qt라이브러리가 자유 소프트웨어 라이센스를 사용하지 않았기 때문에 이를 걱정하는 개발자들은 GNOME 프로젝트를 시작하기도 함
- 98년 Qt라이브러리는 QPL 라이센스를 채용 오픈소스로 공개되지만 GPL과 호환성 논의는 계속 됨
- 00년 트롤테크는 Qt라이브러리의 유닉수용은 GPL로 공개
- Qt 4.0부터 공개용 버전에 대한 지원을 사용 버전과 같은 수준으로 지원하면서 KDE 프로그램 또한 니룩스 뿐 아니라 FreeBSD, Solaris, MacOS, Windows 플랫폼을 모두 지원하기 됨
- 디스플레이 매닞는 KDM을 사용
- 파일관리자는 Konqueror을 사용 윈도우 매니저는 Kwinㅇ르 사용
#. GNOME 의 구성
- GNU에서 개발한 공개형 데스크톱 환경
- GPL 라이센스가 아닌 Qt 라이브러리를 사용하던 KDE의 대안으로 개발
- 디스플레이 매니저는 GDM을 사용
- GNOME은 LGPL 라이센스를 갖는 GTK+ 라이브러리 사용, LGPL 라이센스였기 떄문에 GNOME용 응용프로그램이 활발히 개발
- 파일 관리자는 nautilus를 사용하였고 윈도우 매니저로는 GNOME2에서는 metacity가 사용되고 GNOME3에서는 Mutter가 사용
###. X윈도우 실행
#. CentOS 6
- /etc/inittab 파일을 root권한으로 열고 init 프로세스의 실행 레벨을 5로 수정
- /etc/inittab 파일을 저장한다음 리붓 하면 자동 실행되는 것을 확인
#. CentOS 7
- /etc/inittab 파일을 수정하는 대신 systemctl 명령어로 제어 가능
- systemctl set-default grapgical.target ==> 시작시 시작
- systemctl isolate graphical.target ==> 바로 시작
- g raphica1. target 대신에 run1εvε15. targεt을 사용하여도 통일한 결과
#. 터미널에서 X 윈도우 실행하기
- startx ==> X윈도우 실행 명령어
- startx -- -depth 16 ==> 하이컬러 모드로 X윈도우 실행
- startx -- :1 두번째 윈도우 터미널에 X 윈도우 실행
###. 원격지에서 X윈도우 실행하기
#. xhost 명령어
- xhost를 통하여 X 서버에 접근할 수 있는 클라이언트를 지정하거 해제 가능
- 현재 설정된 접근 목록을 출력 : xhost
- 모든 클라이언트의 접속을 허용 : xhost +
- 모든 클라이언트 접속 차단 : xhost -
- 특정 IP 접속 허용 : xhost + 192.168.10.117
- 특정 IP 접속 차단 : xhost - 192.168.10.117
#. DISPLAY 환경변수
- X 클라이언트 프로그램이 윈도우를 표시할 서버의 주소를 설정하는 환경 변수. :0.0은 디폴트로 현재 시스템의 첫 번째 X 윈도우의 첫번쨰 모니터를 뜻함
- X 클라이언트ㅡ 프로그램의 화면 출력을 특정 IP로 보낸다 export DISPLAY="192.168.10.117:0.1" ==> 두번쨰로 보냄
- xauth : .Xauthorty 파일에 쿠키 내용을 추가, 삭제, 리스트를 출력하는 유틸. xhost가 호스트 기반 인증방식이라면 xauth는 MMC 기반 인증방식 (Mit Magic Cookie) : 설정 된 값을 보기 위해서는 xauth list 명령을 사용하고 설정을 추가하기 위해서는 xauth add를 사용
#, 윈도우 응용 프로그램
- 이미지 편집, 미디어 재생기, 문서관리 프로그램 등 다양한 응용프로그램들
- 이미지 편집 : GIMP(GNU Image Manipulation Program), ImageMagick, Eog(Eye of GNOME, kdegraphics)
- 미디어 재생 : Totem, KMid
- 음악 재생 : Rhythmbox
- 문서 관리 : evince, LibreOffice
'IT' 카테고리의 다른 글
MyData (0) | 2023.07.20 |
---|---|
Process and Thread (0) | 2023.07.19 |
CentOS 7 설치 VirtualBox7 다운로드부터 설치까지 차근차근!! (0) | 2023.07.19 |
CNCF란?? 오픈 허브?? 알기 쉽게 풀어 쓴 개념 (0) | 2023.07.19 |
도커 개요 (0) | 2023.07.18 |