이것은 그래픽 프레임버퍼에 대한 인텔 장비상의 일반적인 드라이버입니다.
아이디어는 단순합니다. 바이오스(BIOS)의 도움을 받아 시스템 부트(Booting)시에 그래픽 모드를 활성화하는 것입니다. 그리고 프레임버퍼 장치 /dev/fd0 로서 vesafb를 사용할 수 있습니다. m68k 와 같은 다른 장치에서도 사용가능합니다.
이것은 우리가 부트시에 그래픽 모드로 실행할 것인지 텍스트 모드로 실행할 것인지 결정할 수 있다는 것을 의미합니다. (보호모드에서) 나중에 전환 모드(Switching Mode)를 활성화하는 것은 불가능합니다. 바이오스는 Real 모드에서만 호출할 수 있습니다. 우리는 선형(연속적인) 프레임 버퍼를 필요로 하기 때문에 VESA 바이오스(BIOS) 확장 버전 2.0 이 필요합니다.
장점 :
단점 :
전환 모드(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 표시를 하는 것으로 동작할 수 있습니다.
XF68_FBDev 는 잘 동작할 것입니다. 하지만 가속을 지원하지는 않습니다. XF86_SVGA와 같은 다른 (가속되는) X-Server는 잘 동작할 수도 있겠지만, 그렇지 않을 수도 있습니다. 이것은 X-서버와 그래픽 보드에 의존하는 문제입니다.
X-서버는 비디오 모드를 정확하게 저장해야 합니다. 그렇지 않으면, 여러분은 깨진 콘솔을 보게 될 것입니다. (그리고 vesafb는 이 문제에 관하여 아무것도 할 수 없습니다.)
리눅스를 부팅한 후 vesafb 비디오 모드와 타이밍을 변경할 수 있는 방법은 없습니다. 여러분이 60 Hz의 주사율을 별로 좋아하시지 않으신다면, 여러분은 이 옵션을 사용할 수 있습니다.
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