Q. FreeBSD 3.x で追加された、VESA ビデオモードを使用した広いコンソール
を使いたいのですが、どうすればいいですか?
A. 以下の手順で作業してみてください。
1. ビデオカードが VESA に対応しているか確認する
そのビデオカードのメーカのサイトへ行って、VESA に対応しているかを
確認しましょう。ただし、最近は 3D 関係ばかりが重要視されて、VESA に
関して情報を載せていないメーカもあります。
または、MS-DOS のプログラムですが、
<URL:http://www.vector.co.jp/soft/dos/hardware/se005934.html>
にある vesadump を使って確認する方法もあります。
それらしく (VESAのバージョン等) が表示されれば、多分大丈夫でしょう
が、ビデオカードの中には VESA を完全にはサポートしていない物もある
ようなので、これが OK でも必ずしも使えるとは限りません。
2. カーネル再構築
まず、あなたのカーネル構成を確認する必要があります。LINT を見ればわ
かるように、options VESA が VESA ビデオモードを直接サポートするオプ
ションですが、3.x-RELEASE では同時に options "VM86" も必要なことが
分かります。4.0-RELEASE 以降では VM86 オプションは統合されたため不要
です。また、当然 device vga0 も必要ですが、これは GENERIC にも含まれ
ますので、実際には options VESA (及び 3.x では options "VM86" の2行)
を追加する必要があるでしょう。
以下は 3.4R の LINT の抜粋です。
# The video card driver.
device vga0 at isa? port ? conflicts
# To include support for VESA video modes
options VESA # needs VM86 defined too!!
# Allow processes to switch to vm86 mode, as well as enabling direct
# user-mode access to the I/O port space. This option is necessary for
# the doscmd emulator to run and the VESA modes in syscons to be available.
#
options "VM86"
もうひとつの方法は、カーネルから options VESA を削る代わりに、KLD
モジュールをロードする方法です。これには /boot/loader.conf に以下の
行を追加します。ただこの場合もカーネルの VM86 サポートは必須です。
vesa_load="YES"
詳細については vga(4) にも目を通しておきましょう。
3. デバイス認識の確認
boot -v で起動し、
>vga0: <Matrox model 0521 graphics accelerator> rev 0x01 int a irq 11 on pci1.0.0
>VESA: v2.0, 8192k memory, flags:0x1, mode table:0xf0236d36 (1000022)
>VESA: Matrox Graphics Inc.
>VESA: Matrox
>VESA: MGA-G200
>VESA: 00
このようにビデオカードの情報が出力されているかを確認します。また、
% vidcontrol -i adapter
% vidcontrol -i mode
でも確認しておきましょう (特に mode は、使いたい画面モードがちゃん
と表示されているかどうかを確認しましょう)。
>% vidcontrol -i adapter
>fb0:
> vga0, type:VESA VGA (5), flags:0x700ff
> initial mode:24, current mode:24, BIOS mode:3
>% vidcontrol -i mode
> mode# flags type size font window linear buffer
>------------------------------------------------------------------------------
> 0 (0x000) 0x00000001 T 40x25 8x8 0xb8000 32k 32k 0x00000000 0k
(中略)
>209 (0x0d1) 0x00000009 T 132x60 8x8 0xb8000 32k 32k 0x00000000 0k
4. フォントのロード
ここで例えば 132x60 文字モードを使おうとした場合、8x8 フォントを
必要とするので、
% vidcontrol -f 8x8 /usr/share/syscons/fonts/iso-8x8.fnt
としてフォントをロードしておきます。もしくは、/etc/rc.conf に
font8x8="/usr/share/syscons/fonts/iso-8x8.fnt"
を加えてリブートすれば、FreeBSD 起動時に自動的にロードできます。
また、同じように 8x14 及び 8x16 フォントについても
font8x14="/usr/share/syscons/fonts/iso-8x14.fnt"
font8x16="/usr/share/syscons/fonts/iso-8x16.fnt"
などとすることができます。
5. 画面モードの変更
% vidcontrol VESA_132x60
とすると、その virtual console の画面モードが変更されます。ALT+F?
での他の virtual console のモードも変更したければ、/etc/rc.conf に
次のように設定すれば良いでしょう。
allscreens_flags="VESA_132x60"
より詳細は vidcontrol(1) を参照してください。
グループ名: console