Fast X per guest LXC su localhost?


12

Come posso eseguire app X in un contenitore LXC in modo efficiente?

ssh -Y guest

è troppo lento - non c'è accelerazione grafica con ssh -Y- tutto deve viaggiare attraverso la rete virtuale con il protocollo X11 tradizionale.

Essere in grado di copiare e incollare tra le app host e guest è desiderabile ma non essenziale. L'esecuzione di due server X, uno per l'host e uno per il guest, è (per i miei scopi) essenziale.

Non riesco a eseguire un Xorg nativo dall'interno dell'ospite perché si lamenta della /dev/tty0sua mancanza e non riesco a mknodquel dispositivo nell'ospite perché mi viene negata un'autorizzazione, anche quando lo faccio come root.

Risposte:


12

Potresti provare xpra o NX, VNC, ecc. Inoltre, dai un'occhiata a VirtualGL se vuoi l'accelerazione GL.

Se è possibile condividere una directory con l'host, è possibile utilizzare mmap con xpra (specificando il percorso del file mmap) che offre miglioramenti delle prestazioni molto significativi.


Qualcuno può condividere un esempio sicuro su come usare Xpra e Xephyr con LXC?
Baptx

3

NOTA : questo approccio è un po 'un hack. Inoltre non supporta il copia e incolla tra host e guest - ed è totalmente insicuro!

  1. Aggiungi /tmpcome file system aggiuntivo nella configurazione guest, che passa /tmpall'host.
  2. Assicurati che il tuo server X non sia configurato per accettare connessioni di rete di qualsiasi tipo, poiché il passaggio successivo disabilita la sicurezza X.
  3. Digita xhost +una finestra terminale.
  4. Avvia il guest LXC
  5. Accedi come utente ordinario desiderato all'interno del guest (ovvero non come root) e digita

DISPLAY=:0 Xephyr :2 -screen 1024x768 -dpi 96 &

DISPLAY=:2 /etc/X11/xinit/Xsession

all'interno del guest (sostituendo entrambi 2i messaggi con il numero dello schermo da utilizzare se lo si utilizza per connettersi a più macchine virtuali LXC.) Regolare i parametri di risoluzione ( -screen) e DPI ( -dpi) per adattarli.

Ciò consente di impostare connessioni "proxy" a un server X nidificato Xephyr in esecuzione nel guest (che utilizza sia socket di dominio UNIX e l'estensione MIT-SHM) e un'altra connessione da Xephyr al server X host (che utilizza socket di dominio UNIX , ma non posso, per quanto posso determinare, usare MIT-SHM, a causa del design di LXC). Questa sembra essere la configurazione più veloce possibile con un guest LXC, almeno con il driver open source per il mio hardware (NVIDIA).


Esiste un modo sicuro per usare Xephyr con LXC? L'isolamento X11 con Xephyr è supportato da Firejail, quindi immagino che possiamo farlo correttamente anche con LXC.
Baptx
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.