Driver de vídeo sob contêiner lxc?

3

Como o LXC (Linux Containers) é um super-chroot no nível do kernel, fiquei imaginando que tipo de driver de vídeo os contêineres têm:

Meu host é uma máquina de 64 bits do Ubuntu 12.04 com o ATI gpu. O contêiner LXC terá acesso ao mesmo driver? Ou eles precisam ser instalados em cada contêiner?

    
por lurscher 03.12.2012 / 23:54

3 respostas

3

Por favor, dê uma olhada neste script para criar um contêiner LXC que execute vapor com aceleração de som e vídeo:

link

A mágica vem aqui:

Fora do 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))

Exportamos o X11 com uma montagem de ligação no diretório /tmp/.X11-unix para permitir que o contêiner use o host X11. Faça o mesmo com o diretório /dev/dri e o soquete de áudio.

Dentro do 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})

Usa pactl para usar um soquete unix para se comunicar com o servidor de áudio de pulso do host e exportar posteriormente o soquete e a variável de ambiente DISPLAY para permitir que o vapor use servidor X11 local e soquete para o servidor de áudio.

Dê uma olhada no roteiro e divirta-se:)

Com essas variáveis de ambiente dentro do LXC você pode jogar (teoricamente) quase todos os jogos.

Atenciosamente!

    
por OscarGarcia 13.05.2015 / 21:50
0

Tecnologias de 'virtualização' baseadas em contêineres como OpenVZ e LXC não virtualizam nenhum hardware, ao contrário do Xen, KVM, VMware, etc. Outra grande diferença é que os contêineres LXC / OpenVZ estão sendo executados na mesma instância de um único Linux. kernel, enquanto máquinas virtuais reais estão executando seu próprio kernel.

Como os containers estão dentro do mesmo kernel e não gerenciam nenhum hardware, eles estão 'executando' o mesmo driver, mas eles não têm nenhum conhecimento sobre isso. Todos os processos são simplesmente chroot'ed e isso é completamente independente dos drivers de hardware (módulos do kernel).

    
por gertvdijk 14.12.2012 / 09:32
-1

Pelo que sei, os contêineres lxc terão acesso ao driver. confira este site para mais informações link

    
por chad 09.12.2012 / 18:25