Traspaso de dispositivos en lxc

Al igual que acontece con otras opciones de virtualización, en lxc podemos realizar una oeración de device passthrough. Esto es, trasladar un dispositivo a un contenedor de manera uqe sea gestionado en forma transparente por este, en lugar de por el anfitrión.

Como ejemplo de cómo realizar una configuración de este tipo tenemos un contenedor de nombre legacy al que se desea traspasar el dispositivo /dev/ttyS1.

    1. Conectados al anfitrión, tomamos los parámetros type, major y minor que identifican unívocamente al dispositivo:
      # ls -la /dev/ttyS1
      crw------- 1 root root 4, 65 Jun 25 10:48 /dev/ttyS1
      

      En este caso, el type es c (dispositivo tipo caracter), el major es 4 y el minor es 65.

    2. Editamos el fichero config del contenedor agregando una línea con:
      lxc.cgroup.devices.allow = c 4:65 rwm
      

      Eventualmente, podemos transferir todos los dispositivos que existan bajo un mismo major reemplazando el valor de minor por un asterisco:

      lxc.cgroup.devices.allow = c 4:* rwm
      
    3. Por más que hemos transferido el dispositivo, el contenedor no tendrá constancia de su existencia hasta que se cree el device node dentro del propio contenedor.Tenemos que realizar la operación de creación del device node con cada inicio del contenedor, para lo cual podríamos por ejemplo crear un script de arranque con los comandos respectivos.La creación del device node se reduce a ejecutar mknod con los parámetros del dispositivo, como se muestra a continuación:
      # lxc-attach -n legacy
      root@legacy:~# mknod /dev/ttyS1 c 4 65
      root@legacy:~# ls -la /dev/ttyS1
      crw-r--r-- 1 root root 4, 65 Jun 25 09:03 /dev/ttyS1
      root@legacy:~# setserial /dev/ttyS1
      /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
      

José Administrator
Sorry! The Author has not filled his profile.
follow me

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *