web-dev-qa-db-fra.com

LXC USB Device Passsthrough

J'essaie de créer un conteneur LXC exécutant mythtv (serveur) ... qui nécessite un accès aux tuners USB

Il semble y avoir un manque d'informations sur la manière de passer des périphériques USB à un conteneur LXC.

Cet article traite de la nécessité de définir les groupes de contrôle de manière appropriée https://unix.stackexchange.com/questions/137931/usb-passthrough-for-lxc-containers

L'hôte est Ubuntu 14.04 (Trusty), qui exécute avec succès d'autres conteneurs LXC non privilégiés, accessibles via X2Go et directement vers X11 (un de chaque type fonctionne "en permanence" et fonctionne correctement). La configuration de base a (seulement) été modifiée pour placer le stockage de conteneur dans un emplacement personnalisé (partition LVM dédiée).

Le conteneur en question est (a) privilégié (b) sous Ubuntu Trusty AMD64 (c) a des groupes de contrôle définis dans le fichier de configuration "lxc.cgroup.devices.allow = c 189: * rwm", ce qui semble approprié étant donné que la majeure/mineure Les identifiants des périphériques USB en question sont identifiés avec "ls -la/dev/bus/usb/003 /"

Apparmor ne semble pas être le problème principal (bien que je puisse me tromper). J'ai essayé de définir "lxc.aa_profile = unconfined", ce qui n'a pas semblé aider. J'ai également créé un profil Apparmor personnalisé qui a entraîné une série d'erreurs de groupe de travail. Je suis perplexe et je ne sais même pas par où commencer. Des recherches Google donnent lieu à des discussions sur le relais USB basé sur Libvirt et sur un correctif pour le passage LXC USB, mais pas d'instructions pour les situations autres que Libvirt.

Quelqu'un pourrait-il s'il vous plaît conseiller comment procéder à ce sujet.

Merci

5
redger

Fondamentalement, la réponse est que -

  1. Vous devez lier, par exemple, les périphériques hôtes auxquels vous souhaitez accéder.

    mount --bind /dev/dvb /path_to_your_container/rootfs/dev/dvb

.... n'oubliez pas de créer d'abord le répertoire cible

  1. Assurez-vous que vous utilisez un conteneur privilégié ou que vous avez accordé à l'hôte owner d'un conteneur non privilégié l'accès au (x) périphérique (s) que vous avez monté ci-dessus.
  2. Ajoutez l'entrée de groupe de discussion appropriée dans votre fichier de configuration de conteneur (ou /etc/lxc/lx.conf pour tous les conteneurs privilégiés). lxc.cgroup.devices.allow = c xxx:* rwmxxx = la partie "majeure" de la majeure: id mineur trouvé en utilisant ls -la /dev/dvb dire ..... 212 pour DVB ou 189 pour USB (sur mon système), donc pour mon cas, l'accès DVB est accordé via lxc.cgroup.devices.allow = c 212:* rwm

Les modifications apportées par Apparmor sont superflues. Les entrées bind et cgroup suffisaient pour permettre l'accès des conteneurs aux périphériques DVB par le conteneur (ce sont des périphériques USB MAIS il n'était pas nécessaire d'activer également l'accès aux périphériques "USB" ... uniquement les périphériques DVB. dans/dev/dvb)

3
redger