X window
Last updated
Last updated
GUI가 없던 시절 우리는 검은화면에서, 즉 console 창에서 사용했던 시절이 있었다.
그러나 컴퓨터가 발전하면서 바탕화면, 아이콘등 그래픽 인터페이스 환경에서 작업을 할 수 있게 되었다.
대표적인 예 지금 우리가 흔히 사용하고 있는 windows 환경이 있다.
리눅스에서도 이와같이 그래픽 인터페이스환경의 시스템소프트웨어를 제공해주는데 이를 x windows 라고 한다.
하지만 응용소프트웨어일뿐 필수요소는 아니다.
아직 많은 엔지니어들은 텍스트모드에서 사용을 한다.
DEC, IBM, MIT가 개발한 X윈도는 플랫폼과 독립적으로 작용하는 아데나 프로젝트의 일환으로 Bob Scheifler와 Jim Gettys가 1984년 최초 버전을 발표하였습니다. 1986년 Bob Scheifler가 오픈 소스 프로젝트로 만들었고, X10.4가 기본적인 모습을 만들었습니다.
1987년 X11이 발표되었고1988년 수많은 워크스테이션 업체에서 X윈도를 표준 윈도 시스템으로 채택하기 시작.
1996년 최종 개정판인 X11R6버전을 발표 X11R6.3 버전을 끝으로 X컨소시엄이 해체 X/Open으로 형성된 오픈그룹으로 X11R6.4를 발표 공개 배포 라이선스 정책을 위반하고 XFree86 프로젝트와 일부 상용 제조업체를 가로막는 라이선스 정책으로 물의를 일으킨 후 배포 라이선스 정책을 수정
1998년 9월에 X11R6.4를 재배포하였습니다.1999년 X.org 오픈 그룹을 만들어 X11R6.5.1을 발표
2017년 8월 X11R7.7이 배포되고 X Window System, X11, X 라고 부르게 되었다.
기본적으로 클라이언트는 응용 프로그램을 말한다. X 윈도우 클라이언트는 직접적으로 사용자와 통신할 수 없다. 클라이언트는 서버로부터 키보드나 마우스 입력 같은 사용자의 입력을 얻을 수 있다.
X 서버란 애플리케이션 사용자의 컴에서 작동하며 그래픽 디스플레이 하드웨어를 제어하여 개체를 화면에 뿌린 뒤 답신을 보낸다.
다시 말해, 클라이언트는 애플리케이션에 해당하며 서버는 클라이언트와 입/출력기기와의 중개를 담당하는 프로그램으로 정의될 것이다.
X 윈도우에서 각종 처리는 클라이언트와 서버라는 두 가지 프로그램으로 나뉘어서 하고 있다.
즉 클라이언트는 IPC를 이용하여 서버의 장치 입/출력을 제어한다.
이러한 서버와 클라이언트의 상호 작용은 메시지 교환을 통하여 이뤄지는데, 메시지 형태와 사용법을 X protocol 이라고 한다. X 윈도우의 중요한 특징 중 하나가 이러한 메시지 교환이 같은 컴뿐이 아니라 네트워크를 통해서도 이뤄질 수 있다는 것이다.
X protocol 은 서버와 클라이언트 사이에서 통신 되는 Request, reply, event, error 의 기본 메시지이다.
클라이언트가 윈도우를 생성해 달라는 Request를 RequestQueue에 넣어 서버에 보내면 서버는 하드웨어를 제어, 화면에 디스플레이한 후 Reply를 보낸다. 또한 서버는 하드웨어로부터 들어오는 입력을 받아들여 EventQueue에 넣어 클라이언트에 보내면 클라이언트는 그에 따른 처리를 한다.
Xlib, Xtoolkit
X protocol은 Xlib라는 라이브러리 루틴으로부터 발생시킨다.
Xlib는 C나 LISP같은 언어를 이용해 만든 X프로토콜을 지원하는 library들을 뜻한다.
그러나 Xlib의 기능이 그다지 많지는 않다. 화면에 그림을 그리고 마우스에 반응하는 등의 기능만을 가지고 있다. 즉, 저 수준의 인터페이스 이다. 그래서 이것보다 상위 라이브러리인 Xtoolkit을 사용한다. XtIntrinsics, Xaw, Xview, Motif, Qt, GTK 등이 그것이다.
설치방법은 다음과 같다.
sangyunlee@graduateyun:~$ uname -a
Linux graduateyun.cluster.seonghobae.me 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
보시는바와 같이 ubuntu 환경에서 실습을 진행하겠다.
패키지 설치와 패키지 업데이트와 업그레이를 진행한다.
sangyunlee@graduateyun:~$ sudo apt-get update
sangyunlee@graduateyun:~$ sudo apt-get upgrade
우분투 데스크탑 설치
sangyunlee@graduateyun:~$ sudo apt-get install ubuntu-desktop
실행
sangyunlee@graduateyun:~$ sudo startx
실행화면은 다음과 같다.
만일 콘솔모드로 사용하기 싶다면 ctrl+alt+F3로 콘솔모드로 이동한 다음 로그인한다.
1. 네트워크 설정(tty)- system-config-network 2. 네임 서버 설정- system-config-bind 3. 웹 서버 설정- system-config-httpd 4. 언어 설정- system-config-language 5. 마우스 설정- system-config-mouse 6. NFS 서버 설정- system-config-nfs 7. 패키지 추가 설치- system-config-packages 8. 프린터 설치- system-config-printer 9. 비번 관리- system-config-rootpassword root 10. 삼바 서버 설정- system-config-samba 11. 보안 수준 설정 (tty)- system-config-securitylevel 12. 사운드 카드 설정- system-config-soundcard 13. 사용자 관리- system-config-users 14. 초기 부팅 설정- system-config-boot 15. 날짜 및 설정- system-config-date 16. 방화벽 설정 - system-config-firewall 17. 키보드 설정- system-config-keyboard 18. lvm 설정system-config-lvm 19. root 사용자의 비밀번호 설정- system-config-rootpassword
20. 서비스의 가동/중지를 설정- system-config-services 21. FTP 서버 설정system-config-vsftpd