テストのためにgitで完全なXserverを構築しました。使用することをお勧めします。build.shgitツリーのすべてのモジュールをコンパイルし、その/opt/xorg
パスにインストールする簡単な方法としてfreedesktop.orgで提供されています。問題は、gdm
Xserverと関連バイナリをロードする場所を決定する方法が見つからないことです。
私が読んでX.orgウェブサイトその部分は「実際に適合テストを実行しています」ですが、私が使用できるスクリプト/ヘルパーは404を返します。
Xorg実行可能ファイルとそのリンクの場所を知っていますが、カスタムパスに構築されインストールされているXserverをテストしたいので、これがすべてが期待どおりに機能するのに十分かどうかはわかりません。
私はDebian 7.0とGDM 3.4.1を使用しています。
使用できる他の方法はありますか?
答え1
2単語で答えてください。
GDMのXserverの場所は、コンパイル時にconfigure.acにハードコードされています。1199ラインX_SERVER変数にあり、構成できません。したがって、おそらくシンボリックリンク、リンク/usr/bin/Xorg
(または可能性は低いが/usr/bin/X
参照)を使用できます。これ)をXserverバージョンに変更してください。
詳細:
私もDebian 7を持っており、これは私のプロセスツリーです:
|-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を起動することとはまったく関係ありません。ここそしてここ。
いくつかあります表示、gdmでXを起動する方法を設定することは不可能です。
私はソースコードを使用することにしましたが、そのソースコードは非常によく構成されています。だから:
移動ソースコード、一つあります。悪魔含まれるフォルダ内部構造コードの構造を説明するドキュメントです。
ここから次の内容を読むことができます。
** GDMサーバー
ローカルXサーバーの動作を管理するためにスレーブデバイスが使用するクラス。
だから私たちに必要なファイルはhttps://git.gnome.org/browse/gdm/tree/daemon/gdm-server.c
Xサーバーの呼び出しとコマンドライン引数の生成を担当するいくつかの入れ子関数があります。
Xサーバープロセスの実行を直接担当する機能は次のとおりです。gdm_server_spawn、これはXを生成します。694号線話すg_spawn_async_with_pipes。
argv
それでは、どうなったのか調べてみましょう。まあ、二つの言葉で表現すると293号線X_SERVERマクロの値が必要です(sysVinitの代わりにRedHatのsystemdを使用しない限り:)。
残念ながら、このマクロはconfigure.acで生成されているようです。1199ラインそしてハードコーディングされています。したがって、最良のオプションは、これらの場所の1つにXserverバージョンへのシンボリックリンクを配置することです。
答え2
@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
バージョンがある場合、スクリプトはXorg
そのバージョンで実行され、それ以外の場合は、最初のステップで作成したDebianパッケージのバージョンに置き換えられます。/usr/local
dpkg-divert
Xorg
これにより、カスタムバイナリを削除または名前を変更して、既知の良好なバージョンに簡単にロールバックできます。GNUストー。