X rapide pour l'invité LXC sur localhost?

12

Comment puis-je exécuter efficacement des applications X dans un conteneur LXC?

ssh -Y guest

est trop lent - il n'y a pas d'accélération graphique avec ssh -Y- tout doit voyager sur le réseau virtuel avec le protocole X11 traditionnel.

Pouvoir copier-coller entre les applications hôtes et invitées est souhaitable mais pas essentiel. L'exécution de deux serveurs X, un pour l'hôte et un pour l'invité, est (pour moi) essentielle.

Je ne peux pas exécuter un Xorg natif à partir de l'invité, car il se plaint d' /dev/tty0être manquant, et je ne peux pas mknodce périphérique dans l'invité car j'obtiens une autorisation refusée, même lorsque je le fais en tant que root.

Robin Green
la source

Réponses:

12

Vous voudrez peut-être essayer xpra ou NX, VNC, etc. Jetez également un œil à VirtualGL si vous voulez une accélération GL.

Si vous pouvez partager un répertoire avec l'hôte, vous pouvez alors utiliser mmap avec xpra (en spécifiant le chemin d'accès au fichier mmap) qui offre des améliorations de performances très importantes.

totaam
la source
Quelqu'un peut-il partager un exemple sécurisé sur la façon d'utiliser Xpra et Xephyr avec LXC?
baptx
3

REMARQUE : cette approche est un peu un hack. Il ne prend pas non plus en charge le copier-coller entre l'hôte et l'invité - et est totalement peu sûr!

  1. Ajoutez en /tmptant que système de fichiers supplémentaire dans la configuration d'invité, qui passe /tmpsur l'hôte.
  2. Assurez-vous que votre serveur X n'est pas configuré pour accepter des connexions réseau de toute sorte, car l'étape suivante désactive la sécurité X.
  3. Tapez xhost +dans une fenêtre de terminal.
  4. Démarrer l'invité LXC
  5. Connectez-vous en tant qu'utilisateur ordinaire souhaité à l'intérieur de l'invité (c'est-à-dire pas en tant que root) et tapez

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

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

à l'intérieur de l'invité (en remplaçant les deux 2par le numéro de l'écran à utiliser si vous l'utilisez pour vous connecter à plusieurs machines virtuelles LXC.) Ajustez les paramètres de résolution ( -screen) et DPI ( -dpi) en fonction.

Cela permet de configurer des connexions "proxy" à un serveur X imbriqué Xephyr exécuté sur l'invité (qui utilise à la fois les sockets de domaine UNIX et l'extension MIT-SHM) et une autre connexion de Xephyr à votre serveur X hôte (qui utilise des sockets de domaine UNIX , mais ne peut pas, pour autant que je sache, utiliser MIT-SHM, en raison de la conception de LXC). Cela semble être la configuration la plus rapide possible avec un invité LXC, au moins avec le pilote open source pour mon matériel (nvidia).

Robin Green
la source
Existe-t-il un moyen sécurisé d'utiliser Xephyr avec LXC? L'isolement X11 avec Xephyr est supporté par Firejail donc je suppose que nous pouvons le faire correctement avec LXC aussi.
baptx