본문 바로가기

Linux

리눅스와 하드웨어, 리눅스의 구조

리눅스와 하드웨어

 

1. 하드웨어의 이해

 

1 - 컴퓨터의 구성요소

  1. 중앙처리장치 CPU
    - 컴퓨터 프로그램의 명령어를 해석하여 연산하고 결과를 반환. 시스템은 통제하는 제어장치
    - Register와 연산장치 ALU 그리고 제어장치 Control Unit 으로 구성
    - 레지스터는 CPU 연산을 처리하기 위한 임시 저장소 역할. 
    - 연산장치는 데이터간 비교,판단,연산을 수행
    - 제어장치는 명령어를 해석하고 명령을 연산장치로 보개고 주소를 디코드하여 레지스터에 데이터 저장하는 역할.
  2. 주기억장치 Main memory
    - CPU가 처리할 명령어와 데이터를 저장하기 위한 컴퓨터 하드웨어 장치
    - 휘발성 메모리인 RAM, 비휘발성 메모리 ROM
    - RAM은 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory)으로 나눔
    - ROM은 저장데이터를 변겨알 수 없는 MASK ROM, 저장 데이터를 1회 수정할 수 있는 PROM(programmable), 메모리에 저장된 데이터를 삭제 및 저장할 수 있는 EPROM(erasable) 으로 구분.
  3. 입출력장치
  4. 보조기억장치
    - 주기억장치 대비 속도는 느리나 용량이 크고 가격이 비교적 저렴
    - 주기억장치의 메모리 부족을 해결하기 위해 가상메모리를 위한 스왑 영역으로 사용됨. 운영체제 및 사용자 프로그램도 보조기억장치에 저장되어 있다가 시스템 구동시 주기억장치로 적재.

2 - 리눅스 설치를 위한 하드웨어 요구사항

  1. CPU
    CPU 종속 특성 부분만 어셈블리 언어로 구현하고 나머지는 C 언어도 구성. 
    GNU C가 지원하는 환경이라면 리눅스 이식 구동 가능.
    최근 CPU 64bit 를 기본으로 선택
    병렬성을 높이기 위해 코어 개수를 고려해야함.
  2. 메인보드
    대부분의 메인보드 지원
  3. 메모리 RAM
    거의 모든 메모리 지원
  4. 하드디스크
    대부분의 인터페이스를 지원. 공간을 효과적으로 나누기 위한 파티션 설정이나 메모리를 효율적으로 사용하기 위해 스왑설정 수행
  5. 모니터와 그래픽카드
    배포판을 설치하면 별도의 모니터나 그래픽 카드의 드라이버 설치 없이 사용가능.
  6. LAN 카드
    대부분의 LAN 카드, 네트워크 카드를 기본으로 지원 

2. 하드웨어의 선택

 

1 - RAID의 개요

  • 하드디스크의 고성능 구현과 신뢰성을 위해 여러개의 하드디스크를 구성하고
    일부에 중복된 데이터를 나눠 저장하는 복수 배열 독립디스크
  • RAID0은 고성능 구현을 추구하고, RAID1은 무정지 구현을 위해 사용됨.
  • RAID5 와 RAID6는 고성능과 무정지 둘 다 추구
  • 하나의 RAID 는 운영체제에서 논리적으로 하나의 하드디스크로 인식
  • 스트라이핑 기술은 디스크의 성능 향상을 위해 연속된 데이터를 여러개의 디스크에 라운드로빈 방식으로 기록하는 기술
  • 미러링 기술은 무정지를 위한 핵심기술로서, 디스크에 에러 발생시 디스크 운용정지를 막기위해 추가적으로 하나 이상의 장치에 중복 저장하는 기술.

2 -  RAID 종류

  1. RAID-0
    스트라이핑 기술을 사용하여 데이터를 디스크에 분산저장
    여러 디스크에 동시에 쓸수있어 처리속도가 빠름.
    패리티 기술을 사용하지 않아 오류가 발생하면 복구 불가.
  2. RAID-1
    미러링 기술을 사용. 두개의 디스크에 동시에 기록
    데이터를 동시에 읽을수 있어 읽기속도 향상. 쓰기 향상에는 도움을 주지않음.
    동일데이터가 양 디스크에 존재하므로 디스크 오류시 미러링된 데이터를 통해 복구 가능.
  3. RAID-2
    비트레벨의 스트라이핑을 통해 최소3개의 디스크에 데이터를 분산 저장
    오류정정부호를 기록하는 전용의 하드디스크를 이용
    ECC를 통해 오류를 복구할 수 있지만 추가 연산이 필요해 입출력 속도 떨어짐.
  4. RAID-3
    바이트 수준의 스트라이핑 통해 데이터 분산저장
    각 디스크 동시접근 가능. 순차 쓰기와 순차 읽기 성능이 우수
    패리티를 제공하므로 오류 체크 및 복구를 수행.
  5. RAID-4
    블록레벨의 스트라이핑을 통해 데이터 분산 저장.
    패리티를 이용하므로  에러 체크 및 정정 기능을 제공, 쓰기성능은 좋지않음.
    블록단위로 데이터가 저장되므로 단일 or 여러개 디스크에서 동시에 데이터 읽을수 있음.
  6. RAID-5
    블록수준 스트라이핑 저장, 패리티도 별도의 디스크가 아닌 모든 디스크에 나뉘어 저장
    성능면에서 RAID0보다 부족하지만 성능, 안정성, 용량 을 고려해 현장에서 많이 사용.
  7. RAID-6
    RAID-5와 유사한 구성, 추가적으로 패리티 구성을 포함
    2개의 디스크 오류에 대처가능
  8. RAID 0+1
    디스크 2개를 스트라이핑 기술을 사용하는 RAID 0으로 구성하고
    이러한 RAID0 구성세트를 다시 미러링 기술을 사용하는 RAID1으로 구성하는 방식
  9. RAID 1+0
    디스크 2개를 RAID1으로 구성하고 이 세트를 다시 RAID0으로 구성하는 방식
    RAID1보다 높은 성능을 제공하지만 가격이 비쌈.
  10. RAID 5+3
    RAID-3 방식에 스트라이프 어레이를 구성하는 방식

3 - 디스크 인터페이스

  1. IDE Integrated Driver Electronics
    가장 오래된 규격으로 40개의 핀으로 구성된 병렬 인터페이스
    병렬 전송을 강조하는 의미의 PATA (Parallel Advanced Technology Attachment) 로도 불림.
  2. S-ATA
    직렬로 데이터를 전달하는 인터페이스
    SATA2는 허브를 이용해 하나의 포트에 여러개의 하드디스크를 연결
  3. SCSI (Small Computer System Interface)
    고성능과 안전성, 신뢰성을 중시하는 워크스테이션 및 서버시장에서 주로 사용하던 디스크 인터페이스
    병렬전송방식
  4. SAS
    SCSI 한계를 극복하기 위해 시리얼 방식을 도입한 디스크 인터페이스
    시리얼 전송을 통해 속도를 향상

4 - LVM (Logical Volume Manager)

 

1. LVM의 개요
블록디바이스를 유연하게 관리하기 위해 여러 블록디바이스를 가상의 Logical Volume에 매핑하고 스토리지를 관리하는 커널 기능
LVM 기반 시스템은 블록디바이스 대신 LVM이 매핑한 Logical Volume에 I/O 수행
유연한 용량, 크기조절 가능하나 스토리지 풀, 온라인 데이터 재배치, 디스크 스트라이핑, 미러볼륨, 볼륨 스냅샷 기능을 제공.

LVM 시스템

 

 

2. LVM 구성도

LVM 구성도

3. 구성요소

  • PV (Physical Volume) : 기존의 블록 디스크를 LVM에서 사용할 수 있도록 변환하나 볼륨형식
  • PE (Physical Extent) : PV는 PE라 불리는 일정 크기의 블록으로 구성되며 기본크기는 4MB
  • VG (Volume Group) : 여러 PV를 하나의 VG로 묶어 통합. VG에 LV를 할당할 수 있음.
  • LV (Logical Volume) : VG에서 필요한 만큼 할당하여 만들어지는 공간,사용자는 LV를 통해 하드디스크에 접근
  • LE (Logical Extent) : LV를 구성하는 일정 크기의 블록으로 기본 크기는 PE와 마찬가지로 4MB

리눅스의 구조

1. 부트 매니저

 

1 - 부트 매니저 개요

 

1. 부트매니저의 정의

보조 기억장치에 위치한 운영체제를 주기억장치로 로드하기 위한 프로그램. 부트 로더 Boot Loader

 

2. 부트 매니저의 동작원리

시스템이 켜지면 BIOS는 디스크 첫번째 섹터(0번 섹터)인 부트 섹터에서 512바이트의 MBR (Master Boot Record)을 읽음.

IPL (Initial Program Loader) 부트로더의 일부가 먼저 실행. 파티션 테이블을 검사하여 부트로더 나머지 코드의 위치를 알아내 실행. 

 

2 - 부트 매니저의 종류

 

  1. LILO (Linux Loader)
    모든 리눅스 배포판의 표준. 가장 오래된 부트 로더. 
    설정은 /etc/lilo.conf 설정파일. 변경 후엔 LILO stage 1 부트 로더를 MBR로 다시 쓰기위해 lilo 명령을 수행해야 함.
  2. GRUB (Grand Unified Boot Loader)
    GNU프로젝트에서 만든 부트 로더
    대화형 인터페이스를 제공. 네트워크 부팅 제공.
    centos 6의 경우 /boot/grub/grub.conf 파일. 설정파일 변경우 바로 적용됨.

3 - GRUB 사용해보기

e를 누르면 해당 목록의 부트로더 설정을 변경할 수 있다.

a를 누르면 부트로더 설정 중 커널에게 인자를 수정

c를 누르면 명령 중 모드로 진입

 

4 - 환경설정 파일

변수 설명
boot 부팅 디스크를 설정
default 기본으로 부팅할 운영체제의 순서 0번은 grub.conf 상의 첫번째 운영체제
1번은 두번째 운영체제, 'Other' 운영체제를 기본으로 선택하기 위해서는 2 설정.
timeout 설정된 시간동안 선택하지않으면 default 운영체제가 로드. timeout을 설정하지 않으면 사용자가 선택할 때까지 대기
splashimage GRUB 화면의 배경이미지를 설정하며 형식은 xpm.gz 압출파일 사용
title GRUB 부팅 메뉴에 표시되는 이름
root 루트 디바이스를 설정. x는 하드디스크 파일명, y는 파티션 번호
kernel 부팅에 사용할 커널 이미지 파일 경로를 지정하고 커널 매개변수를 설정. root 파티션의 위치도 설정
Initrd 리눅스가 부팅하기 위해 필요한 프로그램 및 실행 스크립트가 포함된 이미지를 설정.
rootnoverify root 와 비슷하지만 해당 파티션을 마운트 하지 않음. NTFS 파티션과 같이 GRUB이 인식할 수 없는 파티션을 root 디바이스로 지정할 때 사용.
chainloader+1 지정한 파티션의 첫번째 섹터를 읽어 부팅을 하라는 의미

2. 주요 디렉터리 구조

 

1 - 리눅스 파일시스템 표준 File system Hierarchy Standard

BSD 파일시스템 계층 구조 기반의 리눅스 디렉터리 구조 표준.

 

2 - 주요 디렉터리

디렉터리 설명
/ 리눅스 파일시스템의 최상위 디렉터리
/bin/ 모든 사용자가 사용할 수 있는 주요 명령어들이 위치. ls , cp, mkdir, mv, rm, cat, tar 등
/boot/ 커널 파일이나 initrd 등 부팅이 필요한 파일일 위치
/dev/ 디바이스 파일이 존재하는 디렉터리
/etc/ Editable Text Configuration, Extended Tool Chest 
시스템 환경 설정 파일과 시스템 초기화 시 수행되는 스크립트 파일 위치
/home/ 로그인한 사용자의 파일, 개인설정 등 사용자 전용 홈 디렉터리.
/lib/ 시스템에 설치되어 있는 각종 라이브러리가 저장되어 있는 디렉터리.
/media/ cd-rom이나 이동식 디스크 마운트시 사용
/mnt/ 다양한 디바이스가 마운트시 사용하는 임시 디렉터리
/opt/ 추가 어플리케이션 소프트웨어 패키지
/proc/ 메모리상 존재하는 모든 프로세스들이 파일 형태로 매핑. 가상 파일시스템으로 구현. 
/root/ 루트 사용자의 홈 디렉터리
/sbin/ shutdown, ifconfig등 root가 사용하는 시스템 관리 명령어가 포함. system Binary 약자
/tmp/ 각종 프로그램들이 임시 파일을 생성하는 디렉터리
/usr/ 사용자들이 사용하기 위해 설치한 주요 명령어가 위치
/usr/bin/ 대부분의 사용자 명령어 포함
/usr/include/ 프로그래밍 언어가 사용하는 헤더파일 위치
/usr/lib/ /usr/bin/ /usr/sbin/ 에 있는 바이너리에 링크하기 위한 라이브러리
/usr/sbin/ 시스템관리자가 사용하는 명령이나 상대적으로 중요하지 않은 명령어들이 위치
/usr/src/ 다양한 바이너리의 소스코드 위치. 커널 소스코드도 위치
/usr/X11R6/ X윈도우 관련 파일 위치
/var/ 로그, 스풀 파일 등 임시로 생성되거나 상황에 따라 생성되거나 삭제될 수 있는 데이터가 보관.

 

3. 부팅과 셧다운

 

1. 부팅의 개요

전원이 켜진후 사용자가 사용할 수 있도록 운영체제를 기동하는 절차,과정.

BIOS는 MBR로부터 부트로더를 실행.

부트로더는 지정된 위치에서 커널을 메모리에 읽어 들인 후 초기화 프로세스를 실행.

사용자가 지정한 실행 레벨에 따라 지정된 스크립트를 수행하여 나머지 초기화를 완료

 

2. 부팅의 상세 절차

부팅 절차

 

3 - 로그인과 로그아웃

INIT프로세스의 실행레벨에 따라 단일 사용자 모드, 멀티 유저 모드, X윈도우를 통한 멀티 유저 모드.

 

1. 로그인

모드 실행레벨 내용
단일 사용자 모드 1 시스템에 연결된 화면과 키보드를 통해 단일 사용자 로그인 가능
멀티 유저 모드 (터미널) 2,3 실행레벨이 2일때는 네트워크를 통한 로그인이 제공되지 않고,
실행레벨3의 경우 네트워크를 통한 로그인이 제공.
멀티 유저 모드 (X윈도우) 5 X디스클레이 매니저를 통해 구현되는 그래픽 화면을통해 로그인.

 

2. 로그아웃

- logout, exit 명령어나 Ctrl+D 단축키.

 

4 - 로그인/로그아웃 관련 문제 해결

  1. Root 패스워드 분실 대응
    GRUB 부트메뉴진입 -> 커널 매개변수를 추가하기 위해 a 누름
    -> single 입력하고 엔터 -> 단일 사용자 모드로 부팅이 되면 passwd로 비밀번호 변경
  2. GRUB 패스워드 분실 대응
    설치디스크를 통해 부팅한 후 Rescue installed system 선택
    복구모드 진입시 기본 선택에서 네트워크는 No, 마운트는 Continue 선택
    셸에서 /mnt/sysimage/boot/grub/grub.conf 편집해 password 변수 삭제하여 GRUB 패스워드 제거

5 - 시스템 종료

  1. X윈도우 환경에서 셧다운
  2. 시스템 종료 방법
    # shutdown -h now
    # halt
    #poweroff
    # init 0
  3. 재부팅하는 방법
    # shutdown -r now
    # reboot
    # init 6
  4. 예약된 시간에 시스템을 종료하거나 재시작
    5분뒤 종료 : # shutdown -h +5
    특정시간 종료 : # shutdown -h 10:00
    5분뒤 재부팅 : # shutdown -r +5

4. 파일시스템의 이해

 

1. 파일시스템의 개요

  • 디스크에 사용자의 데이터를 효율적으로 저장하기 위한 파일과 디렉터리를 조직화한 체계
  • 포맷은 디스크를 일정한 크기로 분할하고 주소를 설정하여 사용자의 자료를 조직적으로 보관할 수 있게 함.
  • 데이터는 파일단위로 관리가 되며, 디스크에 저장할 때에는 레코드 단위 혹은 블록단위로 저장
    파일은 디렉터리에 속하여 그룹을 생성가능.
  • 파일 입출력시 발생하는 오류에 대해 복구할 수 있는 기능도 제공
  • 디스크 입출력은 메모리에 비해 속도가 느림. 파일 시스템은 캐시 기능을 제공하여 디스크 입출력 최소화

2. 리눅스 파일시스템의 구조

  1. ext2 의 파일시스템 개요
    ext3와 ext4모두 ext2 근간으로 발전
  2. 부트섹터 와 블록 그룹
    ext2 파일 시스템은 부트섹터와 뒤따르는 여러개의 블록 그룹들로 구성
  3. 블록 그룹
    - 블록그룹은 여러개의 블록으로 구성. 한 파일이 여러블록에 나누어서 저장되어야 하는 경우 단편화를 최소화 하기 위해 동일 블록 그룹에 위치하려고 스케줄링
    - 블록그룹은 슈퍼블록, 그룹 디스크립터 테이블, 블록 비트맵, 아이노드 그리고 사용자 데이터를 담고있는 블록 으로 구성
  4. 슈퍼 블록 super block
    - 파일시스템의 전체 내용을 담고 있는 블록
    - 블록의 크기, 총 블록의 개수, 블록 그룹의 개수, 아이노드의 개수, 그룹 내 블록의 개수,
    그룹 내 아이노드의 개수 등에 대한 정보가 포함
  5. 그룹 디스크립터 테이블 group descriptor table
    - 블록 그룹에 대한 정보를 담고 있음. 만약 블록 크기가 1KB 라면 총 32개의 그룹 디스크립터가 포함.
  6. 블록 비트맵 block bitmap
    - 블록의 할당여부를 비트로 표현. 해당 블록이 사용중이면 1  사용중이지 않으면 0
  7. 아이노드 비트맵 i-node bitmap
    아이노드의 할당여부를 비트로 나타냄.
  8. 아이노드 테이블 i-node table
    - 단일 블록이 아닌 연속된 블록으로 이루어져 있으며 각 블록은 미리 정의된 아이노드 개수 포함.
    - 아이노드의 첫번째 블록의 번호를 그룹 디스크립터에 테이블에 저장
    - 모든 아이노드의 크기는 128 바이트로 동일
  9. 아니노드 i-node
    - 실제 파일과 디렉터리의 데이터 위치를 알고있는 자료구조
    - Inode Number, 파일모드, 하드링크 수 , 소유자 ID, 파일 크기, 마지막 접근, 마지막 수정, Inode 수정, 데이터 블록 수의 정보를 가짐
    - 모든 파일과 디렉터리는 각 1개의 아이노드를 가지고 있고 고유한 주소를 가지고 있음.
    - 아이노드의 주소를 알고 있으면 해당 아이노드가 가리키는 블록 그룹을 찾아갈 수 있음.
    - 1번은 슈퍼블록, 2번은 루트 디렉터리 등 10번까지 예약이 되어있음.

3. 리눅스 로컬 파일시스템 Local Filesystems

  1. ext
    - minix 파일시스템을 개선하기위해 최대 2기가의 파티션과 255까지의 파일명을 지원하는 파일시스템 개발.
  2. ext2
    - 타임스탬프 기능, 아이노드 수정기능, 느려지는 조각화 이슈를 해결.
    - 내부에 15개의 포인터가 있는 구조, 그중 처음부터 12번째까지는 직접 블록을 위한것.
    - 13번 포인터는 간접블록, 14번째 블록은 이중간접블록, 15번째 포인터는 삼중 간접 블록을 가리킴.
  3. ext3
    - 리눅스의 대표 저널링 파일시스템
    - 로그를 통해 파일시스템을 복구하는 저널링 기술을 채용
    - 저널링에는 저널모드, 순서모드, 쓰기 저장 모드가 있다.
    - 온라인 파일시스템 증대, HTree 인덱싱 기능, ACL을 통한 접근제어를 제공.
  4. ext4
    - 큰 파일 처리를 개선하고 block mapping 방식 대신 extends 방식을 사용.
    - extents를 사용하는 ext4파티션은 ext3 방식으로 마운트 될수 없음.
    - 파일 시스템 손상 가능성을 줄여주는 저널 체크섬 기능 제공.
    - 온라인 조각모음 기능 제공, 나노 초단위 파일스탬프 제공.
  5. btrFS
    - 크리스 메이슨이 개발한 B-Tree 파일시스템
    - 특정파일, 볼륨, 하위 볼륨의 스냅샵 찍기 기능 제공.
    - 저렴한 디스크의 RAID 제공. 
    - 역참조는 파일 시스템 개체에 I/O 오류를 매핑
    - 자동 압축기능 제공.
    - 데이터 및 메타 데이터의 체크섬 제공.
  6. ZFS
    - 유닉스의 파일시스템을 대체하기 위해 SUN에서 개발한 파일시스템
    - 볼륨매니저 역할까지 수행.
    - 볼륨관리기능, 블록수준 암호화, 데이터 손상 탐지 기능, 자동 손상복구, 신속한 비동기 증분 복제, 인라인 압축 등 
  7. Reiserfs
    - 독일 한스 라이저가 개발한 저널링 파일 시스템
  8. XFS
    - 실리콘 그래픽스가 만든 고성능 64비트 저널링 파일 시스템
  9. JFS
    - IBM에 의해 개발한 64bit 저널링 파일시스템

4. 클러스터 파일시스템 Clustered Filesystems

  1. Raw Partitions
    - 파일시스템이 설정되어 있지 않은 상태
    - 운영체제의 버퍼캐시를 사용하지 않으므로 고성능의 입출력이 가능
    - 파일시스템을 통하는 오버헤드가 없음.
  2. Oracle Cluster FileSystem (OCFS)
    - Raw Partition의 다루기 어려운 문제를 해결하면서 RAC (Real Application Cluster)의 사용목적을 위해 설계된 파일 시스템
    - Raw Partition 보다 속도가 조금 느림.

5. 기타 리눅스 파일시스템

  1. minix
    앤드류 태넌바움이 교육목적으로 개발.
    초기 리눅스 개발시 이 파일시스템 채용.
    파티션 사이즈가 64MB 제한 파일이름도 14자 까지 지원
    단일 타임스탬프 사용
  2. xiafs
    minix 파일시스템 기초가 되었고, 프랭크 시아가 개발한 리눅스 커널 파일 시스템
  3. vfat
    마이크로소프트의 FAT32 파일시스템 호환을 목적으로 개발한 파일시스템
  4. isofs
    ISO 기준을 따르는 표준 CD-ROM 파일 시스템
  5. nfs
    네트워크상에서 파일시스템을 공유하기 위한 파일시스템
  6. proc
    프로세스 등 커널 정보를 표현하는 리눅스의 가상 파일시스템
  7. smb
    SMB 프로토콜을 지원하는 네트워크 파일시스템으로 최근 CIFS로 확장.

X 윈도우

1. X 윈도우의 개념

 

1 - 정의

유닉스 및 리눅스의 윈도우 시스템

 

2 - 역사

1984년 IBM, MIT, DEC 공동의 아데나 프로젝트 통해 밥 쉐이플러, 짐 게티스 가 개발

 

3 - 특징

- X 프로토콜이라 불리는 네트워크 프로토콜을 사용하고 서버 클라이언트 모델을 사용함.

- X 클라이언트는 원격지의 X 서버 시스템에서 동작하는 응용프로그램을 실행 가능.

- 사용자 인터페이스에 독립적. 
- 서버 클라이언트 모델을 사용하므로 X 프로토콜만 준수할 수 있다면 어떤 시스템이든 쉽게 X 윈도우 이식 가능.

2. X 윈도우의 구조

X 윈도우 구조

1 - X 서버

  • 디바이스와 직접 통신 수행하고 관리. TCP 포트 6000번 사용
  • 로컬의 X 클라이언트와 통신하기 위해 /tmp/.X11-unix/X0 이라는 유닉스 도메인 소켓 을 사용
  • X 클라이언트에게 디스플레이 서비스를 제공
  • 로컬 및 원격지의 다수의 X클라이언트 연결을 허용
  • 오픈소스 프로젝트로 XFree86과 X.org

2 - X 클라이언트

  • Xlib을 사용하여 작성된 일종의 응용 프로그램. 
  • 마우스 입력같은 X서버에서 발생한 이벤트를 받아 처리

3 - X 프로토콜

  • X 서버와 X 클라이언트가 정보를 주고받기 위한 메시지 형식을 정의한 통신 규약
  • Request, Reply, Event, Error로 구성
  • request queue, event queue 운용

4 - Xlib/XCB

  • 85년 C언어로 작성된 X 윈도우 시스템 프로토콜 클라이언트 라이브러리
  • X프로토콜에 상세내용을 알지 못해도 Xlib에서 제공하는 API 를 통해 X클라이언트를 개발 가능.

5- XToolkit

  • X윈도우 시스템에서 GUI 프로그램 개발을 위해 c/c++로 개발된 API 프레임워크
  • 그래픽요소를 지원하지만 XaW, Motif, OLIT와 같은 다른 라이브러리를 통해 구현되어 제공.
  • FLTK, GTK +, Qt와 같은 최근 툴킷은 Xlib/XCB 기반으로 구현

3. XFree86과 X.org

 

1 - XFree86

IBM 호환 시스템을 사용하는 리눅스 및 유닉스 계역 오픈소스 X서버 프로젝트

 

2 - X.org

XFree86 기반으로 X.org와 freedesktop.org 에서 개발

커뮤니티 프로젝트를 운영하였고 누구나 참여

 

4. X 윈도우의 계층

1 - 디스플레이 매니저

  • 로그인 매니저
  • 그래픽으로 구성된 로그인 유저 인터페이스를 사용자에게 제공하는 역할
  • 원격지의 윈도우 매니저를 실행시키는 역할
  • XDM, GDM, KDM

2 - X 세션

  • X서버에 X클라이언트가 연결되면 X세션이 형성

3 - 윈도우 매니저

윈도우의 그래픽 요소를 관리하는 매니저 프로그램, 유용한 유틸리티 제공

 

4 - 데스크톱 환경

모든 어플리케이션을 포함한 패키지 형태.

GNUME, KDE, XFCE, LXDE 등이 데스크톱 환경에 해당

 

5. 데스크톱환경 구성사례

 

1 - KDE 구성

  • 1996년 Qt라이브러리 기반 데스크톱 환경 개발
  • 파일관리자는 Konqueror 사용 윈도우 매니저는 Kwin 사용

2 - GNOME 구성 

  • GNU에서 개발한 공개형 데스크톱 환경
  • KDE 의 대안으로 개발
  • 디스플레이 매니저는 GDM 사용
  • LGPL 라이선스
  • 파일관리자는 nautilus 사용하였고 윈도우 매니저로는 2에서는 Metacity 사용 3에서는 Mutter 사용.

6. 윈도우 실행

1 - 시스템 시작시 X윈도우 실행하기

  1. /etc/initab 파일을 root 권한으로 열고 init 프로세스의 실행 레벨을 5로 수정
  2. 파일을 저장한 다음 reboot 명령을 사용하여 시스템 재부팅

2 - 터미널에서 X윈도우 실행하기

  1. 실행레벨이 3으로 설정되어 있다면 터미널 모드로 부팅
  2. 로그인후 startx 명령어를 통해 X윈도우 실행
  3. startx --을 통해 인자값 전달 할 수 있음.

3 - 원격지에서 X윈도우 실행하기

  1. xhost 명령어
    X서버에 접근할 수 있는 클라이언트를 지정하거나 해제 가능.
    # xhost [+|-] [address|hostname]
    - 현재 설정된 접근목록 출력 #xhost
    - 모든 클라이언트 접속을 허용 #xhost +
    - 모든 클라이언트 접속을 차단 #xhost -
    - 특정 IP 접속 허용 #xhost + 192.168.100.39
    - 특정 IP 접속을 차단 #xhost - 192.168.100.39
  2. DISPLAY 환경변수
    X 클라이언트 프로그램이 윈도우를 표시할 서버의 주소를 설정하는 환경변수
    - X클라이언트 프로그램의 화면 출력을 특정 IP로 보낸다.
    #export DISPLAY = "192.168.100.41:0.0"
    - X클라이언트 프로그램의 화면 출력을 특정 IP의 두번째 모니터로 보낸다
    #export DISPLAY="192.168.100.41:0.1"
  3. xauth
    .Xauthority파일에 쿠키 내용을 추가, 삭제, 리스트를 출력하는 유틸리티
    xhost가 호스트 기반 인증 방식이라면 xauth는 MMC 기반 인증방식
    설정 값을 보기위해서는 xauth 명령을 사용하고, 설정을 추가하기 위해서는 xauth add 사용

7. 윈도우 응용 프로그램

구분 X윈도우 응용 프로그램
이미지 편집 GIMP
ImageMagick
Eog
kdegraphics
미디어 재생 Totem
KMid
음악 재생 Rhythmbox
문서관리 evince
LibreOffice

 

 

 

'Linux' 카테고리의 다른 글

네트워크의 설정  (0) 2020.08.19
네트워크 기초  (0) 2020.08.16
프로세스  (0) 2020.08.16
셸 Shell  (0) 2020.08.13
운영체제, 리눅스 기초  (0) 2020.08.06