NetBSD で XFree86 を使用する人は読んでください Rich Murphey, David Dawes, Marc Wandschneider, Mark Weaver, Matthieu Herrb Last modified on: 20 August 1999 大石 勲 Isao Ohishi & The X Documen- tation Project Last modified on: 12 September 1999 ____________________________________________________________ 目次 1. XFree86 って何?どこにあるの? 2. このドキュメントのバグの報告について 3. XFree86 3.3.4 における、OS 依存の新機能 4. バイナリのインストール 5. ハードウェアに応じた X の設定 5.1 マウスの設定について 5.2 その他の入力デバイス 5.3 PEX と XIE 拡張機能の設定 6. X の実行 6.1 xdm(ディスプレイマネージャ)のインストール 7. X に関するカーネルサポート 7.1 コンソールドライバ 7.2 アパーチャドライバ 7.3 MIT-SHM 8. XFree86 配布物の再構築 8.1 コンソールドライバ 8.2 pcvt_ioctl.h ファイル: 8.3 console.h と ioctl_pc.h ファイル: 8.4 NetBSD 1.0 以降での共有ライブラリのサポート 8.5 他のアーキテクチャでの構築 9. 新しい X クライアントの構築 10. 謝辞 11. 日本語訳について ______________________________________________________________________ 1. XFree86 って何?どこにあるの? XFree86 は Intel ベースの様々な種類の UNIX の幾つかをサポートしている X11R6.3 の移植版です。X11R5 と一緒に配布された X386 1.2 という X サー バに由来しています。今回のリリースには沢山のバグ修正とともに多くの特徴 と性能の改善が含まれています。本リリースは the X Consortium の X11R6.3 のソースコードへのパッチとして入手できますし、また多くのアーキテクチャ 用のバイナリ配布としても入手できます。 Copyright Notice を見てください。 XFree86 のソースは次の anonymous ftp から入手できます: ftp://ftp.XFree86.org/pub/XFree86/current NetBSD 1.4 以降用のバイナリは以下の場所から入手できます: ftp://ftp.XFree86.org/pub/XFree86/current/binaries/NetBSD-1.4 ミラーサイトのリストは以下の場所にあります: ftp://ftp.XFree86.org/pub/XFree86/MIRRORS その他のバージョンの NetBSD : これらのバイナリは初期のバージョンの NetBSD とは互換性がありません。も しバージョン 1.4 より前の NetBSD を使用しているのであれば、まず最初に 新しいバージョンの NetBSD を使用する事を検討してください。 アップグレードを行わないなら、XFree86 をソースから構築する必要がありま す。XFree86 は初期のバージョンの NetBSD でもきちんとコンパイルできるは ずですが、テストは行われていません。 NetBSD/sparc に関しても XFree86 は作られています。詳細は ``他のアーキ テクチャでの構築'' セクション見てください。 XFree86 のクライアントに関しても、NetBSD/alpha や NetBSD がサポートす る他の多くのアーキテクチャで作られています。 XFree86 は PC98 の NetBSD もサポートしています。 2. このドキュメントのバグの報告について このファイルに関してコメントや提案があるならば、 電子メールを matthieu@laas.fr (Matthieu Herrb) か XFree86@XFree86.org 宛に送ってい ただければ、修正します。 3. XFree86 3.3.4 における、OS 依存の新機能 o サーバの最大接続数が 128 に増えました。 o NetBSD 1.4 に含まれている wsmouse マウスプロトコルに対応しました。 4. バイナリのインストール インストール作業の詳細な手順に関しては、リリースノート のセクション 5 を参照してください。 5. ハードウェアに応じた X の設定 XF86Config ファイルには、使っているモニタやビデオカードやマウスを X サ ーバに伝えます。使用している特定のハードウェアをサーバに伝えるためにそ のファイルを作る必要があります。 このファイルを作成するための最も簡単な方法は、root ユーザとして XF86Setup ユーティリティを実行することです。使用に際しての詳細な部分に 関しては、QuickStart.doc を参照してください。 ハードウェアに関する情報が必要です: o マウスの種類、転送速度、/devでのデバイスファイル名。 o ビデオカードのチップセット(例えば ET4000, S3, 等)。 o モニタの同期周波数。 XF86Config ファイルを作る方法としては XF86Setup の使用をお勧めしま す。xf86config というテキストベースのツールも XF86Setup が使えないよう な(数少ない)場合に備えてまだ用意されています。また、サンプルのファイル 例も /usr/X11R6/lib/X11/XF86Config.eg にインストールされていますので、 それをベースに修正して使用することもできます。 XF86Config ファイルの記述形式の詳細に関しては、XF86Config(5) のマニュ アルを参照してください。 XF86Config ファイルの設定が一旦終ったら、xvidtune ユーティリティを使用 してビデオモードのチューニングを行う事ができます。 5.1. マウスの設定について シリアルマウスが動作しない場合は、kermit とか tip 等を使用してマウスの 繋がっているシリアルポートに接続して、マウスを動かすとちゃんと文字が発 生するかどうかを確認してください。 NetBSD では pms マウスドライバが PS/2 タイプのマウスをバスマウスとして 扱っています。PS/2 マウスを使用している場合には、XF86Config ファイル中 の Mouse セクションで、busmouse をプロトコルとして指定してください。 このドライバは普通の PS/2 マウスしかサポートしていません。最新のPS/2 マウス(特に"3D"ローラー付の IntelliMouse や MouseMan+ 等)は一度に3バイ ト以上の通信が可能ですが、これらはまだサポートされていません。 XFree86 3.3.4 以降は NetBSD 1.4 で導入された新しい wscons コンソールド ライバに含まれているマウスドライバもサポートしています。NetBSD 1.4 で wscons を使っているならば、/etc/XF86Config ではマウスのプロトコルとし て ``wsmouse'' を指定し、デバイスとして ``/dev/wsmouse0'' を指定してく ださい。 XFree86 での一般的なマウスの設定手順に関しては README.mouse を見てくだ さい。 5.2. その他の入力デバイス XFree86 は XInput 機能拡張を使用して外部入力機器ドライバのダイナミック ローディングをサポートしました。現在では、以下の機器がサポートされてい ます: o ジョイスティック (xf86Jstk.so) o Wacom タブレット (Wacom IV プロトコルのみ, xf86Wacom.so) o SummaSketch タブレット (xf86Summa.so) o Elographics タッチスクリーン (xf86Elo.so) 特定の機器を使用するには、以下の行を XF86Config の Module セクション追 加します。 load "module" ここで module は機器に対応した .so ファイルの名称です。 XF86Config の XInput セクションも設定する必要があります。設定手順の詳細に関しては XF86Config(5) のマニュアルを参照してください。 xsetpointer(1) コマンドを使用すれば、X のポインタを操作する機器を変更 する事ができます。 ジョイスティックをサポートするためには、カーネル内にジョイスティックデ バイスドライバが含まれていなければなりません。NetBSD 1.2 では含まれて います。詳しくは joy(4) を見てください。 5.3. PEX と XIE 拡張機能の設定 PEX と XIE 拡張機能は外部モジュールでサポートされています。これらの拡 張機能を使いたいならば、XF86Config の Module セクションに次の行を追加 してください: load "pex5.so" load "xie.so" 6. X の実行 X を実行させるには最低限 8MB のメモリが推奨されます。サーバとウィンド ウマネージャと xterm 一つで約 4MB 程のメモリを消費します。4MB のシステ ムだと、gcc等のような数MBの空きを期待しているアプリケーションへのメモ リが残らなくなります。X は 4MB のメモリでも動作しますが、実際問題とし て X を動作させながらコンパイルを行うと、常にページングが発生している 状態となり 5 〜 10 倍程度の処理時間差が発生します。 初めてのユーザが X ウィンドウをする場合の最も簡単な方法は以下のコマン ドを入力することです: startx >& startx.log エラーメッセージをリダイレクトしておかないと、サーバに画面が切り替わっ てしまって見えなくなります。 X から抜けるには、``exit'' とコンソールの xterm で入力します。ホーム ディレクトリに .xinitrc, .xserverrc や .twmrc のファイルを xinit や startx のマニュアルで説明されているように作っておけば、X をカスタマイ ズすることができます。 6.1. xdm(ディスプレイマネージャ)のインストール ディスプレイマネージャを起動させるには、コンソールで root でログインし てから ``xdm -nodaemon'' と入力してください。 getty を無効にし、かつ次の記述を /etc/rc.local に追加することで、シス テム起動時に自動的に xdm を起動することができます: if [ -x /usr/X11R6/bin/xdm ]; then echo -n ' xdm'; /usr/X11R6/bin/xdm fi コンソールの getty を無効にするには、/etc/ttys 中のコンソールのエント リの ``on'' を ``off'' に変えます: ttyv0 "/usr/libexec/getty Pc" pc off secure NetBSD 1.4 で wscons コンソールドライバを使っている場合、最初に X サー バ用の仮想コンソールを有効にしなければなりません。これを行うには、以下 の手順に従ってください: o デバイスファイルが存在することを確かめます。もしなければ ``cd /dev ; ./MAKEDEV wscons'' で作ります。 o 次に、カーネルが wscons を使う設定になっていることを確かめます (こ れは ``後述します'')。 o 次に、/etc/rc.conf において ``wscons=YES'' が設定されていることを確 かめます。 #screen 0 - vt100 screen 1 - vt100 screen 2 - vt100 screen 3 - vt100 screen 4 - - screen 5 - vt100 (この説明を書いてくださった Mason Loring Bliss さ ん() に感謝します) NetBSD 用の XFree86 のバイナリ配布には、XDM-AUTHORIZATION-1 プロトコル のサポートは含まれていない点に注意してください。 7. X に関するカーネルサポート NetBSD で X のサポートを行うためには、次の行を /sys/arch/i386/conf 中 の設定ファイルに記述しておかなければなりません: options XSERVER, UCONSOLE 7.1. コンソールドライバ このサーバは NetBSD/i386 で標準的な コンソールドライバである pccons, pcvt, wscons(pcvt 互換モード)をサポートしています。これらは実行時に検 出されるので、サーバの設定などは必要ありません。 pccons ドライバは最もよくテストされ、NetBSD のバイナリ配布用のカーネル にも含まれているドライバです。 pcvt ドライバは NetBSD に付属しています。pcvt の X モードは pccons の X モードと互換性があります。複数の仮想コンソールが利用できたり、各国対 応のキーボードをサポートしていたりします。このドライバを使用するために は、カーネル設定ファイル中の次の行: device pc0 at isa? port "IO_KBD" irq 1 を device vt0 at isa? port "IO_KBD" irq 1 に変更してカーネルを再構築して新しいカーネルをインストールしてくださ い。 XFree86 は NetBSD 1.4 の wscons コンソールドライバでも動作します。現 在のところは pcvt 互換モードを使っているので、wscons を使っている場合 には、以下の行をカーネルの設定ファイルに必ず入れてください: options WSDISPLAY_COMPAT_PCVT # emulate some ioctls options WSDISPLAY_COMPAT_SYSCONS # emulate some ioctls options WSDISPLAY_COMPAT_USL # VT handling options WSDISPLAY_COMPAT_RAWKBD # can get raw scancodes wscons をカーネルに組み込む方法については、wscons(4) と wsmouse(4) の オンラインマニュアルを参照してください。 7.2. アパーチャドライバ NetBSD 0.9C 以降ではマルチユーザモード環境での /dev/mem へのアクセスを 拒否するという 4.4BSD のカーネルセキュリティ機能が含まれています。しか し XFree86 のサーバではビデオメモリへのリニアなアクセスが性能の向上に 使われたり(必須となることもあります)します。 最近のアクセラレーション付きのサーバのほとんどはリニアメモリアクセスが 必須ですが、リニアメモリアクセスを利用できるけれど必要とはしないサーバ もあります。 XFree86 にリニアメモリアクセスを許可するには2つの方法があります: 一つの方法は、カーネルの設定ファイルに `option INSECURE' を追加してカ ーネルを作り直し、カーネルのセキュリティ機能を無効にすることです。 もう一つの方法はアパーチャドライバをインストールすることです: アパー チャドライバのソースは ftp://ftp.netbsd.org/pub/NetBSD/arch/i386/apNetBSD.shar から入手するこ とができます。 アパーチャドライバを有効にする方法は、使用している OS のバージョンに強 く依存します。 o 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 o NetBSD 1.2D 以降の場合 /etc/lkm.conf に次の行を追加します。 /usr/X11R6/lib/X11/kernel/ap.o - ap /usr/X11R6/lib/X11/kernel/apinstall - o 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 システムを再起動します。アパーチャドライバが使用できる場合は、XFree86 はこれを自動認識するしょう。 <1-- Warning: if you boot another kernel than /netbsd or /bsd, loadable kernel modules can crash your system. Always boot in single user mode when you want to run another kernel. --> 警告: /netbsd や /bsd 以外のカーネルで起動する場合、ローダブルカーネルモジュールを使用 するとシステムがクラッシュします。他のカーネルで起動する場合には、必ず シングルユーザモードで起動するようにしてください。 注意: アパーチャドライバは一度に一つのアクセスしか許可しませ ん (だから一旦 X が起動されるとシステムは同じセキュリティ状 態になります)。これは複数のサーバを複数の仮想端末で実行した 場合に、最初の一つだけがリニアアクセスできるということです。 同時に複数の X サーバを使用する必要がある場合には、'option INSECURE' を使用してください。 7.3. MIT-SHM NetBSD 1.0 以降では System V 形式の共有メモリがサポートされています。 XFree86 はカーネル内でこれがサポートされていることを検出すると、MIT- SHM 機能拡張をサポートするようになります。 カーネルに System V 形式の共有メモリサポートを組み込むには、以下の行を カーネル設定ファイルに追加してください: # System V-like IPC options SYSVMSG options SYSVSEM options SYSVSHM 8. XFree86 配布物の再構築 サーバリンクキットを使用すれば、Xサーバを再構築するのに最低限のディス ク容量で済みます。リンクキットの圧縮を解いて、xf86site.def の内容を必 要に応じて変更し、``./mkmf'' と ``make'' を入力してサーバをリンクしま す。詳細に関しては /usr/X11R6/lib/Server/README を見てください。 ソース配布物の展開と構築の手順については INSTALL を参照してください。 コンパイルする前に xc/config/cf/xf86site.def を編集して配布物の設定を 行わなければなりません。ソースをコンパイルするには、 xc ディレクトリで ``make World'' と入力します。 8.1. コンソールドライバ XFree86 では xf86site.def 中のオプション設定を使用しているコンソールド ライバの選択に使います。 o pccons を使用している場合: #define XFree86ConsoleDefines -DPCCONS_SUPPORT o pcvt を使用している場合: #define XFree86ConsoleDefines -DPCVT_SUPPORT o syscons を使用している場合: #define XFree86ConsoleDefines -DSYSCONS_SUPPORT o codrv を使用している場合: #define XFree86ConsoleDefines -DCODRV_SUPPORT xf86site.def で XFree86ConsoleDefines を設定しない場合は、pccons と pcvt のドライバがサポートされます。 syscons と codrv は NetBSD には付属していません。これらはあちこちのサ イトから anonymous FTP で入手することができます。これらは XFree86 のバ イナリ配布ではサポートされていません。 8.2. pcvt_ioctl.h ファイル: 標準設定の XFree86 には PCVT コンソールドライバのサポートが含まれてい ます。しかし残念ながら、19980413 以前のバージョンの NetBSD は /usr/include/machine へ pcvt_ioctl.h をインストールしません。PCVT をサ ポートする XFree86を作る場合には、以下のコマンドを root で実行してから make World を始めなければなりません。 cp /usr/src/sys/arch/i386/isa/pcvt/pcvt_ioctl.h /usr/include/machine カーネルのソースが無い場合は、ftp.netbsd.org かそのミラーサイトからこ のファイルを入手する事もできます。また PCVT を使用していなければ、 xf86site.def の XFree86ConsoleDefines から -DPCVT_SUPPORT を削除するこ ともできます。 8.3. console.h と ioctl_pc.h ファイル: codrv をサポートしたサーバを作りたいが、対応するヘッダファイルである ioctl_pc.h が /usr/include/machine にインストールされていない場合は、 xc/programs/Xserver/hw/xfree86/etc にあるファイルをインストールしてお きます。NetBSD-current を使用している場合には /usr/src/sys/arch/i386/include にもインストールしておくと、 make includes する度に再インストールされます。 codrv コンソールドライバをインストールした場合、このファイルはドライバ に付属しているものを使用しなければなりません。 syscons の console.h ファイルは XFree86 からは提供していませ ん。syscons に付属のものを使用してください。 8.4. NetBSD 1.0 以降での共有ライブラリのサポート XFree86 は標準で NetBSD の共有ライブラリサポートを使用して作られていま す。NetBSD 0.9 で XFree86 を作る場合や、共有ライブラリを使用したくない 場合は、xf86site.def に次の行を加えます: #define BuildBsdSharedLibs NO 8.5. 他のアーキテクチャでの構築 XFree86 は NetBSD/sparc 上でもコンパイルされています。 Dennis Ferguson 氏と Matthew Green 氏が作成した Sun 用のサーバのパッチは既に xc/programs/Xserver/hw/sun に統合されています。 xf86site.def は多少の 変更する必要があります: o 構築するサーバを定義する変数を全て NO に設定します。(Sun 用のサーバ Xsun24Server, XsunServer, XsunMonoServer のどれを作るかという指示は NetBSD.cf の最後に定義します。) o ServerToInstall を設定して、使用したい Sun 用のサーバをを選択してく ださい(Xsun または XsunMono)。 o その他の設定可能なオプションに関しては、インストールドキュメント を 参照してください。 この Sun 用に移植したサーバに関して問題が発生した場合は、XFree86 のメ ーリングリストよりも port-sparc@NetBSD.Org メーリングリストか、直接筆 者 matthieu@laas.fr まで連絡してください。 現在 NetBSD プロジェクトでは、XFree86 のソースを元にいくつかの変更が行 われた独自のソースツリーを持っていることに注意してください。こちらのソ ースを使用して再構築することもできます。NetBSD の xsrc ソースツリーは 以下のところから入手可能です: ftp://ftp.netbsd.org/pub/NetBSD/NetBSD- current/xsrc/ 9. 新しい X クライアントの構築 新しいクライアント(X のアプリケーション)を作る場合、ソース中に Imakefile が含まれているなら、xmkmf を使うのが最も簡単でしょ う。``xmkmf -a'' と入力して Makefileを作り、必要に応じて設定のチェック を行、それから ``make'' と入力します。同時にマニュアルもインストールし た場合、whatis.db を更新するために ``makewhatis /usr/X11R6/man'' と実 行しておきます。 コンパイル中に ``Virtual memory exhausted'' というメッセージが cc から 出力されるのを避けるには、データやスタックのサイズ制限を増やしておくと いいでしょう(csh の場合 ``limit datasize 32M'' と ``limit stacksize 16M'' を実行しておきます)。 メモ: NetBSD 0.9A と XFree86 2.1 からは、__386BSD__ というシンボルをコ ンパイラも X の *BSD 用の設定ファイルも設定しなくなっています。クライ アントを各種 BSD 系のシステムへ移植する時は、BSD というシンボルを本来 BSD 特有なコードに使うようにする必要があります。シンボルの値を使って BSD のリリースを区別することもできます。例えば、 Net-2 以降のリリース に特有のコードの場合には以下のようにします: #if (BSD >= 199103) このシンボルを正しく設定する為に、 をソース中でインクルー ドするようにしてください。XFree86 3.1.1 以降では、 CSRG_BASED というシ ンボルが各種 BSD システムのために定義されています。これは のインクルードの保護のために使われます。 本当に i386 系の各種 BSD に特有な部分に関するコードには、 FreeBSD には __FreeBSD__ を、NetBSD には __NetBSD__ を、 OpenBSD には __OpenBSD__ を、386BSD には __386BSD__ を、 BSD/386 には __bsdi__ を使用してくださ い。 メモ(その2): 実行時に次のようなメッセージが出たら ld.so: undefined symbol _XtCvtStringToFont NetBSD のダイナミックリンク機構の弱点でつまづいています。libXmu を使用 するアプリケーションは、libXt も使用します。クライアントがごく普通の Imakefile を使用するなら、この依存性は自動的に Makefile 中に含まれま す。したがって問題が現れることはないでしょう。もしそうでない場合は単 に、``-lXt'' を Imakefile や Makefile のライブラリリストに追加して、再 リンクを行ってください。 10. 謝辞 以下の方々に深く感謝します: o Pace Willison さんは最初に 386BSD への移植を行いました。 o Amancio Hasty さんはカーソルの復元やマウスのバグなどたくさんの修正 を行いました。 o Christoph Robitschko さんは com.c と、それに伴って select() を修正 しました。 o Nate Williams さんは X 用のパッチキットのサポートを行いました。 o Walnut Creek Cdrom の Rod Grimes さんと Jack Velte さんは FreeBSD のバイナリリリース用に機材の提供してくださいました。 $XFree86: xc/programs/Xserver/hw/xfree86/doc/Japanese/README.NetBSD,v 1.1.2.4 1999/12/28 12:13:47 hohndel Exp $ $XConsortium: NetBSD.sgml /main/26 1996/10/28 05:43:20 kaleb $ 11. 日本語訳について この日本語訳(バージョン 3.3.3-3.3.6)は大石勲 さん の 3.3.2 版の翻訳をベースに X Japanese Documentation Project が更新を行ったものです (更新: 藤原輝嘉 )。