· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Docbook Sgml/Xinerama-HOWTO

XFree86 V.4.0+ 에서 Xinerama 사용하기

XFree86 V.4.0+ 에서 Xinerama 사용하기

BakerDennis

임은재

v2.0, 2000년 11월 2일

이 문서는 XFree86 버젼 4.0 이상에서 복수의 모니터와 Xinerama 기능을 설정, 사용하는 방법을 설명한다.

고친 과정
고침 v2.002000년 11월 12일고친이 임은재
v2.0 번역함, kltp.dsl 스타일쉬트에 맞게 수정
고침 v1.002000년 10월 3일고친이 임은재
v1.0 번역함.

1. 소개

이 문서의 새 버젼은 Nico Schotteliusnicos@pcsystems.de에 의해 많은 변화가 있었다.

1.1. Xinerama란 무엇인가?

왜 당신에게 Xinerama가 필요하며, 그것은 도대체 무엇인가? XFree86 4.0 이후에 소개된 Xinerama 기능은 윈도우 매니저와 어플리케이션들이 두개 이상의 물리적인 디스플레이를 한개의 가상 화면으로 사용할수 있게 해준다.

Xinerama 확장 기능의 아름다움은 완벽하게 투명한 사용자 공간에 있다. 이전에는, 어플리케이션이 오직 한개의 디스플레이만 사용할수 있었고, 두개 이상의 화면(물리적인)을 자유롭게 오고갈수 없었다. 두개의 디스플레이를 지원하도록 되어 있는 윈도매니저와 Xinerama 확장 기능을 사용하면 윈도우 매니저, 어플리케이션들이 Xinerama가 만들어 내는 큰 가상 화면을 사용할수 있다.


1.2. 가이드

이 문서는 특정 모니터나 비디오 카드의 설정을 설명하는 문서가 아니다. 저자는 당신이 이미 X 윈도우를 정상적으로 사용하고 있다고 간주하며, 더 자세한 것은 XF86 문서를 참조하라.

내가 아는 한, 멀티 헤드를 사용하기 위해서 특정 비디오 카드를 사용해야 한다는 제약은 없다. 이 문서에서 나는 AGP Fire GL 1000 과 PCI Matrox Millenium II 의 설정예를 사용한다. 나는 또한 이런 설정이 3d 가속 기능에 어떤 영향을 미치는가에 대해서는 알지 못하며, 또한 사용하고 있지도 않다.

이 하우투 문서는 텍스트 파일을 편집하고, X 윈도우를 위한 기초적인 비디오 카드 설정을 하고, 시스템 서비스를 시작/중지 할것이다. 만약 당신이 어떠한 문제라도 발견 한다면 도움을 청해라. 저자는 당신의 시스템의 어떠한 손해에도 책임이 없다.


2. 계획

실제로 Xinerama 설정은 매우 간단하다. 기본적으로 해상도, 색상수 그리고 화면 배치의 세가지 점을 고려하면 된다.


2.1. 필요한 것

최소한 두개 이상의 비디오 카드(Dual Head도 작동할 것이다)와 두대 이상의 모니터, XFree 가 작동하는 OS (예를 들어 리눅스 또는 솔라리스 같은), XFree86 4.0 버젼 이상. 당신이 사용할 비디오 카드들은 XFree86에서 이미 지원하고 있는 것이어야 한다.

다음 명령으로 X의 버젼을 확인하자.

papel:/home/nico/X/bin # X -version

다음과 같은 결과여야 한다:


  XFree86 Version 4.0 / X Window System
  (protocol Version 11, revision 0, vendor release 6400)
  Release Date: 8 March 2000
         If the server is older than 6-12 months, or if your card is newer
         than the above date, look for a newer version before reporting
         problems.  (see http://www.XFree86.Org/FAQ)
  Operating System: Linux 2.3.46 i686 [ELF]
  Module Loader present

만약 X의 버젼이 4.0 또는 그 이상(첫번째 줄)이 아니라면, 업그레이드가 필요하다. 사용중인 배포본의 패키지 매니저를 사용하던지 XFree86 에서 직접 받아 인스톨 해라.

ftp://ftp.xfree86.org/pub/XFree86/4.0/

미러 사이트를 이용하는 것이 현명한 방법이다.

http://www.xfree86.org/4.0/ftp.html

다운로드후 Xinstall.sh 쉘 스크립트로 새로운 X를 설치한다. 만일, 이와같은 방법으로 X를 설치하면 그것은 당신이 사용하고 있는 패키지 매니저와는 상관이 없다.


2.2. 디자인의 고려

Xinerama 설정을 사용해서 각각의 물리적인 화면에 각기 다른 해상도를 사용하는 것이 가능하다. 이것은 몇가지 이점이 있는데, 예를 들어, 나는 640x480 해상도만이 가능한 오래된 모니터와 17인치 모니터 (1280x1024) 를 사용했다. 나는 웹 개발자나 그래픽 디자이너들이 커다란 미리보기 화면과 하나나 두개의 작은 화면들을 사용하는 것에 관해 들어보았다. 나는 이런 유연성이 Xinerama 기능이 주는 매우 큰 장점이라고 생각한다.

Xinerama와 윈도우 매니저 사이에 몇가지 문제점이 존재한다 (8절을 참조). 그 대부분은 억세스 할수 없는 영역(dead area) 처리에 관한 문제들이다.

복수의 화면 해상도를 사용하는데 한가지 중요한 문제가 있다. 현 세대의 윈도 매니저들은 화면이 무조건 사각형이라고 인식하고, 이 사각형을 너비와 폭으로 계산한다. 예를 들어 만약 하나의 모니터는 1600x1200으로 다른 하나는 800x600 으로 설정했을때 당신의 윈도 매니저는 이것을 2400x1200 해상도로 인식할 것이다. 이와 같은 문제는 윈도 매니저의 설정에 따라 불편함을 조금이나마 줄일수 있고, 윈도 매니저들이 Xinerama 를 지원하게 되면 곧 해결될 것이다.

또한, 윈도우 매니저들은 Xinerama 사용시 창들의 최대화 개념을 적용시키지 못한다. 보통 이것은 창을 두개의 화면을 가로질러 확대하였을 경우 일어난다. 넷스케입을 두개의 모니터를 가로질러 확대시켜 웹 서핑하는 것은 별로 좋은 생각이 아니다.

화면 해상도와는 달리, Xinerama는 오직 한가지의 색상 옵션만을 사용할수 있다. 만약 당신이 두번째 디스플레이용으로 싼 비디오 카드를 사용하려 한다면 이점을 기억해야 한다. 만약 오래된 비디오 카드가 8비트 색상만을 지원한다면, 다른 디스플레이도 역시 256 색상밖에는 사용하지 못한다는 것을.


2.3. 배치

모니터 배치의 결정은 단순하다. 당신은 단지 어떻게 모니터들을 놓을 것인가 만을 결정하면 된다. 대부분의 사람들은 큰 모니터옆에 작은 모니터를 놓을 것이며, 또한 포개 놓거나, 더 복잡한 배치들을 생각해 볼수도 있다. 한가지 상기해야 할것은 대부분의 윈도 매니저들은 직사각형의 디스플레이를 기대한다.


3. 비디오 카드 설정

먼저, 이전 설정 파일을 백업해라, 나는 다음과 같이 했다:

root# > cp /etc/X11/XF86Config /etc/X11/XFree86Config.working

멀티헤드 설정을 하기전에 시스템에 존재하는 모든 비디오 카드들이 제대로 작동하게 끔 설정해 놓아야 한다. 그렇지 않다면, 비디오 카드/모니터들을 인스톨하고 설정해라. 만약 당신의 비디오 카드들이 동일한 것이라면 설정 파일들을 복사하여 손쉽게 설정할수 있을것이다.

주의: 만약 당신이 아래의 기술을 사용한다면, 비디오 카드들을 물리적으로 교환해야 하는 일을 피할수 있다.

각각의 비디오 카드들의 설정이 끝났다면, 나중을 위해 설정 파일을 백업 또는 프린트 해라. 내가 한 방법은 다음과 같다:

root# > cp /etc/X11/XF86Config /etc/X11/XFree86Config.Matrox

만약 당신의 비디오 카드들이 동일한 것이라면 아마 1개의 복사본만이 필요할 것이다. 그러나 이 단계를 빼먹지 마라, 어떠한 상황에서도 백업파일을 유용할 것이다.

각각의 비디오 카드에 대한 설정이 모두 되어 있다면 당신은 목표에 거의 다 왔다...


4. PCI bus ID 알아내기

이제 각각의 비디오 카드들을 시스템에 장착하고 모니터를 연결한다. 후에 무엇이든지 바뀐다면 당신은 이 단계를 되풀이 해야 한다.

다음 단계는 X 가 실행되고 있지 않는 콘솔상에서 해야 한다. 지금 X 상이라면 종료하고, 만약 xdm 이나 gdm 등을 사용하고 있다면 역시 종료시켜라. 당신이 RedHat 계열의 배포본을 사용하고 있다면 다음과 같은 방법으로 디스플레이 매니저를 종료시킬수 있다.

root# > telinit 3

데비안, 스톰 또는 코렐 이라면:

root# > /etc/init.d/xdm stop

만약 위에 해당되지 않는다면, 리부팅 해서 싱글 유저 모드로 부팅해라.

멀티-헤드 설정을 위해 config 파일에 정확히 각 비디오 카드를 적어 줄 필요가 있다. 이것을 위해 당신은 시스템에 의해 할당된 각각의 PCI 버스 식별자를 사용해야 한다. 이때 당신이 사용할 모든 비디오 카드는 시스템에 모두 장착되어 있어야 한다.

PIC bus ID 를 찾기 위해서는 :



root# > XFree86 -scanpci

X 는 각각의 디바이스에 대한 PCI 버스 코드를 출력할 것이다.

(0:0:0) Intel 82443BX Host
(0:1:0) Intel 82443BX AGP
(0:7:0) Intel 82371AB PIIX4 ISA
(0:7:1) Intel 82371AB PIIX4 IDE
(0:7:2) Intel 82371AB PIIX4 USB
(0:7:3) Intel 82371AB PIIX4 ACPI
(0:9:0) Adaptec 2940U/UW
(0:11:0) 3COM 3C900 10b Combo
(0:12:0) Matrox unknown card (0x2007) using a Matrox MGA 2164W
(1:0:0) unknown card (0x1092/0x0152) using a Texas Instruments Permedia 2

0으로 시작되는 것은 PCI 카드와 디바이스이며, AGP 카드는 1로 시작한다. 나의 경우 Matrox Millenium II (0:12:0) 과 Diamond FireGL(1:0:0) 이 그것이다. 당신의 비디오 카드를 찾아 숫자들을 적어 놓는다. 어떤 카드에 어떤 숫자가 할당되어 있는가가 중요하다.


5. XConfig 파일 수정하기

이번장은 약간 혼란스러울 것이다. 나는 XF86Config 의 맨페이지를 읽어보기를 권하며, 최소한 대충이라도 살펴보기를 바란다. 나는 여기서 안도망가고 기다린다... :-)

 root# > man XF86Config 


5.1. 모든 비디오 카드 추가하기

XF86Config 파일을 열어, 모니터 섹션을 살펴보자. 이제 전에 백업해 놓은 각각의 설정파일들 에서 Monitor, Device, Screen 섹션을 복사해 온다. 헷갈리나요? 각 비디오 카드/모니터 조합을 위해 Monitor, Device, Screen 섹션이 있어야 하며, 각 섹션은 그만의 식별자를 가져야 한다. 아직도 헷갈린다면, 이 문서의 마지막에 있는 샘플 설정 9절을 살펴보라. 맨 페이지는 읽어 보았는지?


5.2. 비디오 카드 식별자

이제 각각의 Device 섹션의 끝에 PCI BusID 옵션을 추가해야 한다. 앞의 단계에서 확인한 비디오 카드들의 BusID 를 다음과 같은 형식으로 적어준다 : BusID "PCI:0:12:0". 다음은 나의 비디오 카드의 Device 섹션이다.


Section "Device"
    Identifier  "FireGL"
    Driver      "glint"
    BusID      "PCI:1:0:0"
EndSection

AGP 카드들도 역시 같은 형식이다.


5.3. ServerLayout 항목 설정

이제 XF86Config 파일 끝에 위치하고 있는 ServerLayout Section 을 수정할 필요가 있다. ServerLayour 항목은 논리적으로 입력 장치와 화면들을 어떻게 할당하는가를 설정한다. 기본 설정은 하나의 화면에 키보드와 마우스가 할당되어 있다. 모든 화면을 위해 각각의 Screen 섹션을 만들어줄 필요가 있다.

출발점으로 기존의 Screen 섹션 설정을 참고해서 당신의 다른 Screen 섹션을 추가해라. 다음과 같은 형태일 것이다.

Screen "Screen 2" 관계 "Screen 1"
이것은 "Screen 2" 와 "Screen 1"의 관계를 정의한다. 관계에 해당되는 옵션은 다음과 같다 : RightOf, Below, Above, LeftOf, Absolute X Y, Relative. 내 설정에서와 같은 첫번째 4개의 옵션은 매우 명백하다.

Section "ServerLayout"
    Identifier  "Simple Layout"
    Screen "Screen 2"
    Screen "Screen 1" RightOf "Screen 2"
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
EndSection

또 다른 예를 참고해라. .


6. 설정 테스트하기

XF86Config 파일의 수정이 끝났다면, 그것을 저장하고 테스트 해보자 :

 root# > startx -- +xinerama 

X 와 복수의 모니터들이 정상적으로 작동하기를 희망한다.


7. 시작 파일 편집하기

지금 까지가 성공적이 었다면 당신은 이제 부터 자동으로 X 를 실행 하게 하고 싶을 것이다. 여러가지 방법이 있으며, 내가 사용한 것보다 더 낳은 방법이 있을 것이다. 나는 다음과 같은 방법으로 startx 와 gdm 을 바꾸었다.

만약 당신이 콘솔상에서 X를 실행한다면, startx 스크립트에 +xinerama 옵션을 추가한다.

 root# > vi /usr/X11R6/bin/startx 

X 는 마지막의 xinit 명령에 의해 시작된다. 바로 그 라인의 끝에 +xinerama 을 추가해라.

gdm 를 설정하기 위해서는 /etc/X11/gdm/gdm.conf 파일의 [servers] 항목을 살펴보라. 그리고 다음과 같이 0= 로 끝나는 라인에 +xinerama 옵션을 추가한다 :

 0=/usr/bin/X11/X +xinerama 

나는 kdm 또는 xdm을 Xinerama를 위해 설정한적이 없지만, 다음 팁을 Dalibor "dali@dali.net.nz"으로 부터 받았다.


나는 슬랙웨어 7.x 에서의 시작 파일을 다음과 같이 수정했다.
(KDM과 X4.01 을 사용)

/var/X11R6/lib/xdm/Xservers 을 수정,
다음과 같이 +xinerama 을 마지막 줄에 추가.

:0 local /usr/X11R6/bin/X +xinerama

KDM은 XFree xdm 설정파일을 사용하므로, 만약 당신이 xdm을 사용한다면 역시 동일하게 적용될 것이다.


8. 윈도우 매니저와 Xinerama

위에서 상기한대로, 윈도우 매니저들은 Xinerama를 위해 다시 써질 필요는 없지만, Xinerama 사용자들을 위해 몇가지 추가되야 할것 들이 있다. 내가 생각하는 것들은 다음과 같다:

* 지능적인 창 배치. 억세스 할수 없는 영역(dead area) 또는 두 화면에 걸처져 창이 배치되는 것이 없어야 한다. 새로운 창은 반듯이 현재 화면에 배치되야 한다.

창의 최대화는 반듯이 현재 작업 화면에서만 이루어져야 한다.

다이알 로그, 정보 메세지들이 두 화면에 걸쳐서 나타나서는 않된다.

나는 여러 윈도우 매니저의 메일링 리스트, FAQ 그리고 개발자들에게의 이메일등으로 Xinerama과의 작동 여부를 찾아보았다. 내가 조사했던 윈도우 매니저/데스크탑 환경인 Blackbox, Enlightenment, KDE, WindowMaker, XFCE 중에서 Enlightenment 와 Sawfish만이 Xinerama를 지원하였다. 밑에 이것을 설명한다.


8.1. Enlightenment

2000년 3월 26일 그들의 뉴스 페이지에서:

E 의 Xinerama 지원

지난 주말에 xinerama지원을 추가했다. 이제 두개의 디스플레이간에 창의 이동이 가능하고, 팝업되는 창은 항상 현재 포커스된 디스플레이에 나타날 것이다(특별히 당신이 위치를 지정하거나, 다른 위치에 저장을 하지 않는 이상). 창의 최대화(당신이 특별히 모든 디스플레이를 이용한 창의 최대화를 원하지 않는 이상)는 현재 디스플레이에서 이루어 진다. 만약 xinerama를 사용한다면 CVS 버젼 E를 사용, 테스트해보고 우리에게 피드백을 주기 바란다.


8.2. Sawfish

Sawfish의 메일링 리스트에서 Xinerama 지원이 개발중에 있다는 것을 알았다. 다음 기능들은 현재 Sawfish의 개발 버젼에 포함되어 있다.

  * 창이 디스플레이들에 걸치는 것을 예방
  * 창이 사용불가 영역에 나타나는 것을 예방
  * 디스플레이간에 창의 이동
  * Centered 와 Random placement 모드시 창은 현재 디스플레이에만 위치되도록 한것.
나는 이 기능들을 테스트 해보지 않았다.


9. XF86Config 설정 파일 예

나의 현재 XF86Config 파일 :


Section "Module"
    Load        "dbe"  	# Double buffer extension
    SubSection  "extmod"
      Option    "omit xfree86-dga"   # don't initialise the DGA extension
    EndSubSection
    Load        "type1"
    Load        "freetype"
# This loads the GLX module
#    Load       "glx"
EndSection

Section "Files"
    RgbPath	"/usr/X11R6/lib/X11/rgb"
    FontPath   "/usr/X11R6/lib/X11/fonts/local/"
    FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
    FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/Type1/"
    FontPath   "/usr/X11R6/lib/X11/fonts/Speedo/"
    FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/"
    FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/"
# The module search path.  The default path is shown here.
#    ModulePath "/usr/X11R6/lib/modules"
EndSection

Section "ServerFlags"

EndSection

Section "InputDevice"
    Identifier	"Keyboard1"
    Driver	"Keyboard"
    Option "AutoRepeat" "500 30"
    Option "XkbRules"	"xfree86"
    Option "XkbModel"	"pc101"
    Option "XkbLayout"	"us"
EndSection

Section "InputDevice"
    Identifier	"Mouse1"
    Driver	"mouse"
    Option "Protocol"    "PS/2"
    Option "Device"      "/dev/psaux"
EndSection

Section "Monitor"
    Identifier  "Mini"
    HorizSync   31.5
    VertRefresh 50-90
EndSection

Section "Monitor"
    Identifier  "Impression"
    HorizSync   31.5 - 82.0
    VertRefresh 50-100
EndSection

# 비디오 카드 #1, Matrox Millenium II PCI 비디오 카드
Section "Device"
    Identifier  "Matrox"
    Driver      "mga"
    VideoRam 8192
    BusID      "PCI:0:12:0"
EndSection

# 비디오 카드 # 2, Fire GL 1000 AGP 비디오 카드.
Section "Device"
    Identifier  "FireGL"
    Driver      "glint"
    #VideoRam    8192
    BusID      "PCI:1:0:0"

EndSection

Section "Screen"
    Identifier  "Screen 2"
    Device      "FireGL"
    Monitor     "Impression"
    DefaultDepth 16

    Subsection "Display"
        Depth       16
        Modes       "1280x1024" "640x480"
        ViewPort    0 0
    EndSubsection
EndSection

# I used the virtual option so it is
#   the same heighth as the larger monitor,  this is not necessary.
Section "Screen"
    Identifier  "Screen 1"
    Device      "Matrox"
    Monitor     "Mini"
    DefaultDepth 16

    Subsection "Display"
        Depth       16
        Modes       "640x480"
        ViewPort    0 0
        Virtual     640 1024
    EndSubsection
EndSection

Section "ServerLayout"
    Identifier  "Simple Layout"
    Screen "Screen 2"  
    Screen "Screen 1" Rightof "Screen 2" 
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
EndSection

다른 모니터와 동일하게 설정한 다른 예.

Section "ServerLayout"
    Identifier  "Simple Layout"
    Screen "Screen 2"
    Screen "Screen 1" Below "Screen 2"
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
EndSection

화면들은 또한 겹쳐질수 있다. 이 설정으로 두개의 모니터가 80 픽셀정도 겹쳐진다.

Section "ServerLayout"
    Identifier  "Simple Layout"
    Screen "Screen 2"
    Screen "Screen 1" Relative "Screen 2" 1200 0
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
EndSection


10. Credits

소개 부분과 첫번째 장의 많은 부분이 Nico Schottelius nicos@pcsystems.de>에 의해 추가되었으며, KDM, xdm 설정은 Dalibor dali@dali.net.nz>가 보내준 이메일에 기초하였다.

또한 팁과 제안들을 보내준 많은 분들께 감사드린다.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:29
Processing time 0.0194 sec