리눅스에서 그래픽을 출력할 수 있는 방법은 여러 가지가 있습니다. X-Window를 생각할 수 있지만 임베디드 시스템에서 운영하기에는 부담이 많이 됩니다. 대신에 비디오 메모리를 사용하는 프레임 버퍼를 이용하면 굳이 덩치 큰 X-Window를 사용할 필요가 없습니다.

이번 시간부터 앞으로 몇 차례에 걸쳐서 프레임 버퍼를 이용한 그래픽 프로그래밍에 대해서 알아 보도록 하겠습니다.

프레임 버퍼 세팅

프레임 버퍼를 사용하기 위해서는 리눅스의 기본 출력을 텍스트 모드에서 그래픽 모드(이하 프레임 버퍼 모드) 로 변환해야 합니다. 변환하는 방법은 매우 간단합니다. 부팅을 담당하는 부트 로더에게 텍스트가 아닌 프레임 버퍼 모드로 부팅하라고 지시하면 끝입니다.

자 부트 로더에게 부탁하기 위해서는 부트 로더의 환경 파일을 수정하면 되는데, 부트로더에는 2가지가 있습니다. 전통적으로 사용되는 LILO가 있고, 후에 나온 GRUB가 있습니다.

그럼 내가 어떤 부트로더를 사용하는지 확인해 봐야 겠죠. 부팅 화면이 일반 텍스트 모드 이거나 아래와 같이 /etc/lilo.conf 파일이 있는지 확인했더니 있다면 LILO를 사용하고 있는 것입니다. LILO 부트 로더를 사용할 때의 내용을 확인해 주십시오. 파일이 없거나 부팅 시작이 그래픽이라면 GRUB 부트 로더를 사용할 때의 내용을 봐 주십시오.

LILO 부트 로더를 사용할 때

LILO 환경 설정 파일을 이용하여 프레임버퍼 모드를 설정해 보겠습니다.

]$ ls -al /etc/lilo.conf
-rw-r--r-- 1 root root 90251 2월 16 15:22 /etc/lilo.conf

에디터를 이용하여 /etc/lilo.conf 를 열고, 아래의 내용을 추가합니다. vga 옵션에 해당하는 숫자는 아래에 자세히 언급되어 있습니다.

......
install=/boot/boot.b
message=/boot/message
vga=791
linear
vga=791           <-- 요렇게 추가

image=/boot/vmlinuz-2.6.9-42.ELsmp
label=linux
........

이제 lilo 명령을 실행하신 후 재부팅하시면 끝입니다.

]# lilo
]# reboot

GRUB 부트 로더를 사용할 때

/etc/grub.conf 를 편집기로 여신 후, 부팅 기본이 되는 title 에 대해서, 도는 title 에 대해서 커널 부분의 끝에 vga 옵션을 추가하시면 됩니다.

......
title CentOS (2.6.9-42.0.8.EL)
    root (hd0,0)
    kernel /vmlinuz-2.6.9-42.0.8.EL ro root=LABEL=/ rhgb quiet
    initrd /initrd-2.6.9-42.0.8.EL.img
title CentOS (2.6.9-42.0.8.ELsmp)
    root (hd0,0)

    kernel /vmlinuz-2.6.9-42.0.8.ELsmp ro root=LABEL=/ rhgb quiet vga=791
    initrd /initrd-2.6.9-42.0.8.ELsmp.img
    title CentOS-4 i386 (2.6.9-42.ELsmp)
    root (hd0,0)
kernel /vmlinuz-2.6.9-42.ELsmp ro root=LABEL=/ rhgb quiet
    initrd /initrd-2.6.9-42.ELsmp.img
......

저장하신 후에 바로 재부팅하시면 끝입니다.

vga 옵션 - 해상도

색상 깊이
640x480
800x600
1024x768
1280x1024
1600x1200
8bit
789
771
773
775
796
15bit
784
787
790
793
797
16bit
785
788
791
794
798
24bit
786
789
792
795
799

16진 값으로는,

색상 깊이
640x480
800x600
1024x768
1280x1024
1600x1200
8bit
0x301
0x303
0x305
0x307
0x31C
15bit
0x310
0x313
0x316
0x319
0x31D
16bit
0x311
0x314
0x317
0x31A
0x31E
24bit
0x312
0x315
0x318
0x31B
0x31F