XウィンドウシステムはNetBSD 1.2から、正式配付セットの一部となりました。最新バージョンを入手することをお薦めしますが、これは次のURLから入手できます:
ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-1.5/mac68k/binary/sets/
xbase.tgz
ファイルがベース配付セットで、Xクライアントのバイナリー、共有ライブラリーそしてコンフィギュレーションファイルのいくつかが含まれます。xcomp.tgz
ファイルはXアプリケーションをコンパイルするのに必要な静的ライブラリーやヘッダファイルなどが含まれます[訳註:当然ですがxcompセットを使用するにはcompセットまたはそれに相当するものがインストールされている必要があります。]。xfont.tgz
セットはX11フォントファイルです。xcontrib.tgz
には、xloadやxevといったX "contrib"ディレクトリーに置かれたアプリケーションやマニュアルページが含まれます。最後にxserver.tgz
ファイルですが、これはXサーバーのバイナリーそのものです。これらのファイルを好みの方法でインストールしてください(つまり、InstallerユーティリティーまたはNetBSD上でtar -xzpv -C / --unlink -f
)。/usr/X11R6/
以下のサブディレクトリーにファイルが展開されます。
正式配付のXサーバーはモノクロサーバーです。NetBSDをブートする際、ビデオモードを1-bit (つまりB&W)に変更しなくてはなりません。NetBSD 1.3のXサーバーには、1.2のサーバーと比較して数多くの改良が加えられていますから、もし古いバイナリーを使っている場合はアップグレードした方が良いでしょう。
もしXがうまく動かないときは、次のように起動してみてください。
startx >& startx.log
これにより、エラーメッセージがstartx.log
というファイルに残り、エラーの原因究明に役立ちます。
startx
とタイプしてもstartx: Command not found.
というエラーになってしまいますXバイナリーの置いてある場所をシェルに教えてやる必要があります。この為にはシェルのpath
変数に/usr/X11R6/bin
を加えてやります。csh
系シェルを使っている場合は.cshrc
ファイルでpath
変数を設定しているところを変更してください。sh
系シェルの場合は.profile
というファイルになります。
私の知る限りXはシングルユーザーモードでは動きません。というのはXに必要なポート接続を司るデーモンがまだ動作していないと思うからです。[訳註:本当の理由は、ルートファイルシステムだけが読み出し専用でマウントされている状態では/tmpにUNIXドメインのソケットが作れないからです]シングルユーザーモードから出るには、exit
とタイプするかコントロールDを押してシングルユーザーモードシェルから抜けてください。すると/etc/rc*
スクリプトを実行し、/etc/fstab
に指定されているファイルシステムを読み書きモードで(または指定されたどんなモードでも)マウントしてマルチユーザーモードに入ります。そうしたらログインしてstartx
とタイプすることでXを起動することができます。
startx
とタイプすると六個の小さなスクリーンがモニターの上の方に表示されます問題はモニターが1-bit (B&W)モードになっておらず、また使用中のNetBSD/mac68kカーネルもXサーバーもカラーに対応していないことです。NetBSDをブートする際、モニターを1-bitモードにしておく必要があることを忘れないように。
startx
とタイプするとxinit: libXmu.so.6.0 not found
というエラーメッセージが出ますこれはシステムがXの共有ライブラリーファイルのありかを知らないのが原因です。これにはldconfig
コマンドを使ってvar/run/ld.so.hints
の内容を書き換える必要があります。
1.2より新しい新方式の設定ファイルを使っている場合、/etc/ld.so.conf
ファイルに次の行をつけ加えてください:
/usr/X11R6/lib
1.2以前と同じ古い方式の場合は/etc/rc.local
ファイルを編集して以下のような内容をつけ加えます:
#
# Build the link-editor fast directory cache.
#
echo "adding X libraries to the runtime link editor directory cache."
ldconfig -m /usr/X11R6/lib
ldconfig
の-m
フラグについてヒントをくれたJim Wise (jim@santafe.arch.columbia.edu)に、この場を借りて感謝します。
上の例ではいずれもX共有ライブラリーファイルが/usr/X11R6/lib
にあると仮定しています。もし他の場所に移動したならその場所を指定してください。
通常、LD_LIBRARY_PATH
環境変数によってldconfig
の共有ライブラリーファイルサーチパスをオーバーライドしたり拡張したりできますが、Xサーバーはsetuidプログラムであり、環境変数によるldconfig
サーチパスの変更はセキュリティー上の理由から無視されるようになっています。詳しくはldconfig(8)
を参照してください。
startx
とタイプするとxinit: libXext.so.6.1 not found
というエラーメッセージが出ます前節の回答を参照してください。
"ld.so: warning: libm.so.0.0: minor version >= 1 expected, using it anyway"
というメッセージが出ますこのエラーメッセージが出力される理由は、システムに現在インストールされている共有ライブラリーよりも新しいライブラリーを使ってXサーバーがコンパイルされたからです。あなたのシステムでは恐らくNetBSD 1.0から1.2までの共有ライブラリーを使用しているのでしょう。このメッセージを出なくするには共有ライブラリーを更新する必要があります。[訳註:メッセージが出力されること以外には実害はないと思いますが、念の為アップグレードしておいた方がよいでしょう]
"ld.so: Undefined symbol "__sys_errlist" in X:X"
というエラーメッセージが出てXが終了してしまいますこの問題は前項同様、古過ぎる共有ライブラリーを使用しているのが原因です。より新しいバージョンのbaseセットをインストールするか、またはcurrentソースを自分でコンパイルして共有ライブラリーを更新する必要があります。
[訳註:これはfvwmに限らず、どのウィンドウマネジャを使用していても起きる問題です]これは初期2バージョンのMacBSD用Xサーバーのバグです。Xバイナリーをアップグレードしましょう。最新版は次のURLを参照してください:
ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-1.5/mac68k/binary/sets/
これも初期2バージョンのMacBSD用Xサーバーのバグです。基本的にはMacBSDのXサーバーでは、'a'などのキーに本来割り当てるべきではないキーコードが割り当てられているのが原因です。Xバイナリーをアップグレードしましょう。最新版は次のURLを参照してください:
ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-1.5/mac68k/binary/sets/
Xクライアントを起動するとき-display
フラグを試してみます:
xterm -display :0.1
これによって、クライアントはlocalhostのディスプレイ(サーバー) 0、スクリーン1に接続されます。またはほとんどのウィンドウマネジャが持っているルートウィンドウメニューを利用することもできます。クライアントを実行するメニューがあれば、そのメニューを二番目のモニターで開いてクライアントを呼び出すことで、そちらのモニターにクライアントウィンドウを表示させることができます。
この問題はNetBSD 1.3のXセットでは修正されていますから、アップグレードをお薦めします。[訳註:以下のワークアラウンドは1.2以前のX配付セットにのみ適用され、1.3では却って逆効果ですので注意してください]
この問題の説明と、旧版X配付セットでのワークアラウンドを以下に示します。
NetBSD/mac68kのXサーバーでは、オプションキーと左右の矢印キーを同時に押し下げることで、それぞれマウスボタンの中および右ボタンの機能をエミュレートしています。どうもこれがXでの上下矢印キーの動作と干渉しているようですが、簡単な修正があります:
中田健 (kenn@eden.rutgers.edu)曰く:
以下に示すのは私の .xmodmaprc ファイルです:
!
! This is an `xmodmap' input file for Apple Standard ADB keyboards.
! Automatically generated on Wed Jun 28 20:09:20 1995 by kenn with
! XKeyCaps 2.22; Copyright (c) 1994 Jamie Zawinski <jwz@lucid.com>.
!
! This file presupposes that the keyboard is in the default state, and
! may malfunction if it is not.
!
remove Mod1 = Alt_L
keycode 0x3D = Down
keycode 0x3E = Up
add Mod1 = Meta_L
さらに、.xinitrc
ファイルに次の一行を加えます(最後ではなく最初の方に):
xmodmap $HOME/.xmodmaprc
これだけです。Mod1のremoveとaddというのは、私の設定ではMod1モディファイアーキーとしてデフォルトのオプションキーではなくコマンドキーを使用しているということです。[訳註: Mod1モディファイアー=MuleではMetaキーとして使ったりする]
古いX配付セットを使っているのが原因です。明らかにX用のサウンドの対応は難しいようですが、Scott Reynolds (scottr@og.org)がNetBSD 1.3のXリリースに音を出させることに成功しました:
ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-1.5/mac68k/binary/sets/
これはハードウェアに依存します。中田健 (kenn@eden.rutgers.edu)とTaras Ivanenko (ivanenko@ctpa03.mit.edu)による初期の作業、およびPaul Goyette (paul@whooppee.com)によるさらなる作業により、NuBusビデオカードを使用するいくつかの'030および'040ベースの機種で、8-bitカラーが利用できるようになっています。
注意:ここに挙げられた情報のほかに、Mark Andres (mark@giganet.net)のカラーX HOWTOも見ておいた方がよいかも知れません。URLは:
http://www2.giganet.net/~mark/NetBSD/howtos/color-x-howto.html
カラーモードでXを使うためにはふたつの条件を満たす必要があります:まず、カーネルにカラーに対応していること。そして、そのカラー機能をXサーバーが知っていて利用できること。NetBSD 1.3に対応したカラーサーバーは以下のURLから入手できます:
ftp://ftp.macbsd.com/pub/NetBSD/X/Xmac68k_color.tar.gz
[訳註:これは中田健のX11R6ベースのカラーサーバーソースを元にColin Wood (ender@macbsd.com)がNetBSD 1.3のX11R6.3に移植したものです]
もしNetBSD 1.2用のカラーサーバーが必要な場合は、上と同じディレクトリーにあるold/
サブディレクトリーをチェックしてみてください。
それぞれのサーバーと同じディレクトリーにあるREADMEファイルを読んでください。さらに、中田健からのカラーサーバーの新機能についてちょっとした情報があります:
新機能は、非カラー対応カーネル使用時のgrfデバイスの初期化です。
サーバーはまず8-bppモードでgrfデバイスを初期化しようとします。それに失敗すると次に1-bppモード初期化を試みます。この初期化にはどちらもTaras Ivanenkoのカラーgrfドライバーのioctl() APIが使用されるので、GENERICカーネルなどカラー対応ドライバーが組み込まれていないカーネルでは初期化は必ず失敗します。古いカラーサーバーではこの時点で諦めていましたが、新しいサーバーはここで、もう少しもがくのです:カラーgrfドライバーAPIで失敗しているのだから今動いているカーネルはカラー対応ドライバーは持っていないだろう、とサーバーは推測します。そしてgrfデバイスは既に1-bppに初期化されているものと仮定し、1-bppモードで起動します。従って、もしNetBSDブート時に1-bpp以外のモードでビデオが初期化されているとサーバーは正常動作しません。しかし、古いサーバーでもどっちみち正常動作は望めなかったのですから違いはないでしょう。
注意: Colorkitに関する誤解について: Tarasのgrfドライバーを組み込んだカーネルとこのサーバーを使用している場合、NetBSDブート時のカラーデプスは何でも構いません。サーバーが8ビットか1ビットに初期化してしまうからです。もしあなたのビデオカードが8ビットモードに対応していない場合1ビットモードが使用されます。言い換えれば、いくらNetBSDブート時にわざわざ使いたいカラーデプスに初期化したとしても、このサーバーでは8または1-bit以外のモードは使用されないということです。なぜ4、16や24ビットモードに対応しなかったかというと、ぶっちゃけた話スキルが追いついていなかったのと[訳註:その後少しはマシになったと見えて、1/4/8/16ビットの各ピクセルデプスに対応するサーバーを作ったりしてはいますが]、それほど必要性を感じなかったからです。ごめん。
簡単に言えば、このサーバーなら通常カーネル、カラー対応カーネルどちらでも動作する、ということです。また端末のビープにも対応しています。という訳で、このサーバーがたぶん私が選ぶサーバーということになります。
もしこのカラーサーバーを/usr/X11R6/bin/Xmac68k
(デフォルト)以外のファイル名でインストールした場合は、そのファイルから/usr/X11R6/bin/X
へのシンボリックリンクを張ってstartx
が正しいサーバーバイナリーを起動できるようにしてやります。
カラービデオサポートをカーネルに付加するにはふたつのやり方があります。古い方がcolorkitのLKM (ローダブル・カーネル・モジュール)を使うやり方です。NetBSD 1.3以降で動作するLKMは次のURLから入手できます:
ftp://ftp.macbsd.com/pub/NetBSD/X/video_lkm/video_lkm_combined.o
Colorkit LKMを使うためにはまずカーネルにロードすることが必要です。最近のカーネルを使っているのなら、既にLKMに対応しているはずです。しかし1.2以前のカーネルの場合にはLKMを使えるようにしたカーネルを自分で構築するか、1.3にアップグレードする必要があります。まず、上のオブジェクトファイルを/usr/lkm
にインストールします。そして、新しい/etc/lkm.conf
がある場合にはそれを下のようにエディットします:
# $NetBSD: lkm.conf,v 1.2 1997/07/14 11:55:46 drochner Exp $
#
# see lkm.conf(5) for details. path will look in /lkm and /usr/lkm.
#
# path options entry postinstall output when
video_lkm_combined.o - video_lkm_cmd - /tmp/video -
もし/etc/lkm.conf
ファイルを使っていない場合は/etcディレクトリーの内容をアップグレードした方がよいでしょう。または、以下のようなものを/etc/rc.local
に加えてください:
# Set up color video
if [ -f /usr/lkm/video_lkm_combined.o ] ; then
echo 'loading color video.'
modload -o /tmp/video -e video_lkm_cmd video_lkm_combined.o
fi
上のコマンドは手動で起動することもできますが、カーネルコンフィギュレーションでoptions INSECURE
が指定されている場合を除き、modload
はシングルユーザーモードでないと実行できません。三つ目の選択肢は、
colorkit LKMソースを入手してコンパイル・インストールし、コンパイルしたディレクトリーに移動してmake load
コマンドを実行することです(もちろんシングルユーザーモードで)。
Colorkit LKM使用時の注意としては、このモジュールはあまり潔くアンロードしないので、マルチユーザーからシングルユーザーモードへシステムをシャットダウンして再度LKMをロードしようとした場合に、一番ありそうなのはシステムがハングしてしまうことです。
さて、カーネルにカラー対応を付加する二番目の方法ですが、これはPaul GoyetteのSLOTMANカーネルを利用することか、または彼のSLOTMANパッチを手に入れて自分のカーネルを構築することです。どちらも以下のURLから入手可能です:
http://www.whooppee.com/slotman/
こちらの方がLKMを使った方法よりおススめです。というのはSLOTMANの方がより多くのビデオカードに対応しており、またこちらのSlot Managerコールの実装の方が、上のLKMよりもより完成度が高いからです。SLOTMANカーネルでサポートされるハードウェアのリストは上のディレクトリーから入手できるはずです。もしあなたの機種がリストに載っていない場合はPaul (paul@whooppee.com)に直接問い合わせてみてください。
さて、今までの話はすべてNuBus (またはPDS)のビデオカードに限ったことでした。では、内蔵ビデオのカラー対応は、というと、Michael Zucca (mrz5149@acm.org)が作業中です。結果として、どの'040ベースMac内蔵ビデオでもカラーXは現在のところサポートされていません。Michaelのプロジェクトページに彼の作業の現状報告があります:
http://www.mdc.net/~mrz5149/projects.html
[訳註:限定つきながら内蔵ビデオでカラーに対応したXサーバーが最近非公式リリースされました。URLは以下の通りです:
ftp://ftp.macbsd.com/pub/NetBSD/X/Xmac68k_OSFA.tar.gz
このOSFAサーバーでは、カラービデオLKMやSLOTMANカーネルを使用していなくても、NetBSDブート時にあらかじめピクセルデプスを好みのものに初期化しておくことでそのモードでサーバーが動作します。ピクセルデプスとしては1/4/8/16ビットの各モードに対応しています。ビデオLKMやSLOTMANカーネル使用時には1-bitを除くどのモードでもカラー表示が可能ですが、通常カーネル使用時には1/4/8ビットではカラーではなくグレイスケール表示になります。これはCLUT (カラールックアップテーブル)のハードウェア操作はビデオLKMやSLOTMANなしでは不可能なためで、NetBSDブート時にあらかじめモニターコントロールパネルやコントロールバーなどでグレイスケールモードにしておく必要があります。16-bitでは5-5-5 TrueColorモードのみに対応しています。インストール手順などはXmac68k_colorと同様です。私のところでは普段はQuadra 840AVの内蔵ビデオの16-bitカラーモードで使用しています—中田]
Fatal server error: Can't run X server with no screens!
とエラーが出てXが終了してしまいますこれは恐らくあなたのビデオハードウェアにカーネルが対応していないのが原因だと考えられます。すべての内蔵ビデオ回路がサポートされている訳ではないのが現状です。まずdmesg
コマンドを使ってブートメッセージ中にgrf0
という文字列を含む行があるかどうか見てください。もしそのような行がなければ、今のところお手上げです(特定ハードウェア用の特殊なパッチやドライバーを組み込んだカーネルがある場合は別ですが)。
もしgrf0
の行がある場合は、恐らくデバイスの作り忘れと考えられます。Rootになって/dev
ディレクトリーにcd
し、次のコマンドを実行して適切なデバイスファイルを作成してください:
sh MAKEDEV grf0 grf1 grf2 grf3
これでたぶん問題は解決するでしょう。
解決策を寄せてくれた中田健 (kenn@eden.rutgers.edu) に感謝します。
Hauke Fath (hauke@Espresso.Rhein-Neckar.DE)がドイツ語キーボード用xmodmaprcファイルを作ってくれました。
ftp://ftp.NetBSD.org/pub/NetBSD/arch/mac68k/contrib/Xmodmap/de/
から入手できます。
/dev/grf2: not found
というエラーで終了してしまいます恐らく古いシステムに二台以上のモニターを接続して使っているのではないでしょうか。いずれにせよ1995年9月以降のXサーバーではいくつかチェックを行うようになっていて、そのひとつが/dev/grf2
をオープンしようとしているのが原因です。このデバイスファイルが存在しないとXサーバーは終了してしまいます。
これを修正するにはrootになって/dev
ディレクトリーにcd
し、/dev
:
sh MAKEDEV grf2 grf3
を実行してデバイスファイルを作成します。
もし上の手順でうまくいかない場合、新しいバージョンのMAKEDEVスクリプトをインストールする必要があります(バージョン1.2以降なら大丈夫)。
回答と修正案を寄せてくれた中田健(kenn@eden.rutgers.edu)とAllen Briggs (briggs@puma.macbsd.com)に感謝します。
Xconsoleを使うか、xtermを-Cオプションつきで起動する必要があります。ただし、
options UCONSOLE
というオプションがカーネルコンフィギュレーションファイルに記述されている必要があります(GENERICカーネルはそのようになっています)。xconsoleのバグにより、Xの起動スクリプト(.xinitrc
など)の中でコンソールの所有者を自分に変えておく必要があるかも知れません。
また、/etc/syslog.conf
ファイルをエディットすることで、syslog
の出力をどこへでもリダイレクトすることができます。
回答を寄せてくれたDavid Brownlee (abs@anim.dreamworks.com)に感謝します。
この問題の原因は、バージョン1.3用Xではgzip圧縮されたフォントを使用していることです。これは新しいXセットはXFree86 3.3をベースにしているからですが、一方古いバージョンはXコンソーシアムのX11R6をベースにしており、フォントはcompress圧縮になっています。新しいサーバーは古い形式のフォントファイルを取り扱えますが、逆はできません。
これを解決するにはXサーバーも含めてXをアップグレードする必要があります。もし古いカラーサーバーを利用しているのが理由でサーバーをアップグレードしなかった場合は、新しいXセットと互換性を持ったカラーサーバーがありますからそちらを使用してください:
ftp://ftp.macbsd.com/pub/NetBSD/X/Xmac68k_color.tar.gz
この情報を寄せてくれたKevin F. Havener (havenerk@thunder.safb.af.mil)に感謝します。
もしあなたのマシンにXが対応しているなら(コンソールが動作するマシンであればほとんどの場合Xも対応します)、ただ単に、起動に非常に長い時間がかかっているだけということが考えられます。例えばLCIIのようにFPUの無くてメモリーの少い機種ではXの起動に20分以上かかることがあるようです。ですから、コーヒーでもいれに行って気長に待ってみてください。
一方、グレイのクロスハッチバックグラウンドに黒いX形カーソルが現れた状態から先に進まない場合は[訳註:特にマウスを動かすとカーソルが動く場合]、.xinitrc
ファイルを設定していないことも原因として考えられます。このファイルがXクライアントを自動的に起動するのです(ただ、パスがきちんと通っているならばデフォルトの状態で最低でもxtermウィンドウが開くはずですが)。Xの自分好みの設定方法についてはX(1)
とxinit(1)
のマニュアルページを参照してください。
NetBSDをブートするときに画面を1-bitモードにしておかなかったこと、カラーXサーバーを使用していること、そしてあなたのシステム構成ではカラーサーバーがサポートされないこと、が原因です。表示されている色は、ブート時にたまたまCLUT (パレット)に設定されていた色なのでしょう。カラードライバーによってサポートされているNuBusビデオカードを持っている場合は カラーXの項を参照して設定してください。そうでない場合は NetBSDを1-bitモードでブートする必要があります。
1.2G 以降のカーネルでは、 option キーと同時に "1"、 "2"、 "3"キーを押すことで、3ボタンマウスをエミュレート することが可能です。ただし、これはデフォルトの GENERIC カーネルでは有効では ありません (少なくともバージョン 1.5 ではそうなんです) 。
マウスボタンのエミュレーションを有効にするには、 NetBSD/mac68k
Kernel Compiling HOWTO の説明に従って新たにカーネルを構築する
必要があります。カーネルソースをダウンロードして、(HOWTO の説明どおりに)
新しくコンフィギュレーションを作ってから、コンフィギュレーションファイルの
ALTXBUTTONS
のある行の行頭の # を削除して、次のようにします。
options ALTXBUTTONS # Map Opt-{1,2,3} to mouse buttons
あとは HOWTO の説明のとおり、新しいカーネルの構築とインストールを続けます。
.xinitrc (xdm を使う場合は .xsession) ファイルに
xmodmap -e "keysym Delete = BackSpace Delete"と書いてみてください。これにより、 backspace が押されたときには backspace を、 shift と同時に押されたときは forward-delete を生成するようになるはずです。 お使いのシステムで forward-delete が機能するかどうかはわかりませんが、 少なくとも backspace の問題は治るはずです。
Table of contents of this chapter, General table of contents