Ceder dispositivos a contenedores lxc (passthrough)
Enviado por miguelcarmona :: 13 de diciembre de 2014

Para compartir un dispositivo con un contenedor lxc (una tarjeta de tv dvb por ejemplo), haremos:
ls -lh /dev/dvb/adapter0/
crw-rw----+ 1 root video 212, 0 dic 13 17:00 demux0
crw-rw----+ 1 root video 212, 1 dic 13 17:00 dvr0
crw-rw----+ 1 root video 212, 3 dic 13 17:00 frontend0
crw-rw----+ 1 root video 212, 2 dic 13 17:00 net0
Ya tenemos identificador necesario para dicho dispositivo (212 en este caso).
Ahora, con la máquina contenedor en marcha, vamos a indicar desde el host principal que comparta dichos nodos con el contenedor:
lxc-device -n nombre_contenedor add /dev/dvb/adapter0/
Por cada línea debería remitirnos:
Added '/dev/dvb/adapter0/demux0' to 'nombre_contenedor' as '/dev/dvb/adapter0/demux0'.
Added '/dev/dvb/adapter0/demux0' to 'nombre_contenedor' as '/dev/dvb/adapter0/dvr0'.
Added '/dev/dvb/adapter0/demux0' to 'nombre_contenedor' as '/dev/dvb/adapter0/frontend0'.
Added '/dev/dvb/adapter0/demux0' to 'nombre_contenedor' as '/dev/dvb/adapter0/net0'.
Esto nos ha permitido tanto ceder los recursos del dispositivo (temporalmente) como crear los nodos necesarios en el contenedor. Y digo temporalmente porque cuando reiniciemos el contenedor, perderemos dicha gestión.
Para que sea permanente y ya que con el paso anterior creamos los nodos para su montaje automático, debemos añadir al archivo de configuración del contenedor lo siguiente:
(Normalmente el archivo se encuentra en /var/lib/lxc/nombre_contenedor/config)
lxc.cgroup.devices.allow = c 212:* rwm
Recuerda que 212 es en nuestro caso de ejemplo; deberás especificar el tuyo en cuestión.
Con esto ya quedaría todo funcionando en posteriores reinicios.