次のページ 前のページ 目次へ

7. X に関するカーネルサポート

NetBSD で X のサポートを行う為に、次の行を /sys/arch/i386/conf 中の config ファイルに記述しておかなければなりません。

options XSERVER, UCONSOLE

サーバは NetBSD/i386 で標準的な2つのコンソールドライバ( pccons と pcvt ) をサポートしています。これらは実行時に検出され、サーバの設定などは必要あ りません。

pccons ドライバは最もよくテストされ、NetBSD のバイナリ配布用のカーネルに も含まれているドライバです。

pcvt ドライバは NetBSD に付属しています。pcvt の X モードは pccons の X モードと互換性があります。複数の仮想コンソールが利用できたり、各国対応の キーボードをサポートしていたりします。このドライバを使用するためには、 カーネル config ファイル中の次の行:

device pc0 at isa? port "IO_KBD" irq 1

device vt0 at isa? port "IO_KBD" irq 1

に変更してカーネルを再構築して新しいカーネルをインストールして下さい。

XKB を使用しない場合は、サーバはキーボードドライバから得られた実際の keymap を読み取って X の keymap として使用します。``RightAlt ModeShift'' を XF86Config に記述することで、右の Alt キー を AltGr として動作させる事が出来ます。

syscons と codrv は NetBSD に付属していません。これらは色々なところの anonymous FTP から入手できます。これらは XFree86 のバイナリ配布物では サポートされていません。これらをサポートするには xf86site.def 中 の XFree86ConsoleDefines の記述に -DSYSCONS_SUPPORT や -DCODRV_SUPPORT を追加してコンパイルして下さい。詳細に関しては、 Console drivers を参照して下さい。

pcconsを使用していると次のメッセージが表示されることがあります。

> Fatal server error:
> xf86OpenConsole: CONSOLE_X_MODE_OFF failed (Inappropriate ioctl for device)
> Was expecting pccons driver with X support
> Check your kernel's console driver configuration and /dev entries
> 

そういう時は、/dev/ttyv0 を消して下さい。何故かは分からないの ですが ``MAKEDEV'' が /dev/ttyqf/dev/ttyv0 へ移してしまう様です(Hung-Chi Chu氏 hcchu@r350.ee.ntu.edu.tw の報告)。

7.1 Aperture Driver

NetBSD 0.9C 以降ではマルチユーザモード環境での /dev/mem への アクセスを拒否するという 4.4BSD のカーネルセキュリティ機能が含まれて います。しかし XFree86 のサーバは ビデオメモリへのリニアなアクセスが 性能の向上に使われたり(必須となる事もあります)します。

P9000, Mach64 や AGX のサーバはリニアメモリアクセスを要求しますし、他の アクセラレータ付きサーバも要求こそしませんが、性能向上の為に使用する事が 出来ます。

XFree86 にリニアメモリアクセスを許可するには2つの方法があります:

  1. カーネルのセキュリティ機能を無効にする事で対応。カーネルのconfig ファイルに `option INSECURE' を追加してカーネルを作り直せばよい。 NetBSD-1.0 では/sys/kern/kern_sysctl.c の205行にある ``securelevel'' 変数を -1 で初期化する事でカーネルの セキュリティは無効に出来ます。更に詳しく知りたければ /usr/include/sys/systm.h のコメントを読んで下さい。
  2. aperture driverをインストールする。:
    1. 最初のステップは使用している OS のバージョンに強く依存します。
      • NetBSD 1.0, 1.1, 1.2, 1.2.1 の場合

        /etc/rc.local の最後に次の行を追加します。

         KERNDIR=/usr/X11R6/lib/X11/kernel
         if [ -f ${KERNDIR}/ap.o ]; then
           modload -o ${KERNDIR}/ap -e ap -p ${KERNDIR}/apinstall ${KERNDIR}/ap.o
         fi
        

      • NetBSD 1.2D とそれ以降の場合

        /etc/lkm.conf に次の行を追加します。

        /usr/X11R6/lib/X11/kernel/ap.o  -  ap /usr/X11R6/lib/X11/kernel/apinstall - 
        

      • NetBSD 1.2G, 1.3 とそれ以降の場合

        lkm.conf のフォーマットが 1.2G で変わりました。 /etc/lkm.conf に次の行を追加してい下さい。

        /usr/X11R6/lib/X11/kernel/ap.o  -  ap /usr/X11R6/lib/X11/kernel/apinstall - -AFTERMOUNT
        
    2. システムを再起動します。XFree86 は aperture ドライバが使用できる 場合は自動認識するようになるでしょう。
    Warning: /netbsd/bsd 以外のカーネルで 起動する場合、ローダブルカーネルモジュールを使用するとシステムが クラッシュします。他のカーネルで起動する場合には、いつもシングル ユーザモードで起動するようにして下さい。

    Caveat: aperture ドライバは一度に一つのアクセスしか許可しません。 (だから一旦 X が起動されるとシステムは同じセキュリティ状態になります) これは複数のサーバを複数のVTで実行した場合に、最初の一つだけがリニア アクセスできるという事です。同時に複数の X サーバを使用する必要が ある場合には、'option INSECURE' を使用して下さい。

7.2 MIT-SHM

NetBSD 1.0 以降では System V 形式の共有メモリがサポートされています。 XFree86 がカーネル内でこれがサポートされている事を検出すると、MIT-SHM 拡張機能をサポートするようになります。

カーネルに System V 形式の共有メモリサポートを組み込むには、次の 行をカーネル config ファイルに追加して下さい。

 # System V-like IPC
 options         SYSVMSG
 options         SYSVSEM
 options         SYSVSHM

それから /sys/arch/i386/config ディレクトリで次の様に入力 します。

 # rm -f ../compile/<KERNEL-NAME>/*
 # config <KERNEL-NAME>
 # cd ../compile/<KERNEL-NAME>
 # make depend 
 # make

そして新しいカーネルをインストールしてリブートします。

 # cp /netbsd /onetbsd
 # cp netbsd /
 # reboot


次のページ 前のページ 目次へ