FreeBSD 用 XFree86 に関する README Rich Murphey, David Dawes 8 November 1998 The X Japanese Documentation Project 5 February 1999 ____________________________________________________________ 目次 1. XFree86 とその入手方法について 2. FreeBSD 3.0 と ELF 形式のバイナリ 3. ディスプレイマネージャのインストール (xdm) 4. ハードウェアに合わせた X の設定 5. X の実行 6. X のためのカーネル再構築 7. X クライアントの構築 8. 謝辞 9. 日本語訳について ______________________________________________________________________ 1. XFree86 とその入手方法について XFree86 は X11R6.3 を Intel ベースの Unix のいくつかに移植したもので す。 XFree86 は元々、 X386 1.2 という X11R5 と一緒に配布されていた X サーバでした。このリリースでは新しい機能がたくさん追加され、性能も改善 されていますし、バグもたくさん修正されています。 このリリースについての詳細(インストール手順も含めて)については、リリー スノートを参照してください。 著作権表示には目を通しておいてください。 FreeBSD 2.2.x, 3.0 用の XFree86 のバイナリは以下の場所で入手することが できます: ftp://ftp.XFree86.org/pub/XFree86/current/binaries/ このドキュメントに関する意見や提案があれば、 Rich-Murphey@Rice.edu か XFree86@XFree86.org に電子メールでお知らせください。ドキュメントを修正 します。 2. FreeBSD 3.0 と ELF 形式のバイナリ FreeBSD-3.0 のバイナリ配布は ELF 形式だけです。tar 形式のアーカイブで ある Xbin.tgz には、互換性のために a.out 形式のライブラリも含まれてい ます。 3. ディスプレイマネージャのインストール (xdm) ディスプレイマネージャを使うと PC が X 端末のようになります。つまり、X 上で動作するログイン画面が現われます。 起動時にディスプレイマネージャを自動的に起動するための最も簡単な方法 は、 /etc/ttys に行を追加して、使われていない仮想端末の 1 つで xdm を 起動させることです: ttyv4 "/usr/X11R6/bin/xdm -nodaemon" xterm on secure /usr/X11R6/bin/X をお使いのビデオカードに合った X サーバへのシンボリッ クリンクにすることと、/usr/X11R6/lib/X11/xdm ディレクトリ内の Xservers ファイルを編集し、X サーバのパス名を指定することのいずれかも必ず行いま しょう。 /etc/ttys への変更が反映されるのは、リブート後か ``kill -HUP 1'' を実 行して /etc/ttys を再読み込みさせてからです。root ユーザとしてコンソー ルからログインして ``xdm -nodaemon'' を実行することで、ディスプレイマ ネージャを手動でテストすることもできます。 4. ハードウェアに合わせた X の設定 XF86Config は使っているモニタやビデオカード、マウスの種類を X サーバに 知らせます。必ず XF86Config を作り、使っている特定のハードウェアをサー バに知らせなければなりません。 QuickStart ガイドを一通り読むことと、`XF86Setup' ユーティリティ(インス トールには VGA16 サーバが必要です)または `xf86config' ユーティリティを 使って XF86Config ファイルを作成することを強くお勧めします。 `XF86Setup' ユーティリティを実行する際には、マウスの設定を終えるまでは マウスに触ってはいけません。さもないと、VGA16 サーバとマウスデバイスが 混乱し、マウスやキーボードの入力の問題が起こるかもしれません。 FreeBSD のバージョン 2.2.1 以降で ``moused''(オンラインマニュアルの moused(8) を参照) を実行している場合、マウスのブランドやモデルに関係な く、マウスのプロトコルの種類には SysMouse を、マウスのデバイス名には /dev/sysmouse を指定しなければなりません。 ``moused'' を実行していない場合には、マウスのインタフェースの種類と /dev のエントリ、使用するプロトコルを知っている必要があります。 インタフェースの種類はマウスのコネクタを見れば分かります。シリアルマウ スの場合には D-Sub メスの 9 ピンまたは 25 ピンのコネクタが付いていま す。バスマウスの場合には、D-Sub オスの 9 ピンコネクタか丸型 DIN の 9 ピンコネクタが付いています。PS/2 マウスには小さい丸型 DIN の 6 ピンコ ネクタが付いています。 USB マウスには平たい長方形のコネクタが付いてい ます。一部のマウスには、コネクタを他のタイプのインタフェースに接続でき るアダプタが付属しています。このようなアダプタを使う場合には、マウスと アダプタを組み合わせた状態で一番端になるコネクタがインタフェースの種類 を決めることを覚えておいてください。 次に決めることは、与えられたインタフェースに対する /dev エントリです。 バスマウスと PS/2 マウスの場合、選ぶ必要はほとんどありません: バスマウ スでは必ず /dev/mse0 を使いますし、PS/2 マウスでは必ず /dev/psm0 を使 います。複数個の USB マウスをお使いのシステムまたは USB ハブに取り付け ることができます。これらは /dev/ums0, /dev/ums1, …としてアクセスでき ます。シリアルマウスの場合には、マウスを接続できるシリアルポートが複数 個あるかもしれません。普通は最初の組み込みシリアルポートである /dev/cuaa0 をマウスに割り当てることが多いようです。 どのシリアルデバイスにマウスを接続したかよく分からない場合、デバイスを 確かめる最も簡単な方法は ``cat'' や ``kermit'' を使ってマウスの出力を 見ることです。まずマウスを接続してから、単に次のコマンドを実行し、マウ スを動かしたりクリックした時に出力が行われることを確認するだけです。 % cat < /dev/tty00 正しいマウスデバイスを見つけられなかった場合には、 ``dmesg|grep sio'' を用いて起動時に検出されたシリアルデバイスのリストを取得しましょう。 % dmesg|grep sio sio0 at 0x3f8-0x3ff irq 4 on isa それから、これらのデバイスに対応する /dev のエントリを重ねて確認しま す。まだエントリが存在していなければ、/dev/MAKEDEV スクリプトを用いて 作成します。 % cd /dev % sh MAKEDEV tty00 実際にマウスが接続されているポートを指すシンボリックリンク /dev/mouse を作成してもよいでしょう。こうしておくと、後で「マウス」ポートを見つけ るのが簡単になります。 次のステップは、マウスが使うプロトコルの種類を適切に推定することです。 FreeBSD 2.2.6 以降であれば、マウスが比較的古いモデルでない限り、X サー バは自動的に適切な種類を選択することができます。これらのバージョンでは ``Auto'' プロトコルを指定してください。 他のバージョンの FreeBSD の場合や、バージョン 2.2.6 でも ``Auto'' プロ トコルがうまく動作しない場合には、マウスのプロトコルを推定して試してみ る必要があります。 ここでは経験則を示しておきます: 1. バスマウスの場合には、マウスのブランドに関係なく常に ``BusMouse'' プロトコルを使います。 2. PS/2 マウスの場合には、マウスのブランドに関係なく常に ``PS/2'' プロ トコルを指定すべきです。 注意: XF86Config のオンラインマニュアルには、かなりの数の PS/2 マウスプロトコルが書かれています。しかし FreeBSD の場合 には、 XF86Config に指定する意味がある PS/2 マウスプロトコル は ``PS/2'' だけです。バージョン 2.2.6 以降の FreeBSD は、 PS/2 マウスドライバ psm でこれらの種類のプロトコルを直接サポ ートしているので、使用する PS/2 マウスプロトコルを X サーバ に伝える必要はありません。``Auto'' は動作するはずですが、こ れではなく ``PS/2'' を使ってください。 3. USB マウスに対しては ``Auto'' を指定しなければなりません。 注意: XFree86 の他の文書では、``Usb'' はマウスプロトコル用の キーワードの一つと書かれているかもしれません。このキーワード は必要でなく、したがって FreeBSD ではサポートされていませ ん。USB マウスに対しては必ず ``Auto'' を使ってください。 4. Logitech 製の古いモデルのマウスに対しては ``Logitech'' プロトコルを 使います。最近の Logitech マウスは ``MouseMan'' プロトコルと ``Microsoft'' プロトコルのどちらも使います。 5. 2 ボタンのシリアルマウスのほとんどは ``Microsoft'' プロトコルをサポ ートしています。 6. 3 ボタンのシリアルマウスは ``MouseSystems'' プロトコルで動作すると 思います。動作しない場合には、``Microsoft'' プロトコルで動作すると 思いますが、この場合には 3 番目のボタン(中ボタン)は機能しないでしょ う。3 ボタンのシリアルマウスは ``MouseMan'' プロトコルで動作するこ ともあり、この場合には 3 番目のボタンも期待通りに動作すると思いま す。 7. 3 ボタンのシリアルマウスには小さなボタンが付いていて、 ``MS'' と ``PC''、あるいは ``2'' と ``3'' を選択できることがあります。通常は ``MS'' と ``2'' は ``Microsoft'' プロトコルのことであり、``PC'' と ``3'' は ``MouseSystems'' プロトコルのことです。 8. シリアルマウスにローラーやホイールが付いている場合、このマウスは ``IntelliMouse'' プロトコル互換かもしれません。 5. X の実行 X を実行するにはメモリが最低 8MB 必要です。サーバ、ウィンドウマネー ジャ、ディスプレイマネージャ、xterm で仮想メモリを 8MB 使います。たと え常駐セットサイズがこれより小さくても、メモリが 8MB のシステムで は、gcc のように数メガバイトの空きメモリを期待する他のアプリケーション の分のメモリがほとんど残りません。R6 の X サーバはメモリ 4MB でも動作 しますが、実際には X の実行中にコンパイルを行うと、頻繁にページングが 発生するために時間が 5〜10倍かかってしまいます。 初めてのユーザが X Window を起動するための最も簡単な方法は、 ``startx >& startx.log'' を実行することです。X サーバが画面表示を引き継ぐため、 エラーメッセージはリダイレクトしないと無くなってしまいます。 X から抜けるためには、コンソールになっている xterm で ``exit'' と入力 します。ホームディレクトリに .xinitrc, .xserverrc, .twmrc ファイルを作 ることにより、X をカスタマイズすることができます。これらのファイルにつ いては、オンラインマニュアルの xinit と startx の説明を参照してくださ い。 6. X のためのカーネル再構築 FreeBSD の GENERIC カーネルは何も変更しなくても XFree86 に対応していま す。GENERIC カーネルや、そのスーパーセットであるカーネル設定であれば、 カーネルの変更を行う必要はありません。 BSD カーネルの設定の一般的な説明については、smm.02.config.ps.Z を参照し てください。これはシステム管理者用マニュアルからカーネル設定の章を抜粋 した、すぐに印刷できる Postscript 形式のファイルです。 カーネル設定ファイルを小さくすることにした場合には、 (/sys/arch/i386/conf ファイル)の以下の行は削除してはいけません。これは X をサポートするために必要です: options UCONSOLE #X Console support FreeBSD の GENERIC カーネルはデフォルトで syscons ドライバを使う設定に なっています。同様のカーネル設定を行うには、 /usr/src/sys/i386/conf/GENERIC に次のような行が含まれていなければなり ません: device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr MAXCONS オプションを使って、仮想コンソールの数を設定することができま す: options "MAXCONS=4" #4 virtual consoles このような設定が無い場合のデフォルト値は 16 になります。仮想端末の数は セクション 3の最後で説明した gettys より多くなければなりません。4 は妥 当な最小値です。 X サーバは 2 つのコンソールドライバ(syscons と pcvt)をサポートしていま す。FreeBSD 1.1.5 以降では syscons ドライバがデフォルトです。これらの ドライバは実行時に検出されるので、サーバの設定自体を行う必要はありませ ん。 pcvt をコンソールドライバとして使いたければ、カーネルの設定ファイルに 必ず以下のオプションを入れてください。 options XSERVER #Xserver pcvt における仮想コンソールの数は、以下のオプションを使って設定するこ とができます: options "PCVT_NSCREENS=10" #10 virtual consoles バスマウスや PS/2 マウスのドライバはカーネルに組み込まれていないこと や、組み込まれていても無効にされていることがあります。これらのマウスを 使う場合には、カーネル設定ファイルに以下の行があることを確かめてくださ い: device mse0 at isa? port 0x23c tty irq 5 vector mseintr device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr mse0 はバスマウス用のデバイスで、psm デバイスは PS/2 マウス用のデバイ スです。バスマウスのインタフェースカードは、IRQ やポート番号を変更でき ることがあります。詳しくは、バスマウスのマニュアルやオンラインマニュア ルの mse(4) を参照してください。PS/2 マウスの IRQ とポート番号を変更す る方法は用意されていません。 XFree86 サーバは MIT-SHM 機能拡張をサポートしています。GENERIC カーネ ルはこれをサポートしていないので、使用したければ SYSV 共有メモリをサポ ートするようにカーネルの設定を行う必要があります。この設定を行うには、 以下の行をカーネルの設定ファイルに追加します: options SYSVSHM # System V shared memory options SYSVSEM # System V semaphores options SYSVMSG # System V message queues SoundBlaster 16 を IRQ 2(9) で使っている場合、sb16_dsp.c にパッチを当 てる必要があります。パッチを当てないと、SoundBlaster ドライバを使う設 定のカーネルは 9 番割り込みが存在しないと言ってきて、X サーバが固まっ てしまいます。 S3 のカードとシリアルポート COM4 は 1 つのシステムで同時には使用するこ とはできません。I/O ポートアドレスが重なっているからです。 7. X クライアントの構築 新しいクライアント(X のアプリケーション)を作る最も簡単な方法は、 Imakefile が付属していれば xmkmf を使うことです。 ``xmkmf -a'' を実行 して Makefile を作り、それから ``make'' を実行します。オンラインマニュ アルもインストールした場合には、必ず ``makewhatis /usr/X11R6/man'' を 実行し、 whatis.db を更新してください。 注意: XFree86 2.1 と FreeBSD 1.1 以降、FreeBSD システムに対しては、シ ンボル __386BSD__ はコンパイラによっても X の設定ファイル経由でも定義 されなくなりました。クライアントを BSD システムに移植する時は、本当に BSD に特有のコードに対してはシンボル BSD を使ってください。シンボルの 値を使って、異なる BSD リリースを区別することができます。例えば、Net-2 以降のリリース専用のコードでは次のような指定を行います: #if (BSD >= 199103) このシンボルの定義を確実に正しいものにするため、シンボルを必要とするソ ースコードでは をインクルードしてください。 XFree86 3.1.1 以降では、全ての *BSD システムを表す CSRG_BASED シンボルが定義さ れていることに注意してください。 のインクルードを保護す るために、これを使うべきです。 特定の i386 用 BSD 専用の移植を行ったコードの場合、 NetBSD ならば __FreeBSD__ for FreeBSD, __NetBSD__ を、 OpenBSD ならば __OpenBSD__ を、 386BSD ならば __386BSD__ を、 BSD/386 ならば __bsdi__ を使ってく ださい。 8. 謝辞 多くの方々に感謝します: o *BSD のサポートを最初に行ってくださった Pace Willison さん o 386BSD のカーネルと S3 チップセットのサポートを行ったAmancio Hasty さん o FreeBSD のカーネルをサポートした David Greenman さん, Nate Williams さん, Jordan Hubbard さん o Walnut Creek Cdrom のハードウェアを使わせてくださった Rod Grimes さ ん, Jordan Hubbard さん、 Jack Velte さん o Linux ディストリビューションからアイディアを採り入れた Orest Zborowski さん, Simon Cooperさん, Dirk Hohndel さん $XFree86: xc/programs/Xserver/hw/xfree86/doc/Japanese/READ.FreeBSD,v 3.0.4.3 1999/12/28 12:13:46 hohndel Exp $ $XConsortium: FreeBSD.sgml /main/12 1996/10/28 05:43:08 kaleb $ 9. 日本語訳について 日本語訳は X Japanese Documentation Project が行いました。 (3.3.6 版 翻訳: 藤原輝嘉 ) 原文の著作権は XFree86 プロジェクト社にあり、日本語訳に関する権利は X Japanese Documentation Project にあります。問題点の指摘やご意見は藤原 まで御連絡ください。