다음 이전 차례

16. 비디오 모드 바꾸기

내가 아는 한 해상도를 바꾸는데는 6가지 방법이 있다.

1. 컴파일 할 때: /usr/src/linux/Makefile에서 아래와 같은 라인을 바꾼다.

        SVGA_MODE=      -DSVGA_MODE=NORMAL_VGA

1A. 컴파일 후, rdev -v를 사용하라. 상당히 위험한 해킹법이지만 분명히 잘 된다.

2. 부팅시: lilo 환경설정 화일에 vga=ask라는 줄을 추가하면 lilo는 부팅시 사용자가 원하는 비디오 모드를 물어볼 것이다. 여러번 해봐서 가장 맘에 드는 것을 알아냈으면 vga=맘에드는번호 로 바꿔 넣어라.

3. 실행중에: A. resizecons 명령을 사용한다. (이것은 VT_RESIZE ioctl에 대한 아주 원시적인 wrapper이다.) B. SVGATextMode 명령을 사용한다. (이것이 VT_RESIZE ioctl에 대한 좀 덜 원시적 wrapper이다.)

4. "콘솔에서"가 아닐 때: dosemu를 사용중이거나 svgalib를 사용하는 프로그램을 실행중일 때 등등, 이런 경우 콘솔 드라이버가 인식하지 못하면서 하드웨어 비디오 모드를 바꿀 수 있다. 때때로 이 방법은 resizecons 또는 SVGATextMode 설정을 할 때 유용한 경우가 있다. dosemu를 실행하고 적당한 비디오 모드에서 돌아가는 DOS 프로그램을 실행시킨다. 그 다음 (다른 VT에서 명령을 내려서) 모든 비디오 하드웨어 레지스터의 내용을 덤프한다. 여기에 나온 내용으로 resizecons이나 SVGATextMode에서 요구하는 사항에 이용한다. 때때로 비디오 모드가 불안정한 상태에 놓이게 되는 경우가 있다. dosemu 기동시에 비디오 모드를 설정하는 것이 BIOS에 의존하기 때문인데, 이럴 경우 (kill -9로) dosemu를 죽이면 간단히 원래 상태로 돌아온다.

16.1 resizecons를 사용하는 방법

svgalib를 얻어서 restoretexmode 프로그램을 컴파일한다. (lilo 환경설정 화일에 vga=ask를 사용하여) 모든 가능한 비디오 모드로 부팅해보고, 비디오 하드웨어 레지스터 내용을 CxR(여기서 C는 컬럼수, R은 열수)라는 이름의 화일에 저장한다. 예를 들어 80x25, 132x44 이런 식의 이름으로 저장한다. /usr/lib/kbd/videomodes에 이 화일을 넣어둔다. 이렇게 하면 resizecons 132x44라는 명령으로 비디오 모드가 바뀔 것이다. (이것에 대하여 알 필요가 있는 모든 프로세스에 SIGWINCH를 보내고 필요하다면 다른 폰트도 로드한다.)

현재, resizecons는 바뀌기 전과 바뀐 후의 콘솔에 대한 메모리가 모두 충분한 경우에만 성공적으로 작동한다.


다음 이전 차례