FreeBSD QandA 1580

FreeBSD QandA

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


間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。