내가 아는 한 해상도를 바꾸는데는 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
를 죽이면 간단히 원래 상태로 돌아온다.
svgalib를 얻어서 restoretexmode
프로그램을 컴파일한다.
(lilo 환경설정 화일에 vga=ask
를 사용하여) 모든 가능한 비디오
모드로 부팅해보고, 비디오 하드웨어 레지스터 내용을 CxR(여기서
C는 컬럼수, R은 열수)라는 이름의 화일에 저장한다. 예를 들어 80x25,
132x44 이런 식의 이름으로 저장한다.
/usr/lib/kbd/videomodes
에 이 화일을 넣어둔다. 이렇게 하면
resizecons 132x44
라는 명령으로 비디오 모드가 바뀔 것이다.
(이것에 대하여 알 필요가 있는 모든 프로세스에 SIGWINCH를 보내고
필요하다면 다른 폰트도 로드한다.)
현재, resizecons
는 바뀌기 전과 바뀐 후의 콘솔에 대한 메모리가
모두 충분한 경우에만 성공적으로 작동한다.