X11

如何讓 gdm3 start X 安裝在不同的路徑(或從個性化路徑執行 X)?

  • November 17, 2014

我已經從 git 建構了整個 Xserver 以進行測試,建議使用 freedesktop.org 提供的build.sh作為針對 git 樹編譯所有模組並安裝在/opt/xorg路徑下的更簡單方法。問題是我找不到如何gdm決定從哪裡載入 Xserver 和相關的二進製文件。

我在X.org 網站上閱讀了以下部分:“實際執行一致性測試”,但我可以使用的腳本/幫助程序返回 404。

雖然我知道 Xorg 執行檔的位置及其連結,但我不確定這是否足以讓一切按預期工作,因為我想測試在自定義路徑中建構和安裝的 Xserver。

我正在使用 Debian 7.0 和 GDM 3.4.1。

也可以使用任何其他方法嗎?

用兩個詞回答: Xserver for GDM 的位置在編譯時在 configure.ac中的 X_SERVER 變數中的第 1199 行硬編碼,無法配置。所以,也許你可以使用符號連結,連結/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 無關,正如這里這裡所說的。

有一些跡象表明,無法配置 X 如何從 gdm 啟動。

我決定尋找結構良好的原始碼。所以:

進入原始碼,有一個daemon文件夾,裡面有一個INTERNALS文件,解釋了程式碼的結構。

在那裡你可以閱讀:

** Gdm伺服器

從站使用的一個類,用於管理執行本地 X 伺服器。

所以,我們需要的文件是https://git.gnome.org/browse/gdm/tree/daemon/gdm-server.c

有幾個嵌套函式,負責呼叫 X 伺服器並創建它的命令行參數。

直接負責執行 X 伺服器程序的函式是gdm_server_spawn,它使用 glib 的g_spawn_async_with_pipes在第694 行生成X。

所以,我們要弄清楚它argv是如何形成的。好吧,總而言之,它是第 293 行,我們需要 X_SERVER 宏的值(除非您使用 RedHat 的 systemd 而不是 sysVinit,但您不是 :))。

唉,這個宏似乎是在 configure.ac 的第 1199 行中形成的,並且是硬編碼的。因此,似乎最好的選擇是將您建構的 Xserver 的符號連結放置到這些位置之一。

引用自:https://unix.stackexchange.com/questions/81096