Puncte:1

Cum configurez xorg.conf pentru două ecrane X pe un card Nvidia?

drapel cn

Obiective

  • Scopul acestei postări: Aflați ce xorg.conf configurațiile sunt necesare pentru a folosi fiecare dintre monitoarele mele duale ca un ecran X separat.
  • Scopul intermediar pentru această postare: Aflați de ce nu pot începe X cu manualul meu xorg.conf configurație.
  • Valoarea succesului: când pot lansa xeyes sau alte aplicații X11 într-un script care specifică pe care dintre monitoarele mele apar.
  • Scopul final: Pentru a porni containerele LXC GUI (adică un desktop complet) astfel încât să apară pe ecran complet pe un monitor ales. Doresc să pot partaja o tastatură și să pot muta un cursor între monitoare, dar să nu muți ferestrele.

Sistemul meu

  • Ubuntu Server 20.04, placa video Nvidia GT 710. Șoferul este nvidia-dkms-470-server. Conexiunile pe care le folosesc sunt HDMI și DVI.
  • Există și alte plăci video prezente pe sistem, dar sunt aliasate și vor fi utilizate în scopuri de trecere. Nu văd niciun motiv pentru care acest lucru ar trebui să fie relevant, dar driverele video m-au surprins înainte.

Comportament asteptat:

  • Când alerg startx &, X ar trebui să pornească normal și apoi ar trebui să pot deschide xeyes pe ecranul 0 sau 1 folosind DISPLAY=:0.0 sau DISPLAY=:0,1 respectiv.

Comportament real:

  • Nu pot porni X, cu „niciun ecran găsit”.

  • Judecând după bușteni, xf86OpenConsole s-ar putea să aibă legătură cu problema, dar nu am idee despre ce este asta.

  • Aceasta este Xorg.0.log dupa ce incerc sudo startx &.

[ 3083.851] (II) Modul nvidia: vendor="NVIDIA Corporation"
[ 3083.851] compilat pentru 1.6.99.901, versiunea modulului = 1.0.0
[ 3083.851] Clasa modul: Driver video X.Org
[ 3083.851] (II) UnloadModule: „nvidia”
[ 3083.851] (II) Descărcarea nvidia
[ 3083.851] (II) Nu s-a putut încărca modulul „nvidia” (deja încărcat, 0)
[ 3083.851] (II) LoadModule: "nouveau"
[ 3083.852] (WW) Atenție, modulul nouveau nu a putut fi deschis
[ 3083.852] (EE) Nu s-a putut încărca modulul „nouveau” (modulul nu există, 0)
[ 3083.852] (II) LoadModule: „modetting”
[ 3083.852] (II) Se încarcă /usr/lib/xorg/modules/drivers/modesetting_drv.so
[ 3083.854] (II) Setare mod modul: vendor="X.Org Foundation"
[ 3083.854] compilat pentru 1.20.11, versiunea modulului = 1.20.11
[ 3083.854] Clasa modul: Driver video X.Org
[ 3083.854] Clasa ABI: Driver video X.Org, versiunea 24.1
[ 3083.854] (II) LoadModule: „fbdev”
[ 3083.854] (II) Se încarcă /usr/lib/xorg/modules/drivers/fbdev_drv.so
[ 3083.855] (II) Modulul fbdev: vendor="X.Org Foundation"
[ 3083.855] compilat pentru 1.20.1, versiunea modulului = 0.5.0
[ 3083.855] Clasa modul: Driver video X.Org
[ 3083.855] Clasa ABI: Driver video X.Org, versiunea 24.0
[ 3083.855] (II) LoadModule: "vesa"
[ 3083.855] (II) Se încarcă /usr/lib/xorg/modules/drivers/vesa_drv.so
[ 3083.856] (II) Modulul vesa: vendor="X.Org Foundation"
[ 3083.856] compilat pentru 1.20.4, versiunea modulului = 2.4.0
[ 3083.856] Clasa modul: Driver video X.Org
[ 3083.856] Clasa ABI: Driver video X.Org, versiunea 24.0
[ 3083.856] (II) Driver NVIDIA dlloader X 470.82.01 miercuri 27 octombrie 21:23:16 UTC 2021
[ 3083.856] (II) Driver unificat NVIDIA pentru toate GPU-urile NVIDIA acceptate
[ 3083.856] (II) setare mod: Driver pentru setarea modului Drivere Kernel: kms
[ 3083.856] (II) FBDEV: driver pentru framebuffer: fbdev
[ 3083.856] (II) VESA: driver pentru chipset-uri VESA: vesa
[ 3083.856] (WW) xf86OpenConsole: setpgid a eșuat: operațiunea nu este permisă
[ 3083.856] (WW) xf86OpenConsole: setsid a eșuat: operațiunea nu este permisă
[ 3083.856] (WW) Revenirea la vechea metodă de sondă pentru setarea modului
[ 3083.856] (WW) Revenirea la vechea metodă de sondă pentru fbdev
[ 3083.856] (WW) Revenirea la vechea metodă de sondă pentru setarea modului
[ 3083.856] (WW) Revenirea la vechea metodă de sondă pentru fbdev
[ 3083.856] (EE) Niciun dispozitiv detectat.
[ 3083.856] (EE) 
Eroare fatală de server:
[ 3083.856] (EE) nu au fost găsite ecrane (EE) 
[ 3083.856] (EE) 
Vă rugăm să consultați suportul Fundației X.Org 
         la http://wiki.x.org
  • Dacă elimin xorg.conf, X pornește normal, dar fără două ecrane X (doar Ecranul 0), așa cum arată rezultatul xrandr:
~$ sudo xrandr -q
Ecran 0: minim 8 x 8, curent 4160 x 1440, maxim 16384 x 16384
VGA-0 primar deconectat (normal stânga inversată dreapta x axa y axa)
DVI-D-0 conectat 1600x1200+0+0 (normal stânga inversată dreapta x axa y axa) 367mm x 275mm
   1600x1200 60,00*+
   1280x1024 75,02 60,02  
   1152x864 75,00  
   1024x768 75,03 60,00  
   800x600 75,00 60,32  
   640x480 75,00 59,94  
HDMI-0 conectat 2560x1440+1600+0 (normal stânga inversată dreapta x axa y axa) 597 mm x 336 mm
   2560x1440 59,95*+
   2048x1152 60,00  
   1920x1440 60,00  
   1920x1200 59,88  
   1920x1080 60,00 59,94 50,00 60,05 60,00 50,04  
   1680x1050 59,95  
   1440x900 59,89  
   1440x576 50,00  
   1440x480 59,94  
   1280x1024 75,02 60,02  
   1280x720 60,00 59,94 50,00  
   1024x768 75,03 70,07 60,00  
   800x600 75,00 72,19 60,32 56,25  
   720x576 50,00  
   720x480 59,94  
   640x480 75,00 72,81 59,94 59,93 

Primele încercări

  • Mi-am făcut xorg.conf bazat pe acest lucru: https://download.nvidia.com/XFree86/Linux-x86_64/304.137/README/configmultxscreens.html
  • Bănuiesc că mai am nevoie de ceva în secțiunea de monitoare xorg.conf, dar nu sunt sigur ce este.
  • Simt că monitoarele ar trebui să facă referire la Ecran definiții într-un fel, dar presupunerile mele aleatorii despre cum să fac asta au fost zadarnic.
  • Îmi este greu să adaptez xorg.conf exemple pe care le-am găsit la circumstanțele mele specifice. Nu știu ce este obligatoriu pe baza hardware-ului sau a distribuției/versiunii mele.
  • /etc/X11/xorg.conf:
Secțiunea „Dispozitiv”
    Identificator „nvidia0”
    Driver „nvidia”
    BusID „PCI:44:00:0”
    Ecranul 0
EndSection

Secțiunea „Dispozitiv”
    Identificator „nvidia1”
    Driver „nvidia”
    BusID „PCI:44:0:0”
    Ecranul 1
EndSection


Secțiunea „Ecran”
    Identificator „Ecran0”
    Dispozitiv „nvidia0”
    Monitorizați „Monitor0”
    Adâncime implicită 24
    Subsecțiunea „Afișare”
        Adâncime 24
        Moduri „1600x1200” „1024x768” „800x600” „640x480”
    EndSubsection
EndSection

Secțiunea „Ecran”
    Identificator „Ecran1”
    Dispozitiv „nvidia1”
    Monitorizați „Monitor1”
    Adâncime implicită 24
    Subsecțiunea „Afișare”
        Adâncime 24
        Moduri „1600x1200” „1024x768” „800x600” „640x480”
    EndSubsection
EndSection

Secțiunea „Monitor”
        Identificator „Monitor0”
EndSection

Secțiunea „Monitor”
        Identificator „Monitor1”
        Opțiunea „LeftOf” „HDMI-1”
EndSection

Secțiunea „ServerLayout”
    Identificator „Aspect principal”
    Ecran 0 „Ecran0”
    Ecranul 1 „Ecran1” din stânga „Ecran0”
EndSection

Actualizare - succes parțial:

  • Reconfigurat xorg.conf folosind nvidia-xconfig.
  • Acum pot începe X
  • Nicio bucurie în ceea ce privește obținerea efectivă a unui X Screen pentru fiecare monitor.
  • Actualul meu xorg.conf:
# nvidia-xconfig: fișier de configurare X generat de nvidia-xconfig
# nvidia-xconfig: versiunea 470.82.01


Secțiunea „ServerLayout”
    Identificator „Layout0”
    Ecran 0 „Ecran0” 0 0
    InputDevice „Keyboard0” „CoreKeyboard”
    Dispozitiv de intrare „Mouse0” „CorePointer”
EndSection

Secțiunea „Fișiere”
EndSection

Secțiunea „InputDevice”

    # generat din implicit
    Identificator „Mouse0”
    „Șoarece” șofer
    Opțiunea „Protocol” „auto”
    Opțiunea „Dispozitiv” „/dev/psaux”
    Opțiunea „Emulate3Buttons” „nu”
    Opțiunea „ZAxisMapping” „4 5”
EndSection

Secțiunea „InputDevice”

    # generat din implicit
    Identificator „Keyboard0”
    Driver „kbd”
EndSection

Secțiunea „Monitor”
    Identificator „Monitor0”
    Nume furnizor „Necunoscut”
    Nume model „Necunoscut”
    Opțiunea „DPMS”
EndSection

Secțiunea „Dispozitiv”
    Identificator „Dispozitiv0”
    Driver „nvidia”
    Ecranul 0
    Nume furnizor „NVIDIA Corporation”
    Opțiunea „Monitor-DVI-D-0” „DVI”
EndSection

Secțiunea „Ecran”
    Identificator „Ecran0”
    Dispozitiv „Dispozitiv0”
    Monitorizați „Monitor0”
    Adâncime implicită 24
    Subsecțiunea „Afișare”
        Adâncime 24
    EndSubSection
EndSection

Secțiunea „Monitor”
    Identificator „Monitor1”
    Nume furnizor „Necunoscut”
    Nume model „Necunoscut”
    Opțiunea „DPMS”
EndSection

Secțiunea „Dispozitiv”
    Identificator „Dispozitiv1”
    Driver „nvidia”
    Ecranul 1
    Nume furnizor „NVIDIA Corporation”
    Opțiunea „Monitor-HDMI-0” „HDMI”
EndSection

Secțiunea „Ecran”
    Identificator „Ecran1”
    Dispozitiv „Dispozitiv1”
    Monitorizați „Monitor1”
    Adâncime implicită 24
    Subsecțiunea „Afișare”
    Adâncime 24
    EndSubSection
EndSection


  • Dar xrandr încă arată doar Ecran0
~$ sudo xrandr -q
Ecran 0: minim 8 x 8, curent 4160 x 1440, maxim 16384 x 16384
VGA-0 primar deconectat (normal stânga inversată dreapta x axa y axa)
DVI-D-0 conectat 1600x1200+0+0 (normal stânga inversată dreapta x axa y axa) 367mm x 275mm
   1600x1200 60,00*+
   1280x1024 75,02 60,02  
   1152x864 75,00  
   1024x768 75,03 60,00  
   800x600 75,00 60,32  
   640x480 75,00 59,94  
HDMI-0 conectat 2560x1440+1600+0 (normal stânga inversată dreapta x axa y axa) 597 mm x 336 mm
   2560x1440 59,95*+
   2048x1152 60,00  
   1920x1440 60,00  
   1920x1200 59,88  
   1920x1080 60,00 59,94 50,00 60,05 60,00 50,04  
   1680x1050 59,95  
   1440x900 59,89  
   1440x576 50,00  
   1440x480 59,94  
   1280x1024 75,02 60,02  
   1280x720 60,00 59,94 50,00  
   1024x768 75,03 70,07 60,00  
   800x600 75,00 72,19 60,32 56,25  
   720x576 50,00  
   720x480 59,94  
   640x480 75,00 72,81 59,94 59,93  

Editare: O notă suplimentară: am încercat să furnizez ID-urile PCI în secțiunea „Dispozitiv”, cum ar fi BusID „PCI:44:0:0”. Aceasta pare să fie de fapt cauza problemei mele anterioare cu X care nu începe cu:

[ 229.284] (WW) xf86OpenConsole: setpgid a eșuat: operațiunea nu este permisă
[ 229.284] (WW) xf86OpenConsole: setsid eșuat: operațiunea nu este permisă

Inca o actualizare

Am scos PCI-ul BusID specificația din Dispozitiv sectiune de xorg.conf, deoarece din anumite motive m-a împiedicat să încep X cu xf86OpenConsole erorile mentionate mai sus. Cu toate acestea, am observat că documentația mai recentă a Nvidias sugerează utilizarea unui ServerLayout secțiune. Am adăugat al doilea ecran la această secțiune și a schimbat rezultatul xrandr, dar nu așa cum mi-am dorit. Încă menționează doar Screen0, dar acum nu există informații despre monitorul meu HDMI (deși am un cursor pe el). Aceasta este acum rezultatul xrandr:

~$ sudo xrandr -q
Ecran 0: minim 8 x 8, curent 1600 x 1200, maxim 16384 x 16384
VGA-0 primar deconectat (normal stânga inversată dreapta x axa y axa)
DVI-D-0 conectat 1600x1200+0+0 (normal stânga inversată dreapta x axa y axa) 367mm x 275mm
   1600x1200 60,00*+
   1280x1024 75,02 60,02  
   1152x864 75,00  
   1024x768 75,03 60,00  
   800x600 75,00 60,32  
   640x480 75,00 59,94  

Si al meu xorg.conf in prezent arata asa:

Secțiunea „ServerLayout”
    Identificator „Layout0”
    Ecran 0 „Ecran0” 0 0
    Ecran 1 „Ecran1” dreapta „Ecran0” 
    InputDevice „Keyboard0” „CoreKeyboard”
    Dispozitiv de intrare „Mouse0” „CorePointer”
EndSection

Secțiunea „Fișiere”
EndSection

Secțiunea „InputDevice”

    # generat din implicit
    Identificator „Mouse0”
    „Șoarece” șofer
    Opțiunea „Protocol” „auto”
    Opțiunea „Dispozitiv” „/dev/psaux”
    Opțiunea „Emulate3Buttons” „nu”
    Opțiunea „ZAxisMapping” „4 5”
EndSection

Secțiunea „InputDevice”

    # generat din implicit
    Identificator „Keyboard0”
    Driver „kbd”
EndSection

Secțiunea „Monitor”
    Identificator „Monitor0”
    Nume furnizor „Necunoscut”
    Nume model „Necunoscut”
    Opțiunea „DPMS” „DVI”
EndSection

Secțiunea „Dispozitiv”
    Identificator „Dispozitiv0”
    Driver „nvidia”
    Ecranul 0
    Nume furnizor „NVIDIA Corporation”
    Opțiunea „Monitor-DVI-D-0” „DVI”
EndSection

Secțiunea „Ecran”
    Identificator „Ecran0”
    Dispozitiv „Dispozitiv0”
    Monitorizați „Monitor0”
    Adâncime implicită 24
    Subsecțiunea „Afișare”
        Adâncime 24
    EndSubSection
EndSection

Secțiunea „Monitor”
    Identificator „Monitor1”
    Nume furnizor „Necunoscut”
    Nume model „Necunoscut”
    Opțiunea „DPMS” „HDMI”
EndSection

Secțiunea „Dispozitiv”
    Identificator „Dispozitiv1”
    Driver „nvidia”
    Ecranul 1
    Nume furnizor „NVIDIA Corporation”
    Opțiunea „Monitor-HDMI-0” „HDMI”
EndSection

Secțiunea „Ecran”
    Identificator „Ecran1”
    Dispozitiv „Dispozitiv1”
    Monitorizați „Monitor1”
    Adâncime implicită 24
    Subsecțiunea „Afișare”
    Adâncime 24
    EndSubSection
EndSection

Edit: Încă un lucru: am încercat să adaug Opțiunea „ZaphodHeads” la secțiunile mele Dispozitiv, dar asta nu a ajutat. Poate că nu este ceea ce mi-am dorit, sau poate nu l-am configurat corect, nu știu.

WinEunuuchs2Unix avatar
drapel in
Într-adevăr, setările pot fi confuze. Întotdeauna fac o mulțime de copii ale configurației în timp ce o schimb. Ceva ce puteți încerca este să rulați utilitarul `nvidia-settings` și să-l puneți să genereze fișierul de configurare pentru dvs.
Stonecraft avatar
drapel cn
@WinEunuuchs2Unix, dar `nvidia-settings` are o listă cu adevărat odioasă de dependențe.
WinEunuuchs2Unix avatar
drapel in
Poate că porțiunea de generare a configurației vine într-o versiune de sine stătătoare sau de linie de comandă cu mai puține dependențe. Arch Linux are de obicei resurse bune: https://wiki.archlinux.org/title/NVIDIA
Stonecraft avatar
drapel cn
O, frumos, văd că `nvidia-xconfig` este un lucru. Cel puțin asta mi-a oferit un șablon de lucru, deși simpla adăugare a celei de-a doua secțiuni Ecran, Dispozitiv și Monitor nu a ajutat, dar asta măcar îmi oferă ceva cu care să lucrez.
drapel cn
Rețineți că documentația pe care o urmăriți vorbește despre o funcție „nouă” numită „TwinView”, iar rezoluțiile de afișare de exemplu sunt în format 4:3. Acest document este mai vechi decât Xrandr.
Stonecraft avatar
drapel cn
@SimonRichter Mulțumesc, am observat asta, dar nu cred că TwinView este ceea ce vreau. De asemenea, există un document mai recent care este în esență același: https://nvidia.custhelp.com/app/answers/detail/a_id/176/~/linux---configuring-multiple-x-screens-on-one -card

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.