KernelDocu/fb/vesafb

vesafb 는 무엇입니까?

이것은 그래픽 프레임버퍼에 대한 인텔 장비상의 일반적인 드라이버입니다.

아이디어는 단순합니다. 바이오스(BIOS)의 도움을 받아 시스템 부트(Booting)시에 그래픽 모드를 활성화하는 것입니다. 그리고 프레임버퍼 장치 /dev/fd0 로서 vesafb를 사용할 수 있습니다. m68k 와 같은 다른 장치에서도 사용가능합니다.

이것은 우리가 부트시에 그래픽 모드로 실행할 것인지 텍스트 모드로 실행할 것인지 결정할 수 있다는 것을 의미합니다. (보호모드에서) 나중에 전환 모드(Switching Mode)를 활성화하는 것은 불가능합니다. 바이오스는 Real 모드에서만 호출할 수 있습니다. 우리는 선형(연속적인) 프레임 버퍼를 필요로 하기 때문에 VESA 바이오스(BIOS) 확장 버전 2.0 이 필요합니다.

장점 :

  • vesafb는 읽을 수 없을 만큼 글꼴이 작아지지 않아도, tiny를 사용하지 않아도 되는 큰 화면을 제공합니다. (1024x768 해상도에서 128 칸 48 행 지원)
  • 여러분은 /dev/fb0 장치상에서 XF86_FBDEV 를 실행할 수 있습니다. (모든 VBE 2.0 지원 그래픽 보드에 대해서 가속하지 않는 X11 을 지원)
  • 가장 중요한 부트 로고를 지원합니다.

단점 :

  • 그래픽 모드는 텍스트 모드보다 느립니다.

이것을 어떻게 사용합니까?

전환 모드(Switching Mode)는 부트 파라메터로 vga=... 를 사용하면 됩니다. [[http://www.fossa.or.kr/wiki/KernelDocu/fb/svga.txt]]를 자세히 읽어보시기 바랍니다.

또한 여러분들은 (텍스트 모드를 위해) vgacon과 (그래픽 모드를 위해) vesafb를 모두 (커널에) 컴파일 해두어야 합니다. 선택한 모드가 텍스트 모드인지 그래픽 모드인지에 따라 둘 중 하나는 콘솔을 갖추고 있어야 합니다.

그래픽 모드는 boot 시에 vga=ask 를 넣고 입력했을 때 모드가 나열되지 않습니다. 여러분이 사용하고 싶으신 모드를 VESA 모드 숫자 중 하나를 기술하여 사용하십시오. 여기 VESA 모드 숫자가 있습니다.

                                                                                                                                    
    | 640x480  800x600  1024x768 1280x1024                                                                                               
----+-------------------------------------                                                                                               
256 |  0x101    0x103    0x105    0x107                                                                                                  
32k |  0x110    0x113    0x116    0x119                                                                                                  
64k |  0x111    0x114    0x117    0x11A                                                                                                  
16M |  0x112    0x115    0x118    0x11B                                                                                                  

리눅스 커널의 비디오 모드 번호는 VESA 모드 번호에 0x200 을 더합니다.

                                                                                                                                    
 Linux_kernel_mode_number = VESA_mode_number + 0x200                                                                                     

따라서 커널모드 번호는 다음과 같습니다.

                                                                                                                                    
    | 640x480  800x600  1024x768 1280x1024                                                                                               
----+-------------------------------------                                                                                               
256 |  0x301    0x303    0x305    0x307                                                                                                  
32k |  0x310    0x313    0x316    0x319                                                                                                  
64k |  0x311    0x314    0x317    0x31A                                                                                                  
16M |  0x312    0x315    0x318    0x31B                                                                                                  

이 중 하나의 모드를 사용하기 위해서는 lilo.conf 내에 "vga=ask" 를 입력하고 나서, LILO를 다시 실행시키십시오. 그런 다음 필요한 모드를 vga=ask
프롬프트에 입력하시면 됩니다. 예를 들어 여러분이 1024x768x256 컬러를 사용하길 원하신다면, 그 프롬프트에 "305"라고 입력하시면 됩니다.

만약 이 모드들이 동작하지 않는다면, 이것은 여러분의 BIOS가 선형(연속) 프레임버퍼를 지원하지 않고 있는 것이거나, 모든 곳에서 이 모드를 지원하지 않고 있는 것입니다. 심지어 보드가 지원한다 하더라도, BIOS가 지원하지 않을 것입니다. VESA BIOS 확장 버전 2.0 이 필요합니다. 1.2 버전으로는 충분하지 않습니다. 무언가 잘못된 것이 있다면 "bad mode number" 메시지를 보실 수 있습니다.

1. 주의: LILO는 16진수 HEX 모드를 다룰 수 없습니다. "vga=[모드번호]" 파라메터와 함께 바로 부팅하기 위해선 여러분은 번호를 십진수로 변 형하셔야 합니다.
2. 주의: 몇몇 새로운 버전의 LILO는 모드 번호앞에 0x 표시를 하는 것으로 동작할 수 있습니다.

X11

XF68_FBDev 는 잘 동작할 것입니다. 하지만 가속을 지원하지는 않습니다. XF86_SVGA와 같은 다른 (가속되는) X-Server는 잘 동작할 수도 있겠지만, 그렇지 않을 수도 있습니다. 이것은 X-서버와 그래픽 보드에 의존하는 문제입니다.

X-서버는 비디오 모드를 정확하게 저장해야 합니다. 그렇지 않으면, 여러분은 깨진 콘솔을 보게 될 것입니다. (그리고 vesafb는 이 문제에 관하여 아무것도 할 수 없습니다.)

주사율

리눅스를 부팅한 후 vesafb 비디오 모드와 타이밍을 변경할 수 있는 방법은 없습니다. 여러분이 60 Hz의 주사율을 별로 좋아하시지 않으신다면, 여러분은 이 옵션을 사용할 수 있습니다.

  • (사용 가능하다면) 여러분의 그래픽 보드와 관련하여 설정과 불러오기가 가능한 DOS 도구들을 사용하십시오. 그리고 loadlin고 같이 리눅스로 부팅하십시오.
  • vesafb 대신, 장치 드라이버(native driver, matroxfb/atyfb)를 사용하십시오. 만약 사용가능한 것이 없다면 새로 하나 작성하십시오!
  • VBE 3.0 도 잘 동작할 것입니다. 저는 VBE 3.0 을 지원하는 GFX 보드를 갖지 못해서 아직 확인해보지 못했습니다.
  • 설정

    VESA BIOS는 몇몇 파라메터를 변경하기 위한 보호 모드 인터페이스를 제공합니다. vesafb 는 보호보드를 팔레트를 변경하거나 디스플레이를 확장할 때 사용할 수 있습니다. 몇몇 BIOS 버전에서는 작동하지 않기 때문에 기본으로 비활성화되었습니다. 그러나 여기 활성화시킬 수 있는 옵션이 있습니다.

    여러분은 커널 명령행에서 "video=vesafb:option" 을 사용하여 vesafb에 옵션을 전달할 수 있습니다. 여러 옵션들은 "video=vesafb:ypan,invers" 와 같이 콤마로 구분합니다.

    수용한 버전 :

    invers  내용 없음
    
    ypan    VESA 보호 모드 인터페이스를 사용하여 디스플레이를 확장함. 볼 수 있는 스크린은 단순히 비디오 메모리의 윈도우이며, 콘솔 스크롤링은 윈도우의 시작지점을 변경하는 것으로 완료한다.
    pro: * 데이터를 복사할 필요가 없기 때문에 스크롤(전체화면)이 빠릅니다. * 스크롤백이 가능합니다. (Shift + PgDn 과 같이) 비디오 메모리 중 일부가 스크롤 백 버퍼로 사용될 수 있습니다. kontra: * 스크롤은 스크린의 일부분이며, (부트로고의 깜빡임과 같이) 툭툭 끊기는 현상이 발생합니다. ywrap ypan과 비슷합니다만 여러분의 gfx 보드가 비디오 메모리를 wrap-around 할 수 있다고 가정합니다. (예를 들어, 비디오 메모리의 끝에 도달했다면, 다시 처음부터 시작하는 것) ypan 보다 더 빠릅니다. redraw 스크린의 영향 받은 부분을 다시 그려주는 것으로 스크롤합니다. 기본방법으로 안전합니다. (그리고 느립니다.) vgapal 팔레트 변경에 표준 vga 레지스터들을 사용합니다. 이것은 기본값입니다. pmipal 팔레트 변경에 보호모드 인터페이스를 사용합니다. mtrr:n vesafb 프레임버퍼에 대한 메모리 형식 범위 레지스터(Memory Type Range Register)를 설정합니다. n 값에 대해: 0 - 사용하지 않음 (nomtrr 과 같음) (기본) 1 - 캐쉬하지 않음 2 - 한 번에 캐쉬 내용을 덮어씀 (Write-Back) 3 - write-combining (Write-Back 과 Write-Through 의 혼합) 4 - 모든 내용을 바로 씀 (Write-Through) 만약 여러분이 다음과 같이 dmesg 내용을 보신다면, old 의 내용을 사용하십시오. 예를들어 "mtrr:2"를 사용했을 때의 메시지 입니다. ... mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining ... nomtrr mtrr을 사용하지 않습니다. vremap:n 비디오 RAM의 'n' MiB를 다시 연결합니다. 만약 0이나 다른 값을 지정하면, 비디오 모드와 관련하여 메모리 값을 재지정합니다. (Antonino Daplas의 아이디어로 2.5.66 패치에 커널에서 지정한 프레임버퍼 메모리 보다 더 많은 양을 할당할 수 있도록 예약해두는 패치가 있습니다. 2.4에 추가되었습니다. vtotal:n 만약 여러분의 카드의 비디오 BIOS가 전체 비디오 메모리의 양을 잘못 지정하였다면, 이 옵션을 이용하여 BIOS에 비디오 메모리양을 지정할 수 있습니다.(MB 단위)

    Have Fun!

    Gerd

    --
    Gerd Knorr

    Minor (mostly typo) changes
    by Nico Schmoigl

    Translated in Korean