X11

無法從螢幕會話內部執行“startx”

  • December 9, 2019

我正在執行 Slackware GNU/Linux 14.2,預設情況下它不會啟動 X 伺服器。一時興起,我嘗試startxscreen會話中執行並收到警告

/usr/libexec/Xorg.wrap: Only console users are allowed to run the X server
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
Couldn't get a file descriptor referring to the console

為什麼我不能startx從螢幕會話中執行?您可以在“原始”控制台上訪問哪些資源,而在螢幕下執行的 shell 上則無法訪問這些資源?

只有當你在電腦前時,跑步startx才有意義。測試控制台所有權是確定這一點的一種方法。正如您所發現的,它可以通過在screen會話中操作而被愚弄。在那種情況下,你沒有 X。

首先要了解這一點,我們必須了解終端、shell 和控制台之間的區別。

  • 終端是一個執行外殼的程序,過去它是一個物理設備(在終端是帶鍵盤的顯示器之前,它們是電傳打字機),然後它的概念被轉移到軟體中,比如 Gnome-Terminal。
  • Gnome-Terminal,一個黑色的視窗出現,執行Shell,所以我們可以執行我們的命令。
  • 控制台是一種特殊的終端,它也是一個物理設備。例如在 Linux 中,我們有虛擬控制台,我們可以通過 Ctrl + Alt + F1 到 F7 的組合來訪問它們。

虛擬控制台,因為在早期它是一個物理設備。但現在它不是一個單獨的專用設備。所以我們稱之為虛擬終端..

現在的大多數終端嚴格來說都是終端仿真器。它是類 UNIX 系統工作中的一種角色,同時也是系統提供的基本介面。

事實上,包括 GUI 在內的一切都建立在它之上。

$$ 1 $$

通俗地說,我們可以說“終端”是指具有星形拓撲的電腦網路中的端點。

那麼問題就來了。由於 GUI 是在控制台上建構的。那麼如果我們想做一些命令行操作怎麼辦。答案是終端……它進一步模擬了控制台……讓我們在其中輸入我們最喜歡的命令。

的解釋

$$ 1 $$ 所以在這裡我們知道,即使是 GUI 也是在控制台上建構的。通過輸入命令startx,您再次請求打開和新的 XServer。所以你自己想想為什麼GUI終端應該讓你這樣做???

$$ do you want to break your XServer?? $$. 如果您真的想強制執行該命令..只需以管理權限執行startx命令即可。 你會成功,但你肯定會破壞你的 XServer 執行時。

並回答你最後一個問題..

$$ What resource can you access on a “raw” console that you can’t on a shell running under screen? $$ 事實上,到目前為止,我還沒有看到任何情況下我無法通過在 Xserver 上執行的終端訪問資源。您必須能夠通過內部 Xserver GUI 終端訪問所有資源..(因為這也是為了滿足普通控制台所提供的所有需求!!!)..

但是執行一個命令,其結果與在完全坐在那個樹枝上時切割樹枝的結果相同……肯定會產生錯誤。

電腦科學領域的一切都是有意義的。

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