2008년 8월 31일 일요일

Nvidia 그래픽 카드 설정

사용하고 있는 그래픽 카드는 스파클 지포스 7300GT Ultra2 256MB 가온, 모니터는PCBANK 240W입니다.

  • 리눅스에서 모니터 문제로 xorg.conf를 아래와 같이 바꾸었습니다.

    Section "Monitor"
    ...
    ModeLine "1920x1200" 154.0 1920 1968 2000 2100 1200 1203 1209 1222 -hsync +vsync
    Gamma 0.9
    ...
    EndSection


    Section "Screen"
    ...
    Option "NoLogo" "True"
    Option "ModeValidation" "NoDFPNativeResolutionCheck"
    SubSection "Display"
    Depth 24
    Modes "1920x1200" "1920x1080" "1600x1200" "1280x1024" "1280x768" "1024x768" "800x600"
    EndSubSection
    EndSection

  • DPI 문제
    xorg는 displaysize로 DPI를 정합니다.
    본인의 모니터는 PBM-240W로 제원상 수평 518.4 mm이며, 수직 324.0 mm으로,
    xorg.conf의 Section "Monitor" 에 다음과 같이 기록합니다.

    Section "Monitor"
    ...
    DisplaySize 518.4 324.0
    ...
    EndSection

    그러나Nvidia社의 드라이버를 설치하여 사용하면 DisplaySize 옵션에 추가로 DPI 옵션을 사용할 수 있습니다.
    Section "Device"
    Driver "nvidia"
    Option "UseEdidDpi" "false"
    Option "DPI" "96 x 96"
    ...
    EndSection

    참고로 DPI 옵션과 DisplaySize옵션을 같이 사용하면 DisplaySize는 무시됩니다.

    본인의 모니터에서 Nvidia社의 드라이버를 설치하고 위의 DisplaySize, DPI 옵션을 설정하고 X윈도우를 띄우면 다음과 같이 보입니다.
    $ xdpyinfo | grep -B1 dot
    dimensions: 1920x1200 pixels (508x318 millimeters)
    resolution: 96x96 dots per inch
    실제 모니터 크기가 다르게 인식됩니다. 실제 픽셀 크기는 0.270 mm X 0.270 mm인데...

    참고로 DisplaySize 옵션만 적용하면 다음과 같으며,
    $ xdpyinfo | grep -B1 dot
    dimensions: 1920x1200 pixels (813x455 millimeters)
    resolution: 60x67 dots per inch
    X윈도우(그놈)에서 DPI 해상도를 96으로 맞추면 제대로 보이나 로그인창의 폰트가 작게 보여 불편합니다.
    Option "DPI" "96 x 96" 해야 로그인창의 폰트가 맞게 보입니다.

  • 최근의 xorg-xserver는 type1 font module 대신에 freetype을 사용하므로
    # nvidia-xconfig가 실행되고나서 xorg.conf에 type1 module설정이 남아있으면
    주석 처리 # 합니다.

    # Load "type1"


데비안
  • 저장소에 커널에 맞게 만들어진 nvidia 모듈이 있으면 간단히 설치하고,
    없으면 module-assistant로 직접 소스 패키지로 모듈을 만들어 설치하거나,
    Nvidia 회사의 설치파일을 이용합니다.

    먼저 /etc/apt/sources.list에 contrib non-free 추가후 update

    1. 배포판 커널을 사용중이고, 저장소에 커널에 맞게 만들어진 nvidia 모듈이 있으면 다음과 같이 합니다.

      # uname -r
      # apt-get install nvidia-kernel-$(uname -r)
      # apt-get install nvidia-glx nvidia-settings nvidia-xconfig
      # nvidia-xconfig

    2. 소스패키지로 설치후 모듈을 직접 만들어 설치

      module-assistant 설치
      # apt-get install module-assistant

      # m-a update
      # m-a prepare

      설치된 gcc와 커널을 컴파일한 gcc 버전이 맞는지 확인
      # cat /proc/version
      # ls -l /usr/bin/gcc
      gcc 버전이 맞지 않으면 다음의 방법과 같이 바꾸어 줍니다.
      # ln -sf /usr/bin/gcc-4.1 /usr/bin/gcc

      # apt-get install nvidia-kernel-common nvidia-settings nvidia-xconfig

      # m-a autoinstall nvidia
      이제 nvidia-glx 설치
      # apt-get install nvidia-glx

      # nvidia-xconfig

    3. Nvidia회사의 드라이버를 직접 설치시

      설치전에 xorg가 xserver-xorg-video-vesa나 nv를 사용하여야 합니다.

      설치 전에 다음을 확인합니다.
      * development tools like make and gcc are installed
      * the linux-headers package matching the installed Linux kernel is installed
      * the pkg-config and xserver-xorg-dev packages are installed
      * the nvidia-glx package has been uninstalled with the --purge option and the file /etc/init.d/nvidia-glx does not exist.
      추가로 libc6-dev가 필요하므로 설치되어있는지 확인합니다.
      따라서,
      설치 전에 다음이 설치되어 있어야 합니다.
      커널에 맞는 linux-headers-$(uname -r) make gcc pkg-config xserver-xorg-dev libc6-dev
      다음과 같이 설치합니다.
      # apt-get install linux-headers-2.6.18-6-k7 make gcc pkg-config xserver-xorg-dev libc6-dev

      • (참고)
        module-assistant 설치후 m-a prepare하면 gcc와 커널에 맞는 linux-headers가 설치됩니다. 추가로 build-essential도 설치됩니다.
        # apt-get install module-assistant
        # m-a update
        # m-a prepare
        이제 나머지 필요한 패키지 설치
        # apt-get install pkg-config xserver-xorg-dev

      gcc확인
      $ cat /proc/version 및 ls /usr/bin/gcc -l 하여 커널을 컴파일한 gcc와 설정되어 있는 버전이 같은지 확인합니다.
      다르면 다음과 같이 맞게 고치거나
      # mv /usr/bin/gcc /usr/bin/gcc.backup.00
      # ln -s /usr/bin/gcc-4.1 /usr/bin/gcc
      또는, #export CC=gcc-XXX하여 XXX에 알맞은 gcc 버전을 기록합니다.

      X윈도우를 빠져나온 후 (또는 Ctrl + Alt + F1)
      # /etc/init.d/gdm stop
      # sh NVIDIA-Linux-x86-100.14.19-pkg1.run
      # /etc/init.d/gdm start

      참고)
      • nvidia 드라이버를 제거하려면 nvidia-installer --uninstall합니다.

      • xorg.conf를 만들려면 nvidia-config합니다.

      • 설치후 man nvidia-xconfig하면 자세한 설정방법을 알 수 있습니다.


  • 그래픽카드에 모니터를 2개 모두 연결하니 주 모니터인 LCD가 보이지 않아 다음과 같이 하였습니다.

    Section "ServerLayout"
    Screen 0 "Default Screen" 0 0
    Screen 1 "Screen-2nd" Rightof "Default Screen"
    EndSection


    Section "Monitor"
    Identifier "PCBANK.240W"
    Gamma 0.9
    DisplaySize 518.4 324.0
    # ModeLine "1920x1200" 154.0 1920 1968 2000 2104 1200 1203 1209 1222 +hsync -vsync
    ModeLine "1920x1200" 154.0 1920 1968 2000 2100 1200 1203 1209 1222 -hsync +vsync
    EndSection


    Section "Monitor"
    Identifier "42LB5DR"
    ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 +hsync +vsync
    EndSection


    Section "Device"
    Identifier "7300GT.Ultra2.256MB"
    Driver "nvidia"
    Option "UseDisplayDevice" "DFP"
    Option "UseEdidDpi" "false"
    Option "DPI" "96 x 96"
    Screen 0
    EndSection


    Section "Device"
    Identifier "7300GT.Ultra2.256MB-2nd"
    Driver "nvidia"
    Option "UseDisplayDevice" "CRT"
    Screen 1
    EndSection


    Section "Screen"
    Identifier "Default Screen"
    Device "7300GT.Ultra2.256MB"
    Monitor "PCBANK.240W"
    DefaultDepth 24
    Option "NoLogo" "True"
    Option "ModeValidation" "NoDFPNativeResolutionCheck"
    # Option "TwinView" "True"
    # Option "MetaModes" "nvidia-auto-select, nvidia-auto-select"
    SubSection "Display"
    Depth 24
    Modes "1920x1200" "1920x1080" "1600x1200" "1280x1024" "1280x768" "1024x768" "800x600"
    EndSubSection
    EndSection


    Section "Screen"
    Identifier "Screen-2nd"
    Device "7300GT.Ultra2.256MB-2nd"
    Monitor "42LB5DR"
    DefaultDepth 24
    Option "NoLogo" "True"
    Option "ModeValidation" "NoMaxPClkCheck,NoEdidModes,NoVirtualSizeCheck"
    SubSection "Display"
    Depth 24
    Modes "1024x768"
    EndSubSection
    EndSection

  • Nvidia社의 드라이버를 설치하면 사용중인 커널에 맞게 모듈이 설치됩니다. 따라서 새로 설치된 커널로 부팅하여 X윈도우가 안되면 Nvidia社의 드라이버를 다시 설치하면 됩니다.

  • 또한 원래 Nvidia社의 드라이버를 설치하면 xorg의 버전에 맞게 설치됩니다. 따라서 사용중에 xorg가 업그레이드 되면서 /usr/lib/xorg/modules/extensions/libglx.so 파일이 변경될 수 있습니다. 원래 Nvidia社의 드라이버를 설치하면 libglx.so.xx(버전)이 설치되고 libglx.so는 단지 이를 가리키는 symbolic link파일입니다. xorg가 업그레이드되면서 이 symbolic link파일이 xorg의 libglx.so로 바뀌게 됩니다.

    Nvidia社의 드라이버를 다시 설치할 때 libglx.so가 symbolic link파일이 아니라는 에러가 보여도 그냥 설치하면 새 symbolic link파일로 설치 됩니다.

    사용중에 xserver-xorg-code의 업그레이드로 문제가 있으면
    문제가 있으면 다음과 같이 합니다.
    # /etc/init.d/gdm stop
    # cd /usr/lib/xorg/modules/extensions
    # rm libglx.so
    # ln -s libglx.so.1.0.9746 libglx.so
    # etc/init.d/gdm start

페도라
  • Nvidia 드라이버 설치는 Livna Repository에서설치하였습니다.

    # rpm -ivh http://rpm.livna.org/livna-release-8.rpm
    # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-livna
    # yum install kmod-nvidia

    kmod-nvidia 설치시에 알맞은 새 커널이 설치되기도 합니다.
  • 모니터는 LCD로 DVI로 연결하여 사용중인데, 여분의 모니터를 추가로 그래픽카드의 RGB에 연결하면 RGB가 첫번 째 모니터로 인식되어 다음과 같이 바꾸어 DVI에 연결된 모니터가 첫번째 모니터가 되게 바꾸었습니다.


    Section "ServerLayout"
    Identifier "Default Layout"
    Screen 0 "Screen0" 0 0
    Screen 1 "Screen-2nd" Rightof "Screen0"
    InputDevice "Keyboard0" "CoreKeyboard"
    EndSection


    Section "Monitor"
    Identifier "PCBANK.24W"
    HorizSync 28.0 - 51.0
    VertRefresh 43.0 - 60.0
    Gamma 0.9
    DisplaySize 518.4 324.0
    ModeLine "1920x1200" 154.0 1920 1968 2000 2100 1200 1203 1209 1222 -hsync +vsync
    Option "DPMS"
    EndSection


    Section "Monitor"
    Identifier "42LB5DR"
    ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 +hsync +vsync
    Option "DPMS"
    EndSection


    Section "Device"
    Identifier "Videocard0"
    Driver "nvidia"
    Screen 0
    BusID "PCI:5:0:0"
    Option "UseDisplayDevice" "DFP"
    Option "UseEdidDpi" "false"
    Option "DPI" "96 x 96"
    Option "AddARGBGLXVisuals" "True"
    EndSection


    Section "Device"
    Identifier "7300GT.Ultra2.256MB-2nd"
    Driver "nvidia"
    Option "UseDisplayDevice" "CRT"
    Screen 1
    BusID "PCI:5:0:0"
    EndSection


    Section "Screen"
    Identifier "Screen0"
    Device "Videocard0"
    Monitor "PCBANK.24W"
    DefaultDepth 24
    Option "NoLogo" "True"
    Option "ModeValidation" "NoDFPNativeResolutionCheck"
    SubSection "Display"
    Viewport 0 0
    Depth 24
    Modes "1920x1200" "1280x768" "1024x768" "800x600"
    EndSubSection
    EndSection


    Section "Screen"
    Identifier "Screen-2nd"
    Device "7300GT.Ultra2.256MB-2nd"
    Monitor "42LB5DR"
    DefaultDepth 24
    Option "NoLogo" "True"
    Option "ModeValidation" "NoMaxPClkCheck,NoEdidModes,NoVirtualSizeCheck"
    SubSection "Display"
    Depth 24
    Modes "1024x768"
    EndSubSection
    EndSection
  • TV로 출력이 되게 설정되어 tv out이 안되게 하였습니다.
    #Section "Extensions"
    # Option "Composite" "Enable"
    #EndSection

댓글 1개:

eizt :

와, 감사합니다..

제 데비안이 어디 아픈지, xming으로 하면 분명히 xwindow에 그놈이 아주 잘돌아가는데.직접 local에서 돌리니까 안돌아 가는겁니다.. 결론은 그래픽카드가 안잡힌거였군요;;