Running X11 - 7. XFree86 トラブルシューティング
7.1 XDarwin を起動した直後に終了かクラッシュします
慌てない、慌てない。 XFree86 をおかしくする原因は沢山あります。 このなかで、起動に関連するものは特に多いです。 起動時に問題があった場合、当然 XDarwin がクラッシュすることもよくあります。 この節では起こりうる問題についての対処の完全な一覧を提供していきたいと思います。 まず最初は、二種類の情報が必要です。
XDarwin バージョン XDarwin のバージョンは、 Finder の XDarwin アイコンを 一回だけ クリックして、メニューから " 情報を見る" を選択します。 バージョンは、新しいバイナリテストリリースが XonX プロジェクトから出たときだけあがります。 つまり、 "1.0a1" は実際は 1.0a1 と 1.0a2 の間にあります。
エラーメッセージ
これは問題を特定するために必須の情報です。
エラーメッセージを見るのは、どうやって XDarwin を起動したかによって変わります。
startx
をターミナルから起動した場合、そのウィンドウ内に出力されます。
スクロールアップして見つけて下さい。
XDarwin アイコンをダブルクリックして起動した場合、メッセージはシステムログに書かれます。
アプリケーションフォルダ内のユーティリティーから Console を起動し、該当するメッセージを探して下さい。
メッセージについての説明をします:
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root
Class: Harmless. X11 は隠しディレクトリを /tmp に作り、ソケット "ファイル" をローカル接続用に作成します。 セキュリティー上の問題から、 X11 は root を所有者にしますが、誰でも書き込めるため実行時には問題にはなりません。 (注記: ディレクトリを root に持たせることは困難です。 Mac OS X では /tmp を 再起同時に削除し、 XDarwin 自体は root 権限では実行されないためです)
QuartzAudioInit: AddIOProc returned 1852797029
-[NSCFArray objectAtIndex:]: index (2) beyond bounds (2)
kCGErrorIllegalArgument : CGSGetDisplayBounds (display 35434400)
No core keyboard
Class: Bogus (嘘八百). これは前のエラーをリセットする際に発生するものです。 この間、起動バナーがもう一つできますが、これは XDarwin では動作しないため、このエラーを出力します。 もしこのメッセージが出てきたら、ターミナルまたは Console をさらにスクロールアップして他のメッセージを探して下さい。 この問題は 1.0a3 あで存在しましたが、これ以降では修正されました。
cat: /Users/chrisp/.Xauthority: No such file or directory
Class: Mostly harmless.
このメッセージがどこからきたのかわかっていません。
動作には特に影響しないようです。
これはホームディレクトリ内で touch .Xauthority
を起動すると取り除くことができます。
Gdk-WARNING **: locale not supported by C library
Class: Harmless. これは、文字通りのことで、アプリケーションの実行には関係しません。 詳細は、下記を参照して下さい。
Gdk-WARNING **: locale not supported by Xlib, locale set to C Gdk-WARNING **: can not set locale modifiers
Class: Bad, but not fatal. このメッセージは上記のメッセージと一緒に出てくることがあります。 これは、 XFree86 のロケールデータファイルが存在しないことを示しています。 ソースからビルドした場合、このエラーは発生しないようです。 ほとんどのアプリケーションは動作しますが、 GNU Emacs は例外です。
Unable to open keymapping file USA.keymapping. Reverting to kernel keymapping.
Class: Often fatal. これは XDarwin 1.0a1 で "Load from file" keymapping オプションがオンの場合に発生します。 このバージョンでは Preferences ダイアログでファイルを指定する場合にフルパスで指定する必要がありますが、コマンドラインで指定した場合は自動的に検索します。 このメッセージは通常、下の "assert" メッセージが続きます。 この問題を解決するには、下に書かれていることに従って下さい。
Fatal server error: assert failed on line 454 of darwinKeyboard.c!
Fatal server error: Could not get kernel keymapping! Load keymapping from file instead.
Class: Fatal.
Apple の Mac OS X 10.1 における変更が XFree86 のキーボードレイアウトをオペレーティングシステムカーネルから読むコードを壊しました。
上記のメッセージはこのために出てきます。
Mac OS X 10.1 上では "Load from file" keymapping オプションを使わなければなりません。
この設定は XDarwin Preferences ダイアログにあります。
ファイルが選択されているか確認します ("Pick file" ボタンを使う) 。
XDarwin のバージョンによってはチェックボックスをオンにするだけでは動作しません。
もし XDarin が直ぐに終了して Preferences ダイアログまでたどり着けない場合、
startx -- -quartz -keymap USA.keymapping
を実行してターミナルから起動します。
これで通常は XDarwin が起動します。
Preferences で設定を保存します。
Fatal server error: Could not find keymapping file .
Class: Fatal (メッセージの通り).
これは Panther でキーマッピングファイルがないために発生します。
xfree86-4.3.99-16
以降のバージョンではキーマッピングファイルを必要としないので、これをインストールして下さい。
Warning: no access to tty (Inappropriate ioctl for device). Thus no job control in this shell.
Class: Mostly harmless. XDarwin 1.0a2 以降ではクライアント起動ファイル (.xinitrc) を実行する際に裏で対話的にシェルを起動しています。 これによって PATH を設定せずにすんでいます。 シェルによっては、実際のターミナルには接続していないとメッセージを発しますが、ジョブ管理などにはシェルを使わないので無視します。
Fatal server error: failed to connect as window server!
Class: Fatal.
Aqua が存在しているのにコンソールモードのサーバ (純粋な Darwin) が起動されたことを意味しています。
通常、公式 XFree バイナリディストリビューションをインストールして XQuartz.tgz tarball
を残していた場合にこのエラーが発生します。
また、 /usr/X11R6/bin のシンボリックリンクが壊れていたり、ターミナルからXDarwin
を実行しても発生することがあります
(ターミナルからの起動には startx を使います。XFree86の起動 を参照) 。
いずれの場合も、 ls -l /usr/X11R6/bin/X*
を実行して出力の、特に以下のようになっている4カ所を見ます。
X
XDarwinStartup
へのシンボリックリンク;
XDarwin
, 実行可能ファイル (コンソールモードサーバ);
XDarwinQuartz
/Applications/XDarwin.app/Contents/MacOS/XDarwin
へのシンボリックリンク;
XDarwinStartup
小さい実行可能ファイル。
もしどれか一つでもないか、違うファイルへリンクされていたら、修正する必要があります。
修正の方法はどうやって XFree86 をインストールしたかによって変わります。
Fink で XFree86 をインストールした場合、
xfree86
パッケージ (または OS 10.2 以前はxfree86-rootless
)
を再インストールする必要があります。
手動でインストールした場合、Xquartz.tgz からファイルを取得します。
The XKEYBOARD keymap compiler (xkbcomp) reports: > Error: Can't find file "unknown" for geometry include > Exiting > Abandoning geometry file "(null)" Errors from xkbcomp are not fatal to the X server
Class: Mostly harmless. メッセージの通り、致命的ではありません。 私が知っている限り、 XDarwin は XKB 拡張は使っていません。 おそらくクライアントプログラムによっては使ってることもあるでしょうが...
startx: Command not found.
Class: Fatal.
これは XDarwin 1.0a2 と 1.0a3 で シェルの初期かファイルが /usr/X11R6/bin
を PATH 変数に追加しない場合に発生します。
Fink を使っていてデフォルトのシェルを変えていない場合、 (Fink の解説の通り)
source /opt/sw/bin/init.csh
という一行をホームディレクトリ内の
.cshrc
に追加すれば十分です。
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed _XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error: Cannot establish any listening sockets - Make sure an X server isn't already running
Class: Fatal.
これは、間違って複数の XDarwin を起動しようとしたときに発生します。
あるいは、 (クラッシュなど) XDarwin を正常に終了しなかった場合もあり得ます。
または、ローカル接続用ソケットのファイル権限の問題かもしれません。
rm -rf /tmp/.X11-unix
できれいにするか、コンピュータの再起動でなおります
(Mac OS X では自動的に起動時に /tmp をきれいにし、ネットワークスタックをリセットします) 。
Xlib: connection to ":0.0" refused by server Xlib: Client is not authorized to connect to Server
Class: Fatal.
誤った認証データのためにクライアントプログラムが表示サーバ (XDarwin) に接続できません。
これはある種の VNC インストール、 root で XDarwin を起動、あるいはすごく変な状況下が原因となります。
通常、ホームディレクトリから .Xauthority
ファイル
(認証データが保存されている) を削除し、空ファイルを作成します:
cd rm .Xauthority touch .Xauthority
この他に、 .xinitrc
ファイルが原因となることもあります。
.xinitrc
が実行されて直ぐに終了するような場合、 xinit
は
ユーザーのセッションが終了したと解釈して XDarwin を終了します。
.xinitrc 節 の詳細をご覧下さい。
PATH を設定し、終了しないプログラムをバックグラウンドでひとつだけ起動させることは絶対に忘れないで下さい。
exec xterm
を追加して、ウィンドウマネージャが見つからない場合の安全策にする方法もあります。
7.2 GNOME パネルや GNOME アプリケーションメニュのアイコンが黒い
よくある問題に、アイコンや他の画像が黒い長方形や輪郭だけ表示されるといったものがあります。 究極的には、これはオペレーティングシステムの限界によるものです。 この問題は Apple に報告されていますが、現時点では修正する気はないようです。 Darwin bug report をお読みください。
現状は、 X11 プロトコルの MIT-SHM 拡張 が Darwin と Mac OS X では実用的には使用できないようです。
このプロトコル拡張はサーバ側またはクライアント側で無効化することができます。
Fink でインストールされた XFree86 サーバ (xfree86-server と xfree86-rootless) は既に無効化しています。
GIMP と GNOME パネルも対処しています。
他のアプリケーションで同様の問題が発生した場合、 --no-xshm
コマンドラインオプションをつけて実行してみて下さい。
7.3 キーボードが XFree86 で反応しない
この問題は今のところノート (PowerBook, iBook) だけで発生するようです。 この問題を回避するために "Load from file" keymapping オプションが実装されました。 現在では古い方法 (カーネルからマッピングを読む) は Mac OS X 10.1 で使えなくなったため、デフォルトになっています。 もしこのオプションが有効になっていない場合、 XDarwin の Preferences ダイアログで有効にできます。 "Load from file" チェックボックスをチェックしてキーマッピングファイルを選択して下さい。 XDarwin を再起動後、キーボードが使えるはずです (下記参照)。
XFree86 をコマンドラインから実行している場合、オプションとしてキーマッピングファイルを渡すこともできます:
startx -- -quartz -keymap USA.keymapping
7.4 Back Space キーが動かない
これは、 "Load keymapping from file" オプションを有効にした場合におこることがあります。
マッピングファイルはバックスペースキーを "Delete" キーとして登録し、 "Backspace" ではありません。
これは、 .xinitrc
ファイルに以下の行を追加して直します:
xmodmap -e "keycode 59 = BackSpace"
もし私の記憶が正しければ、 XDarwin 1.0a2 以降では自動的に Backspace キーとしてマップしています。
7.5 "Warning: locale not supported by C library"
このメッセージはよく見かけますが、無害です。 メッセージの通り、国際化が標準 C ライブラリを通してサポートされていないので、プログラムはデフォルトの英語でメッセージ、日時などを使います。 この問題の対処法はいくつかあり:
-
無視する.
-
環境変数 LANG をアンセットしてメッセージが出てこなくする。 これは、国際化されている他のプログラムが (gettext/libintl の) サポートを使用しなくなるので注意して下さい。
.xinitrc
の例として、unset LANG
.cshrc
の例:unsetenv LANG
-
(10.1 のみ)
libxpg4
Fink パッケージを使用する。 これはシステムライブラリより前にロードされる (DYLD_INSERT_LIBRARIES 環境変数を使った) ロケール関数などを含む小さなライブラリです。 この場合、 LANG 環境変数に完全な値、例えばja_JP.eucJP
を使う必要があります。ja
やja_JP
では動作しません。 -
Apple に将来の Mac OS X に、ちゃんとしたロケールサポートを追加してもらう。
次: 8. 使用上の Tips