Puisque LXC (Conteneurs Linux) est un super chroot au niveau du noyau, je me demande quel type de pilote vidéo les conteneurs ont:
Mon hôte est buntu 12.04 Machine 64 bits avec ATI GPU. Le conteneur LXC aura-t-il accès au même pilote? Ou doivent-ils être installés sur chaque conteneur?
Lisez ce script pour créer un conteneur LXC qui exécute Steam avec une accélération du son et de la vidéo:
http://Bazaar.launchpad.net/~ubuntu-lxc/lxc/Steam-lxc/view/head:/Steam-lxc
La magie vient ici:
# Add the bind mounts to the container's fstab
self.container.set_config_item("lxc.mount.entry",
"/tmp/.X11-unix tmp/.X11-unix "
"none bind,ro")
self.container.set_config_item("lxc.mount.entry",
"/dev/dri dev/dri none bind,ro")
self.container.set_config_item("lxc.mount.entry",
"%s/Pulse.socket home/%s/.Pulse_socket "
"none bind,ro" % (self.config_path,
self.user.pw_name))
Nous exportons X11 avec une liaison. Montez le répertoire /tmp/.X11-unix
afin d'autoriser le conteneur à utiliser l'hôte X11. Faites de même avec le répertoire /dev/dri
et la prise audio.
# Get pulseaudio to listen on the socket
with self.user_privileges():
subprocess.call(['pactl', 'load-module',
'module-native-protocol-unix',
'socket=%s' % self.Pulse_socket,
'auth-cookie-enabled=0'])
# Start Steam
self.run_command(
["Steam"], {'DISPLAY': os.environ['DISPLAY'],
'Pulse_SERVER': "/home/%s/.Pulse_socket" %
self.user.pw_name})
Utilise pactl
pour utiliser un socket Unix afin de communiquer avec le serveur audio Host Pulse, puis pour exporter le socket et la variable d'environnement DISPLAY
afin de permettre à Steam d'utiliser un serveur X11 local et un socket vers un serveur audio.
Jetez un coup d'œil au script et profitez-en :)
Avec ces variables d'environnement dans LXC, vous pouvez jouer (théoriquement) à presque tous les jeux.
Meilleures salutations!
Les technologies de "virtualisation" basées sur les conteneurs telles que OpenVZ et LXC ne virtualisent aucun matériel, contrairement à Xen, KVM, VMware, etc. Une autre différence majeure est que les conteneurs LXC/OpenVZ s'exécutent dans la même instance d'un seul noyau Linux, les vraies machines virtuelles utilisent leur propre noyau.
Comme les conteneurs se trouvent dans le même noyau et ne gèrent aucun matériel, ils "exécutent" le même pilote, mais ils n'ont aucune connaissance à ce sujet. Tous les processus sont simplement chrootés et ceci est complètement indépendant des pilotes matériels (modules du noyau).