Trans:XServerConfigHowTo

Gentoo Korea Wiki
둘러보기로 가기 검색하러 가기

X 윈도 서버는 무엇인가요?

그래픽 대 명령줄

보통 사용자라면 명령을 입력하는 행위를 끔찍하게 생각할 것입니다. 왜 젠투(와 보통 리눅스 배포판에서)가 제공하는 자유로움을 통해 가리켜서 누르는 동작을 할 수 없었을까요? 글쎄요, 물론 이제부터는 할 수 있습니다! 리눅스에서는 여러분이 설치한 환경 위에 삐까뻔쩍한 사용자 인터페이스와 환경을 다양하게 제공합니다.

이러한 점이야 말로 리눅스로 건너온 새로운 사용자들이 굉장히 놀랄만한 것입니다: 그래픽 사용자 인터페이스는 더 이상 시스템에서 돌아가는 프로그램 그 이상이 아닙니다. 리눅스 커널이나 다른 시스템의 일부도 아닙니다. 여러분의 워크스테이션에서 그래픽 기능을 완전히 사용할 수 있게 하는 강력한 수단입니다.

표준이 중요한 것처럼, 사용자와 마우스, 키보드 또는 기타 입력 수단을 통해 의사소통하는 창을 화면에 그리고 이동하는 표준은 아직까지는 만들어진 구현체중 중요한 부분이며 이를 X 윈도 시스템이라고 합니다. 보통 X11 또는 그냥 X라고 줄여서 부릅니다. Unix, 리눅스 같은 운영체제상에서 동작하며 전세계에서 사용하고 있습니다.

그래픽 사용자 인터페이스를 실행할 수 있게 하는 기능을 제공하며 X11 표준을 사용하는 프로그램은 Xorg-X11이며 XFree86 프로젝트에서 갈라져나왔습니다. XFree86은 GPL 라이선스와 호환되지 않는 라이선스를 사용하기로 했습니다. 따라서, Xorg 사용을 추천합니다. 공식 포티지 트리에서는 XFree86 패키지를 더이상 제공하지 않습니다.

X.org 프로젝트

[X.org http://www.x.org/] 프로젝트는 X11 시스템의 자유 재배포 가능, 오픈소스 구현체로 만들었고 관리중입니다. X11-기반 데스크톱 기반 환경 오픈소스입니다.

Xorg는 여러분이 실행하려는 그래픽 프로그램과 하드웨어간의 인터페이스를 제공합니다. 이외에도 Xorg는 완전한 네트워크 인식 기반을 갖추고 있으며, 이는 여러분이 다른 프로그램을 보고 있는 동안 시스템에서 프로그램을 실행할 수 있음을 의미합니다(주: 멀티태스킹).

Xorg 설치

Xorg를 설치할 수 있기 전에 시스템을 준비해야 합니다. 먼저 입력 장치와 화면 출력 카드를 커널에서 지원하도록 설정하겠습니다. 그 다음 /etc/portage/make.conf (/etc/make.conf를 사용하십시오. 역자 주.) 를 준비하여 올바른 드라이버와 Xorg 패키지를 빌드하고 설치할 수 있게 하겠습니다.

입력 드라이버 지원

기본적으로 Xorg는 일반 입력장치 드라이버인 evdev를 사용합니다. 커널 설정을 바꾸어 evdev 지원을 활성화 해야 합니다. 커널을 어떻게 설정해야 할지 모르겠다면 [커널 설정 안내서]를 읽으십시오.


코드 예제 2.1: 커널에서 evdev 활성화
Device Drivers --->

  Input device support --->

    <*> Event interface


커널 모드 설정

최근 오픈소스 비디오 카드 드라이버는 커널 모드설정(KMS)에 의존합니다. KMS에서는 깜빡임 감소, 빠른 사용자 전환, 내장 프레임버퍼 콘솔, 콘솔에서 Xorg로의 감쪽같은 스위칭 등을 포함한 개선된 그래픽 부팅을 지원합니다. KMS는 커널 설정에서 비활성해야 하는 기존의 프레임버퍼 드라이버와 충돌합니다.

먼저 KMS을 위한 커널을 준비합니다. 여러분이 사용하고 있는 Xorg 비디오 카드 드라이버와 상관 없이 이번 과정을 밟아나가야 합니다.


코드 예제 2.2: 프레임버퍼 설정
Device Drivers --->

Graphics support --->
  Support for frame buffer devices --->
  (VGA, Intel, nVidia, ATI를 포함한 모든 드라이버 비활성화)

  (한참 아래로 내려가서 기본 콘솔 지원을 활성화하십시오. KMS가 이 옵션을 사용합니다.)
    Console display driver support --->

      <*> Framebuffer Console Support


다음, 비디오 카드 드라이버에 맞는 적당한 KMS 드라이버를 사용하도록 설정하십시오. Intel, nVidia, AMD/ATI는 대부분의 일반 카드이므로 다음 코드 예제에서 참조하시면 됩니다.

인텔 카드용 설정:


코드 예제 2.3: 인텔 설정
Device Drivers --->

Graphics support --->
  /dev/agpgart (AGP Support) --->
    <*> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
  Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
    <*> Intel 8xx/9xx/G3x/G4x/HD Graphics

    [*] Enable modesetting on intel by default


엔비디아 카드용 설정:


코드 예제 2.4: 엔비디아 설정
Device Drivers --->

Graphics support --->
  Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->

    <*> Nouveau (nVidia) cards


최근 AMD/ATI 카드([RadeonHD 2000 이상])에서는 emerge radeon-ucode또는 emerge linux-firmware를 실행하셔야 합니다. 이 패키지를 설치하고 나면 다음처럼 커널을 설정하십시오:


코드 예제 2.5: AMD/ATI 설정

(radeon-ucode 펌웨어를 사용하려면 커널을 설정합니다)
Device Drivers --->
  Generic Driver Options --->
    [*] Include in-kernel firmware blobs in kernel binary
# RadeonHD 2000, 3000, and 4000 series cards:
(radeon/R600_rlc.bin radeon/R700_rlc.bin) External firmware blobs
# RadeonHD 5000, a.k.a Evergreen:
(radeon/CEDAR_me.bin radeon/CEDAR_pfp.bin radeon/CEDAR_rlc.bin
radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin radeon/CYPRESS_rlc.bin
radeon/JUNIPER_me.bin radeon/JUNIPER_pfp.bin radeon/JUNIPER_rlc.bin
radeon/REDWOOD_me.bin radeon/REDWOOD_pfp.bin
radeon/REDWOOD_rlc.bin) External firmware blobs
# Radeon HD 6000/7300 series Fusion APUs:
(radeon/PALM_me.bin radeon/PALM_pfp.bin radeon/SUMO2_me.bin
radeon/SUMO2_pfp.bin radeon/SUMO_me.bin radeon/SUMO_pfp.bin
radeon/SUMO_rlc.bin) External firmware blobs
# Radeon HD 6400-7600 aka. Northern Islands:
(radeon/BARTS_mc.bin radeon/BARTS_me.bin radeon/BARTS_pfp.bin
radeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin
radeon/CAICOS_pfp.bin radeon/CAYMAN_mc.bin radeon/CAYMAN_me.bin
radeon/CAYMAN_pfp.bin radeon/CAYMAN_rlc.bin radeon/TURKS_mc.bin
radeon/TURKS_me.bin radeon/TURKS_pfp.bin) External firmware blobs
# Radeon HD 7500/7600 series Fusion APUs:
(radeon/ARUBA_me.bin radeon/ARUBA_pfp.bin radeon/ARUBA_rlc.bin)
External firmware blobs
# Radeon HD 7700-7900 aka. Southern Islands:
(radeon/PITCAIRN_ce.bin radeon/PITCAIRN_mc.bin radeon/PITCAIRN_me.bin
radeon/PITCAIRN_pfp.bin radeon/PITCAIRN_rlc.bin radeon/TAHITI_ce.bin
radeon/TAHITI_mc.bin radeon/TAHITI_me.bin radeon/TAHITI_pfp.bin
radeon/TAHITI_rlc.bin radeon/VERDE_ce.bin radeon/VERDE_mc.bin
radeon/VERDE_me.bin radeon/VERDE_pfp.bin radeon/VERDE_rlc.bin)
External firmware blobs
# all:
(/lib/firmware/) Firmware blobs root directory

(라데온 KMS 지원을 활성화 합니다)
Device Drivers --->
  Graphics support --->
    <*> Direct Rendering Manager --->
    <*> ATI Radeon
      [*] Enable modesetting on radeon by default



참고: 이전 라데온 카드(X1900 이전) 은 radeon-ucode 패키지 또는 어떤 펌웨어 설정도 필요하지 않습니다. 다이렉트 렌더링 관리자와 ATi 라데온 모드설정만 활성화 하십시오.


이제 KMS 설정이 끝났습니다. 계속해서 다음 절에서 /etc/portage/make.conf를 준비하도록 하겠습니다.

make.conf 설정

이제 커널 준비가 끝났고 Xorg를 설치할 수 있기 전에 /etc/portage/make.conf에서 중요한 두가지 변수를 설정해야 합니다. 첫번째 변수는 VIDEO_CARDS입니다. 이 변수는 여러분이 사용하려는 비디오 카드 드라이버를 설정하는데 사용하며 보통 여러분이 가지고 있는 비디오 카드의 종류에 따릅니다. 대부분의 일반적인 설정은 엔비디아에 대해서는 nouveau, ATI 카드에 대해서는 radeon입니다. 두가지 드라이버는 활발하게 개발중이며 지원이 잘 되고 있는 오픈소스 드라이버입니다.


주의: nouveau드라이버는 최근 제대로 동작하지 않으며, 여러가지 문제점을 일으키고 있습니다. 제조사가 직접 공급하는 nvidia-drivers를 사용하십시오. 역자 주



참고: 엔비디아와 AMD/ATi에 대한 상업용 드라이버인 nvidiafglrx 사용을 시도해볼 수도 있습니다. 그러나 상업용 드라이버 설정은 이 안내서의 범위를 벗어납니다. [젠투 리눅스 엔비디아 안내서] 와 [젠투 리눅스 ATi 자주 묻는 질문]을 읽어주십시오. 어떤 드라이버를 골라야 할지 모르겠다면, 이들 안내서를 참조하시면 됩니다.


intel 드라이버는 공통 인텔 통합 그래픽 칩셋이 달린 데스크톱과 랩톱에서 사용할 수도 있습니다.


참고: VIDEO_CARDS 에 공백으로 구분한 하나 이상의 드라이버가 들어갈 수도 있습니다.


두번째 변수는 INPUT_DEVICES이며, 입력 장치에 대해 어떤 드라이버를 빌드할지 결정하는데 사용합니다. 대부분의 경우 evdev로 설정하면 잘 동작합니다. 랩톱의 시냅틱 터치패드와 같은 다른 입력 장치를 사용하겠다면, INPUT_DEVICES에 추가했는지 확인하십시오.

이제 여러분이 사용할 드라이버가 무엇인지 결정하고, 필요한 설정을 /etc/portage/make.conf 파일에 추가해야 합니다.


코드 예제 2.6: make.conf 항목 예제
(마우스, 키보드, 시냅틱 터치패드 지원)

INPUT_DEVICES="evdev synaptics"
(엔비디아 카드)
VIDEO_CARDS="nouveau"
(AMD/ATI 카드)

VIDEO_CARDS="radeon"


여기서 제안한 설정이 동작하지 않으면 emerge -pv xorg-drivers를 실행하여 존재하는 모든 옵션을 선택하고, 어떤 요소를 시스템에 적용할지 선택해야 합니다. 이 예제는 키보드, 마우스, 시냅틱 터치패드, 라데온 비디오 카드 설정에 대한 시스템의 예제입니다.


코드 예제 2.7: 존재하는 모든 드라이버 옵션 표시
# emerge -pv xorg-drivers


These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild R ] x11-base/xorg-drivers-1.9 INPUT_DEVICES="evdev synaptics
-acecad -aiptek -elographics% -fpit% -joystick -keyboard -mouse -penmount -tslib
-virtualbox -vmmouse -void -wacom"
VIDEO_CARDS="radeon -apm -ark -ast -chips -cirrus -dummy -epson -fbdev -fglrx
(-geode) -glint -i128 (-i740) (-impact) -intel -mach64 -mga -neomagic (-newport)
-nouveau -nv -nvidia -r128 -rendition -s3 -s3virge -savage -siliconmotion -sis
-sisusb (-sunbw2) (-suncg14) (-suncg3) (-suncg6) (-sunffb) (-sunleo) (-suntcx)
-tdfx -tga -trident -tseng -v4l -vesa -via -virtualbox -vmware (-voodoo) (-xgi)"
0 kB


필요한 모든 변수를 설정하고 나면 Xorg 패키지를 설치할 수 있습니다.


코드 예제 2.8: Xorg 설치
(udev USE 플래그가 있는지 확인)

# echo "x11-base/xorg-server udev" >> /etc/portage/package.use
(Xorg 설치)
# emerge xorg-server



참고: 좀 더 가벼운 xorg-server대신에 xorg-x11 메타패키지를 설치할 수 있습니다. 기능적으로 xorg-x11xorg-server는 같습니다. 그러나 xorg-x11에는 수많은 언어의 거대한 글꼴 모음과 같이 여러분이 필요로 하지 않을지도 모르는 많은 패키지를 가져옵니다. 이 요소들이 데스크톱을 동작하는데 필요하진 않습니다.


설치가 끝나면, 계속하기 전에 일부 환경 변수를 재초기화 해야 합니다.


코드 예제 2.9: 환경 변수 재초기화

# env-update
# source /etc/profile


Xorg 설정

X 서버는 Xorg의 설정 파일을 직접 편집할 필요가 없도록 특별히 설계되었습니다. 화면과 키보드, 마우스같은 장치는 감지하고 설정할 것입니다. 어떤 설정 파일을 편집하지 않고도 [X를 시작]해보셔야 합니다. 만약 시작하지 않으면 다른 문제가 있을텐데, 다음 절에서와 같이 Xorg를 직접 설정하는 방법이 필요합니다.

xorg.conf.d 디렉터리


참고: xorg.conf.d의 파일을 설정하는 건 "최후의 수단" 옵션으로서 고려되어야 합니다. 가능하다면 어떤 특별한 설정없이도 동작이 되어야 합니다. 그래도 설정대로 돌아가지 않는다면 계속 읽어내려가십시오.


Xorg의 설정 파일은 /etc/X11/xorg.conf.d 에 저장합니다. 각각의 파일은 유일한 이름을 지니고 있으며 .conf로 끝납니다. 파일 이름이 숫자로 시작한다면, Xorg는 숫자 크기 순으로 파일을 읽어들일 것입니다. 10-evdev.conf 파일은 20-synaptics.conf 이전에 읽어들일 것이며, 그 다음과정에도 역시 비슷하게 진행합니다. 숫자를 부여할 필요는 없지만, 여러분이 설정 내용을 잘 모아놓을 수 있게 도움을 줍니다.


참고: Xorg는 /usr/share/doc/xorg-server-${version}/xorg.conf.example.bz2로 예제 설정파일을 제공합니다. /etc/X11/xorg.conf.d/ 에 여러분의 설정 파일을 만들려면 이 파일을 사용하시면 됩니다. 이 예제는 상당히 많은 설명이 달려있습니다. 문법에 대한 더 많은 문서 내용이 필요하다면, man xorg.conf를 읽어보십시오. 다른 예제는 이 안내서 마지막 부분의 참고 자료에서 찾으실 수 있습니다.


startx 사용하기

이제 X 서버를 시작하려면 startx를 실행해보십시오. startx 명령은 X 세션을 실행하는 스크립트입니다. 이 스크립트는 X 서버를 시작하며 위에 그래픽 프로그램을 차곡차곡 올립니다. 다음 방식에 따라 어떤 프로그램을 실행할지를 결정합니다.

  • 사용자 디렉터리에 .xinitrc가 있다면, .xinitrc에 나열된 명령을 실행합니다.
  • 그렇지 않으면 XSESSION 변수의 값을 읽고, 이 값에 따라 /etc/X11/Sessions/ 디렉터리에 있는 세션중 하나를 실행합니다. 시스템의 모든 사용자에 대한 기본 값을 지정하려면 /etc/env.d/90xsession에 XSESSION 변수를 지정할 수 있습니다. 예를 들어, 루트 사용자 권한을 이용하여 echo XSESSION="Xfce4" > /etc/env.d/90xsession을 실행해보십시오. 이 명령을 내리면 90xsession파일을 만들고 기본 X 세션을 Xfce로 지정할 것입니다. 90xsession의 내용을 바꾸고 나면 env-update을 잊지 말고 실행하십시오.


코드 예제 3.1: X 시작하기
# startx


윈도우 매니저를 아직 설치하지 않았다면, 까만 화면만 보일 것입니다. 무언가 잘못되었을지도 모르는 현상일 수 있으므로 X를 테스트 하려면 twmxterm을 이머지 하실 수도 있습니다

단지 두 개의 프로그램만 설치했다면, startx를 다시 실행해보십시오. X가 제대로 동작하는지 쉽게 확인할 수 있도록 해주는 몇가지 xtern 창이 나타나야 합니다. 결과에 만족하신다면, 시험 패키지를 제거하기 위해 루트 계정으로 emerge --unmerge twm xterm을 실행하십시오. 적당한 데스크톱 환경을 설정하고 나면 이럴 필요는 없습니다.

X 설정 조절

해상도 설정

화면 해상도가 잘못된 것 같다면, xorg.conf.d 설정에서 섹션 두 군데를 확인해보아야 합니다. 먼저 X 서버를 구동할 해상도를 목록으로 나열한 Screen 섹션이 있어야 합니다. 이 섹션은 모든 해상도 목록을 보여주진 않습니다. 이런 경우라면, Xorg에서는 두번째 섹션 Monitor를 기반으로 해상도를 추정합니다.

이제 해상도를 바꿔보도록 하겠습니다. /etc/X11/xorg.conf/d/40-monitor.conf의 예제에서 X 서버가 1440x900 해상도를 기본으로 시작하도록 PreferredMode 줄에 추가하겠습니다. xrandr을 실행하는 도중 값을 가져갈 Device 섹션의 Option은 여러분의 모니터(DVI-0)와 이름이 일치해야 합니다. 이 정보를 충분히 가져오려면 emerge xrandr을 실행해야 합니다. (Device 섹션 에서) 모니터 이름 다음의 인자는 Monitor 섹션의 Identifier와 일치해야 합니다.


코드 예제 4.1: 모니터 섹션 바꾸기
# nano -w /etc/X11/xorg.conf.d/40-monitor.conf


Section "Device"

Identifier "RadeonHD 4550"

Option "Monitor-DVI-0" "DVI screen"
EndSection
Section "Monitor"

Identifier "DVI screen"

Option "PreferredMode" "1440x900"

EndSection


여러분이 사용하려는 해상도를 확인하려면 X를 실행(startx)하십시오.

다중 모니터

/etc/X11/xorg.conf.d에 하나 이상의 모니터를 설정할 수 있습니다. 제각각의 모니터에 해야 할 일은 식별자(Identifier)를 부여한 후, 다른 모니터에 대해 "RightOf"또는 "Above" 문자열을 사용하여 실제 위치를 목록에 적어주어야 합니다. 다음 예제에서는 왼쪽에 DVI모니터를 오른쪽에 VGA모니터를 놓고 어떻게 설정하는지 보여드리겠습니다.


코드 예제 4.2: 다중 모니터 설정
# nano -w /etc/X11/xorg.conf.d/40-monitor.conf


Section "Device"
  Identifier "RadeonHD 4550"
  Option "Monitor-DVI-0" "DVI screen"
  Option "Monitor-VGA-0" "VGA screen"
EndSection
Section "Monitor"
  Identifier "DVI screen"
EndSection
Section "Monitor"
  Identifier "VGA screen"
  Option "RightOf" "DVI screen"
EndSection


키보드 설정

국제 키보드를 사용하려고 X를 설정한다면, /etc/X11/xorg.conf.d 에서 적당한 설정 파일을 만들어야 합니다. 이 예제에서는 체코 키보드 배치를 사용하도록 합니다.


코드 예제 4.3: 국제 키보드 사용
# nano -w /etc/X11/xorg.conf.d/30-keyboard.conf


Section "InputClass"
  Identifier "keyboard-all"
  Driver "evdev"
  Option "XkbLayout" "us,cz"
  Option "XkbModel" "logitech_g15"
  Option "XkbRules" "xorg"
  Option "XkbOptions" "grp:alt_shift_toggle,grp:switch,grp_led:scroll,compose:rwin,terminate:ctrl_alt_bksp"
  Option "XkbVariant" ",qwerty"
  MatchIsKeyboard "on"

EndSection


"중단" 명령(terminate:ctrl_alt_bksp)은 Ctrl+Alt+백스페이스 키 조합으로 X 세션을 끌 수 있게 해줍니다. 하지만 이 방법을 사용하면 X를 보기 좋지 않은 모양새로 빠져나가게 합니다. 항상 원하는 방식은 아닐 것입니다. 화면 전체에 뜬 모든 프로그램이 완전히 멈추었을 때, 또는 Xorg 환경을 약간 조정할때 쓸모가 있습니다. 이 키 조합으로 데스크톱을 끝낼때 조심하십시오. 대부분의 프로그램은 이 방식으로 끝내는 것을 선호하지 않으며, 여러분이 다루던 작업 내용의 일부(또는 전체)를 잃게 됩니다.

끝내기

startx를 실행하고 결과에 즐거워하시기 바랍니다. 수고하셨습니다. 이제 (아마도) 여러분의 시스템에 동작하는 Xorg를 보유하게 되었습니다. 다음 단계는 쓸모 있는 윈도 관리자 또는 KDE, GNOME, Xfce 와 같은 데스크톱 환경을 설치하는 과정이지만 이 안내서의 부분이 아닙니다. 데스크톱 환경 설치에 대한 내용은 젠투 데스크톱 문서 번역 목록 에 있습니다.


참고: 아시다시피 위키는 언제나 미완성입니다. 필요한 문서내용이 있다면 주저하지 마시고 자유게시판에 말씀해주시기 바랍니다 ;-)


참고 자료

설정파일 만들고 편집하기

먼저, 무엇보다도 아직까지는 man xorg.confman evdev 명령을 통해 이 안내서에 제시한 모든 설정 파일에서 사용하는 문법에 대한 완벽한 참고 내용을 간단하게나마 제공합니다. 터미널에서 설정 파일을 편집한다면, 이들 도움말이 있는지 확인하십시오!!

/etc/X11의 설정 파일을 편집하는데 필요한 수많은 온라인 참고자료들이 있습니다. 이 많은 내용중에 우리는 이곳에 극히 일부만 정리했습니다. 더 많은 내용을 보시려면 구글에서 검색해보십시오.

다른 참고 자료

그래픽 데스크톱 환경과 프로그램을 설치하고 설정하는 방법에 대한 더 많은 내용은 젠투 데스크톱 번역 문서 목록에서 찾으실 수 있습니다.

xorg-server를 최근 버전으로 업그레이드 하려면, [마이그레이션 가이드]를 검토해보십시오.


X.org 에는 자주 묻는 많은 질문과 추가 문서를 웹사이트에서 제공합니다.