Поскольку LXC (Linux Containers) является супер-chroot уровня ядра, мне было интересно, какой тип видеодрайвера имеют контейнеры:
Мой хост - Ubuntu 12.04 64-битный компьютер с графическим процессором ATI. Будет ли контейнер LXC иметь доступ к тому же драйверу? Или они должны быть установлены на каждом контейнере?
Технологии виртуализации на основе контейнеров, такие как OpenVZ и LXC, не виртуализируют никакое оборудование, в отличие от Xen, KVM, VMware и т. Д. Еще одно важное отличие заключается в том, что контейнеры LXC / OpenVZ работают в одном и том же экземпляре одного Linux ядро, в то время как реальные виртуальные машины работают с собственным ядром.
Поскольку контейнеры находятся внутри одного и того же ядра и не управляют каким-либо оборудованием, они «работают» с одним и тем же драйвером, но у них нет никакого знания об этом. Все процессы просто хромируются, и это полностью не зависит от аппаратных драйверов (модулей ядра).
Пожалуйста, взгляните на этот скрипт, чтобы создать контейнер LXC, который запускает пар с ускорением звука и видео:
http://bazaar.launchpad.net/~ubuntu-lxc/lxc / steam-lxc / view / head: / steam-lxc
Волшебство приходит сюда:
# 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))
Мы экспортируем X11 с bind mount каталог /tmp/.X11-unix
, чтобы позволить контейнеру использовать хост X11. Сделайте то же самое с каталогом /dev/dri
и аудиоразъемом.
# 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})
Использует pactl
для использования сокета Unix для связи с хост-сервером импульсного аудио-сервера, а затем экспортирует сокет и переменную среды DISPLAY
, чтобы позволить steam использовать локальный сервер X11. и сокет для аудио сервера.
Взгляните на сценарий и наслаждайтесь им:)
С этими переменными среды внутри LXC вы можете (теоретически) играть практически во все игры.
С наилучшими пожеланиями!
Насколько мне известно, контейнеры lxc будут иметь доступ к водителю. проверьте этот сайт для получения дополнительной информации http://libvirt.org/drvlxc.html