lxc 容器下的视频驱动程序?

lxc 容器下的视频驱动程序?

自从龙芯(Linux 容器)是内核级的超级 chroot,我一直想知道容器有什么样的视频驱动程序:

我的主人是Ubuntu 12.04带有 ATI gpu 的 64 位机器。LXC 容器是否可以访问相同的驱动程序?还是需要在每个容器上安装它们?

答案1

请查看此脚本来创建一个运行具有声音和视频加速功能的 Steam 的 LXC 容器:

http://bazaar.launchpad.net/~ubuntu-lxc/lxc/steam-lxc/view/head:/steam-lxc

魔法就在这里:

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 /tmp/.X11-unix,以允许容器使用主机 X11。对/dev/dri目录和音频套接字执行相同操作。

LXC 内部:

    # 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})

使用pactlunix 套接字与主机脉冲音频服务器通信,然后导出套接字和DISPLAY环境变量以允许 steam 使用本地 X11 服务器和套接字到音频服务器。

看一下脚本并享受它:)

利用 LXC 内部的环境变量,您(理论上)可以玩几乎所有的游戏。

此致!

答案2

与 Xen、KVM、VMware 等不同,基于容器的“虚拟化”技术(例如 OpenVZ 和 LXC)不会虚拟化任何硬件。另一个主要区别是 LXC/OpenVZ 容器在单个 Linux 内核的同一个实例中运行,而真实的虚拟机则运行自己的内核。

由于容器位于同一个内核中,不管理任何硬件,因此它们“运行”同一个驱动程序,但它们对此一无所知。所有进程都只是 chroot 的,这完全独立于硬件驱动程序(内核模块)。

答案3

据我所知,lxc 容器将可以访问驱动程序。请访问此网站了解更多信息 http://libvirt.org/drvlxc.html

相关内容