Aceasta este prima mea încercare de a face mai multe monitoare să funcționeze cu un VM. Încă nu am avut succes.
Lucrez la o mașină gazdă Linux Mint 20.2, care are Ubuntu 20.04 ca bază. Kernel 5.4.0-100-generic.
Folosesc virt-manager (2.2.1) și am reușit să creez și să rulez cu succes mașini invitate PopOS, Mint (20.3) și Arch Linux (2022.02.01). Nu pot face ca niciunul dintre ei să afișeze mai multe monitoare.
O proporție semnificativă a problemelor din jurul acestui lucru ajung să mă îndrepte spre asta demonstrație pe youtube. Metoda de bază descrisă aici nu funcționează pentru mine.
XML-ul secțiunii mele Display Spice citește:
<graphics type="spice" autoport="yes">
<listen type="address"/>
<image compression="off"/>
</graphics>
Am setat numărul de capete din secțiunea Video QXL la 2, 3 sau 4.
<video>
<model type="qxl" ram="65536" vram="65536" vgamem="16384" heads="2" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
</video>
Accesarea mașinii care rulează folosind virt-viewer sau remote-viewer are succes, dar este disponibil un singur afișaj. Pentru valorile capete >=2, sunt prezente intrările de afișare corespunzătoare din meniu, dar sunt lacome și inaccesibile. În cadrul mașinii virtuale (orice aromă) xrandr îmi oferă:
Screen0: minim 320x200, curent 1024x768, maxim 8192x8192
Virtual-1 conectat primar 1024x768+0+0 0mm x 0mm
1024x768 60,00*+
{...linii multiple}
Virtual-2 deconectat
Virtual-3 deconectat
La fel de cel mai bine pot spune, aceasta este modalitatea recomandată de a face acest lucru pentru oaspeții Linux, suportând teoretic până la 4 ecrane. Pentru divertisment, am încercat să adaug dispozitive qxl suplimentare, așa cum este recomandat pentru oaspeții Windows, ceea ce deschide într-adevăr ecrane suplimentare, dintre care niciunul nu primește semnal de la oaspete (perpetuu „în așteptare pentru afișarea 2”)
Am crescut cerințele de memorie așa cum este descris în mirodenii-spațiu pentru a putea face față cu patru monitoare, fără nicio modificare a rezultatelor.
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='2' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
Nu-mi amintesc cum am ajuns acolo, dar această pagină menționează monitoare de cartografiere în fișierul de configurare virt-viewer. Pot mapa monitoare:
[a2459703-ffc5-45a1-849e-b21c67186aa6]
monitor-mapping=1:2;2:3
Apoi folosind
virt-viewer --full-screen vm1
În mod ciudat, deschide o singură fereastră pe al doilea și al treilea monitor, mai degrabă decât o fereastră de afișare pentru fiecare monitor, ceea ce mă așteptam. Poate că am omis ceva sau am înțeles complet greșit cum ar trebui să funcționeze.
M-am gândit că poate fi din cauza unei versiuni vechi de virt-manager/virt-viewer.Am reușit să pun virt-manager 3.2.0 să ruleze după descărcarea de pe virt-manager repo, fără niciun efect.
Cea mai recentă versiune disponibilă de virt-viewer în repozițiile Mint pare să fie 7.0,
actualizare sudo apt
sudo apt install virt-manager
rezultă numai în versiunea 7.0. Versiunea 11 pare să fie disponibilă în virt-viewer repo, dar nu pot pentru toată viața să-mi dau seama cum să instalez asta fără instrucțiuni de instalare identificabile - toate instrucțiunile pe care le pot găsi mă referă la utilizarea apt pentru a-l instala.
Cel mai aproape de a găsi un mesaj de eroare este atunci când rulez virt-viewer cu indicatorul de depanare:
virt-viewer:23920): virt-viewer-DEBUG: 14:32:11.467: se conectează...
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:11.467: Deschiderea conexiunii la libvirt cu URI <null>
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:11.469: conectare inițială
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:11.469: notebook arată starea 0x555ddc8a82b0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.326: virt_viewer_app_set_uuid_string: UUID schimbat în a2459703-ffc5-45a1-849e-b21c67186aa6
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.326: notebook arată starea 0x555ddc8a82b0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.327: Guest vm1 rulează, determinând afișarea
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.328: Setați informațiile de conectare: (null),(null),-1,-1,(null),(null),(null), 0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.330: Guest vm1 are un afișaj de condimente
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.363: adresa grafică a invitaților este 127.0.0.1:5900
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.364: Setați informațiile de conectare: localhost,127.0.0.1,5900,-1,(null),(null),(null),-1
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.364: Operațiune de eroare interzisă: accesul numai pentru citire împiedică virDomainOpenGraphicsFD
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.364: După deschiderea conexiunii, apel invers fd=-1
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.364: Deschiderea conexiunii directe TCP pentru afișare la 127.0.0.1:5900:-1
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.370: nou canal de condimente 0x555ddc97a200 SpiceMainChannel 0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.370: notebook arată starea 0x555ddc8a82b0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.371: reconnect_poll: 0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.482: canal principal: deschis
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.482: notebook afișează starea 0x555ddc8a82b0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.483: aplicația nu este pe ecran complet
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.483: aplicația nu este pe ecran complet
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.483: nou canal de condimente 0x555ddc950890 SpiceUsbredirChannel 1
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.483: nou canal usbredir
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.483: nou canal de condimente 0x555ddc941090 SpiceUsbredirChannel 0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.483: nou canal usbredir
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.483: Nou canal de condimente 0x555ddc95aa70 SpiceRecordChannel 0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.483: nou canal de condimente 0x555ddc941b30 SpicePlaybackChannel 0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.483: canal audio nou
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.509: Nou canal de condimente 0x555ddc933960 SpiceDisplayChannel 0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.509: Nou canal de condimente 0x555ddcc0d990 SpiceCursorChannel 0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.512: nou canal de condimente 0x555ddcc0cdc0 SpiceInputsChannel 0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.512: canal de intrări noi
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.661: crearea afișajului de condimente (#:0)
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.661: Inserați afișajul 0 0x555ddc8c6f20
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.709: crearea afișajului de condimente (#:1)
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.709: Inserați afișajul 1 0x555ddc8c6d70
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.709: S-a găsit o fereastră fără afișaj, reutilizand pentru afișajul #0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.710: notebook afișează afișaj 0x555ddc8a82b0
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.713: Alocat 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.713: Child alocă 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.736: alocat 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:13.736: Child alocă 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:24.945: Alocat 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:24.946: Child alocă 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:24.964: Alocat 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:24.964: Child alocă 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:25.055: Alocat 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:25.056: Child alocă 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:25.587: Alocat 1024x768
(virt-viewer:23920): virt-viewer-DEBUG: 14:32:25.587: Child alocă 1024x768
„Operațiunea de eroare interzisă: accesul numai în citire împiedică virDomainOpenGraphicsFD” m-a condus la discuții despre încercarea de a utiliza virt-viewer ca un alt utilizator cu permisiuni non-root. Doar pentru a verifica, apoi am rulat virt-manager și virt-viewer ca același utilizator care se află în grupul sudo. Din nou, nicio schimbare.
Orice indicații cu privire la unde ar trebui să mă uit în continuare sau ce ar putea fi util pentru a depana acest lucru ar fi apreciat.