テスト用にgitからXserver全体をビルドしました。gitツリーに対してすべてのモジュールをコンパイルする簡単な方法としてfreedesktop.orgが提供する build.sh を使用し、/opt/xorg
パスの下にインストールします。問題は、gdm
がXserverと関連するバイナリをどこからロードするかをどのように決定するかがわからないことです。
X.orgサイト セクションを読みました:「実際に適合性テストを実行しています」が、使用できるスクリプト/ヘルパーは404を返します。
Xorg実行可能ファイルの場所とそのリンクはわかっていますが、カスタムパスにビルドおよびインストールされたXserverをテストしたいので、すべてが期待どおりに機能するのに十分かどうかはわかりません。
Debian7.0とGDM3.4.1を使用しています。
他の方法も使用できますか?
2つの言葉で答えてください:GDM用のXserverの場所は、configure.acのコンパイル時にハードコードされています 行1199 X_SERVER変数にあり、構成できません。だから、あなたはシンボリックリンクで遊ぶことができるかもしれません、リンク/usr/bin/Xorg
(または、おそらく/usr/bin/X
、Xserverのビルドについて this )を参照してください。
詳細:
私もDebian7を持っており、これが私のプロセスツリーです。
|-gdm3-+-gdm-simple-slav-+-Xorg
| | |-gdm-session-wor-+-gnome-session-+-bluetooth-Apple---{bluetooth-Apple}
| | | | |-evolution-alarm---2*[{evolution-alarm}]
| | | | |-gdu-notificatio
| | | | |-gnome-fallback----2*[{gnome-fallback-}]
| | | | |-gnome-panel-+-gnome-terminal-+-bash
| | | | | | |-bash---vi
| | | | | | |-bash-+-less
| | | | | | | `-pstree
| | | | | | |-gnome-pty-helpe
| | | | | | `-3*[{gnome-terminal}]
| | | | | |-iceweasel-+-plugin-containe-+-4*[gtk-gnash]
| | | | | | | `-{plugin-containe}
| | | | | | `-31*[{iceweasel}]
| | | | | |-Pidgin
| | | | | `-3*[{gnome-panel}]
| | | | |-gnome-screensav---2*[{gnome-screensav}]
| | | | |-gnome-settings----2*[{gnome-settings-}]
| | | | |-gnome-sound-app---{gnome-sound-app}
| | | | |-metacity---3*[{metacity}]
| | | | |-nm-applet---{nm-applet}
| | | | |-notification-da---{notification-da}
| | | | |-polkit-gnome-au---{polkit-gnome-au}
| | | | |-ssh-agent
| | | | |-tracker-miner-f---2*[{tracker-miner-f}]
| | | | |-tracker-store---6*[{tracker-store}]
| | | | `-3*[{gnome-session}]
| | | `-2*[{gdm-session-wor}]
| | `-{gdm-simple-slav}
| `-{gdm3}
したがって、Xorgはgdm-simple-slaveを介して開始されます。間違いなく、/etc/gdm/Init/Default
は、Xserverの起動とは何の関係もありません。 ここ および ここ と言われています。
Xがgdmからどのように開始されるか、構成することが不可能であるいくつかの 表示 がありました。
私はかなりよく構造化されたソースコードを選ぶことにしました。そう:
ソースコード に移動します。 デーモン フォルダがあります。このフォルダには [〜#〜] internals [〜#〜] ファイルが含まれています。コードの構造。
そこにあなたは読むことができます:
** GdmServer
ローカルXサーバーの実行を管理する、スレーブによって使用されるクラス。
したがって、必要なファイルは https://git.gnome.org/browse/gdm/tree/daemon/gdm-server.c
Xサーバーの呼び出しとそのコマンドライン引数の作成を担当する、いくつかのネストされた関数があります。
Xサーバープロセスの実行を直接担当する関数は gdm_server_spawn であり、これは 694行目 にglibの g_spawn_async_with_pipes でXを生成します。
それで、そのargv
がどのように形成されるかを調べます。 2つの言葉で言えば 293行目 であり、X_SERVERマクロの値が必要です(sysVinitの代わりにRedHatのsystemdを使用しているが、そうではない場合を除く:))。
残念ながら、このマクロはconfigure.acで形成されているようです 行1199 そしてハードコーディングされています。したがって、Xserverのビルドへのシンボリックリンクをそれらの場所の1つに配置するのが最善のオプションのようです。
@Bobは、これにはランタイム構成オプションがないと言っており、パッチを適用したソースからgdm3を再構築したくなかったので、次のアプローチを取りました。
まず、実際のXサーバーを脇に移動します。
Sudo dpkg-divert --local --rename --add /usr/bin/Xorg
次に、/usr/bin/Xorg
の代わりに新しいシェルスクリプトをドロップします。
#!/bin/sh
test -x /usr/local/bin/Xorg && exec /usr/local/bin/Xorg
exec /usr/bin/Xorg.distrib
このスクリプトは、バージョンがある場合は/usr/local
からXorg
を実行し、そうでない場合は最初のステップでdpkg-divert
したDebianパッケージバージョンにフォールバックします。
このようにして、カスタムビルドのXorg
バイナリを削除または名前変更することで、正常なバージョンに簡単にロールバックできます。 GNU Stow を使用してそれを行います。