如何讓 gdm3 start X 安裝在不同的路徑(或從個性化路徑執行 X)?
我已經從 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 的符號連結放置到這些位置之一。