只有一個 X Screen 工作;如何獲得兩個 X 螢幕?
在內部
nvidia-settings
(以sudo
提升的權限執行),我無法讓第二個 X 螢幕工作。這是我嘗試過的一件事的分步描述:
- 在左側,選擇“X 伺服器顯示配置”
- 選擇輔助顯示器(用於接收器的顯示器)
- 在“配置”下拉菜單中選擇“新建 X 螢幕(需要重新啟動 X)”
- 選擇“應用”
- 當彈出“Cannot Apply”對話框說明必須將配置保存到X config文件時,選擇“Apply What Is possible”(可能需要在15秒內選擇“OK”才能保留更改)
- 選擇“保存到 X 配置文件”和“保存”
要重新啟動 X 伺服器以使更改生效,我嘗試了幾種方法,例如重新啟動電腦並通過以下方式重新啟動 X 伺服器程序:
sudo systemctl restart display-manager
仍然經過多次試驗,只有一個 X Screen 存在。我
systemd
通過journalctl -e _COMM=gdm-x-session
. 這是一段有趣的摘錄:(II) NVIDIA(0): Validated MetaModes: (II) NVIDIA(0): "DP-0:nvidia-auto-select+0+0" (II) NVIDIA(0): Virtual screen size determined to be 2560 x 1440 (--) NVIDIA(0): DPI set to (108, 107); computed from "UseEdidDpi" X config (--) NVIDIA(0): option (EE) NVIDIA(G0): GeForce GTX 960 (GPU-0) already has an X screen assigned; (EE) NVIDIA(G0): skipping this GPU screen (EE) NVIDIA(G0): Failing initialization of X screen
這是一段有趣的摘錄:
(II) Loading sub module "glxserver_nvidia" (II) LoadModule: "glxserver_nvidia" (II) Loading /usr/lib64/xorg/modules/extensions/libglxserver_nvidia.so (II) Module glxserver_nvidia: vendor="NVIDIA Corporation" compiled for 1.6.99.901, module version = 1.0.0 Module class: X.Org Server Extension (II) NVIDIA GLX Module 440.82 Wed Apr 1 19:47:36 UTC 2020 (II) NVIDIA: The X server supports PRIME Render Offload. (WW) NVIDIA(0): Failed to initialize Base Mosaic! Reason: Only one GPU (WW) NVIDIA(0): detected. Only one GPU will be used for this X screen.
這是一個不太有趣的摘錄:
(II) Initializing extension GLX (II) Indirect GLX disabled. (II) GLX: Another vendor is already registered for screen 0
關於消息
GeForce GTX 960 (GPU-0) already has an X screen assigned; skipping this GPU screen
Failing initialization of X screen
,如果這確實是根本原因,在我重新安裝 Fedora 31 之前,我不明白為什麼這不是問題。我檢查/etc/X11/xorg.conf
並確認目前定義了兩個 GPU 設備 - 每個 X 一個文件中的螢幕(儘管它們指向同一個物理設備)。以下是全部內容/etc/X11/xorg.conf
:# nvidia-settings: X configuration file generated by nvidia-settings # nvidia-settings: version 440.82 Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 2160 Screen 1 "Screen1" Above "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" Option "Xinerama" "0" EndSection Section "Files" EndSection Section "InputDevice" # generated from default Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/input/mice" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "kbd" EndSection Section "Monitor" # HorizSync source: edid, VertRefresh source: edid Identifier "Monitor0" VendorName "Unknown" ModelName "Dell S2716DG" HorizSync 34.0 - 209.0 VertRefresh 30.0 - 144.0 Option "DPMS" EndSection Section "Monitor" # HorizSync source: edid, VertRefresh source: edid Identifier "Monitor1" VendorName "Unknown" ModelName "DENON, Ltd. DENON-AVR" HorizSync 30.0 - 136.0 VertRefresh 58.0 - 121.0 Option "DPMS" EndSection Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GTX 960" BusID "PCI:1:0:0" Screen 0 EndSection Section "Device" Identifier "Device1" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GTX 960" BusID "PCI:1:0:0" Screen 1 EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "Stereo" "0" Option "nvidiaXineramaInfoOrder" "DFP-1" Option "metamodes" "DP-0: nvidia-auto-select +0+0" Option "SLI" "Off" Option "MultiGPU" "Off" Option "BaseMosaic" "off" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Monitor1" DefaultDepth 24 Option "Stereo" "0" Option "metamodes" "HDMI-0: nvidia-auto-select +0+0 {AllowGSYNC=Off}" Option "SLI" "Off" Option "MultiGPU" "Off" Option "BaseMosaic" "off" SubSection "Display" Depth 24 EndSubSection EndSection
系統資訊
全新安裝 Fedora 31
一張帶有專有 Nvidia 驅動程序的顯卡 (GeForce GTX 960),通過“RPM Fusion for Fedora 31 - Nonfree - NVIDIA Driver”儲存庫中的軟體中心安裝
連接到顯卡的兩台顯示器
- 通過 DisplayPort 顯示主電腦(連接到戴爾電腦顯示器)
- 輔助顯示器 + 通過 HDMI 的聲音輸出(連接到 DENON 接收器)
問題
有誰知道如何讓多個 X 螢幕再次工作?如果我可以提供更多有用的技術資訊,請告訴我(相關的 shell 命令將不勝感激)。
附加背景:擁有兩個 X 螢幕的動機
電腦堅持認為,任何連接到 HDMI 的顯示器都是某些活動的“主要”顯示器,無論在 中選擇哪個顯示器作為“主要顯示器”
nvidia-settings
或如何訂購xorg.conf
。我相信這是顯卡韌體的一個功能,因為 POST 消息、GRUB2 菜單和其他低級軟體在連接時總是通過 HDMI 顯示。這是不可配置的。在執行作業系統時,這種“預設為 HDMI”現象會導致在輔助顯示器上打開新視窗時出現重大問題。新視窗不可見,因為連接到接收器的電視幾乎總是關閉,而接收器本身保持打開以提供聲音。我了解到我可以使用
shift
++window btn
快捷arrow btn
方式將活動視窗帶到我選擇的顯示器上,而無需打開電視通過 GUI 將其拖過;這有點幫助。除了煩人之外,有時新打開的視窗會被忽視,甚至更糟:一些全屏應用程序(例如游戲)無法移動到正確的顯示器,或者只能跨越兩個顯示器。這是一個主要的可用性問題。在某個時候,我想出了以下解決方案:創建一個新的 X 螢幕並為每個監視器分配自己的 X 螢幕。這當然只解決了我在作業系統中遇到的問題,但這是一個非常令人滿意的解決方案。遊戲有效,視窗永遠不會出現錯誤的顯示,等等。
現在的問題是,在新安裝 Fedora 後,我無法讓 X Server 再次執行兩個 X Screens。
經過大量研究和實驗(使用
.conf
文件和其他方式),我始終無法確定此問題的根本原因。通過完全重新安裝 Fedora 並在安裝專有的 Nvidia 驅動程序時更加勤奮,我最終確實讓兩個 X 螢幕再次工作。該問題可能與第一次安裝 Nvidia 驅動程序的細微差別有關。我最好的理論是,當 Nvidia 驅動程序安裝程序提示我執行 Xconfig 實用程序時,我可能選擇了“是”。不幸的是,我不記得我的選擇,所以我不確定這是否是問題所在。下面,我描述了我最近安裝 Nvidia 驅動程序的方法,這導致了預期的 X Screen 設置行為。該過程包括我的一些個人偏好,這些偏好與驅動程序安裝並不真正相關,但因為我做了它們而被記錄下來(這些個人偏好被標記為這樣)。第 1 步是我在全新安裝後做的第一件事。
在 Fedora GNU/Linux 上安裝專有的 Nvidia 驅動程序:
sudo dnf upgrade
- 重新啟動電腦
sudo shutdown -r now
sudo dnf install kernel-devel kernel-headers gcc make dkms acpid libglvnd-glx libglvnd-opengl libglvnd-devel pkgconfig
sudo vi /etc/default/grub
- 在
GRUB_CMDLINE_LINUX
條目中,刪除rhgh quiet
(這是我個人的喜好)- 仍然在
GRUB_CMDLINE_LINUX
條目中,添加rd.driver.blacklist=nouveau
和nouveau.modeset=0
- 在該
GRUB_TIMEOUT
行之後,添加新行“GRUB_TIMEOUT_STYLE=menu
”(這是我個人的喜好):wq
保存並退出vi
sudo grub2-editenv - unset menu_auto_hide
(這是我個人的喜好)- 我有 UEFI 引導並且正在執行 Fedora,以便重新生成我使用的 GRUB2 配置:(
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
這對於傳統引導或其他發行版通常不同)- 重新啟動電腦
sudo shutdown -r now
(顯示將低解析度和低質量)sudo init 3
將作業系統切換到執行級別 3- 按提示登錄
cd
到包含.run
從 Nvidia 下載的文件的目錄(對我來說是~/Downloads
)sudo ./NVIDIA_driver_file_name.run
(可能需要執行sudo chmod +x [file_name]
以使其可執行)- 出現提示時,請安裝 DKMS 並安裝32 位兼容性庫
- 出現提示時,不要執行 Xconfig 實用程序
- 重新啟動電腦
sudo shutdown -r now