Voici un article express pour rajouter une carte son dans un conteneur LXC, plus un aide-mémoire en fait, car c'est pas le genre de chose que je fais tous les 4 matins.
- Brancher la carte son à la machine hôte. Dans mon cas une carte USB, si c'est en PCI, la procédure n'a que peu d'intérêt puisqu'il faudra dans tout les cas redémarrer.
le kernel doit la détecter et créer des fichiers spéciaux de type caractère dans
/dev/snd
:# ls -l /dev/snd/ total 0 drwxr-xr-x 2 root root 60 Jan 21 19:44 by-id drwxr-xr-x 2 root root 60 Jan 21 19:44 by-path crw-rw---T 1 root audio 116, 4 Jan 21 19:44 controlC0 crw-rw---T 1 root audio 116, 3 Jan 21 19:44 pcmC0D0c crw-rw---T 1 root audio 116, 2 Jan 21 19:44 pcmC0D0p crw------T 1 root root 116, 1 Dec 17 09:24 seq crw-rw---T 1 root audio 116, 33 Dec 17 09:24 timer
Notez le numéro majeur et mineur de chaque pseudo fichier (dans mon cas 116 et de 1 à 4 et 33).
Ajoutez les autorisations nécessaires dans votre conf LXC pour le conteneur en question :
# /dev/snd/* lxc.cgroup.devices.allow = c 116:4 rwm lxc.cgroup.devices.allow = c 116:3 rwm lxc.cgroup.devices.allow = c 116:2 rwm lxc.cgroup.devices.allow = c 116:1 rwm lxc.cgroup.devices.allow = c 116:33 rwm
Adaptez bien sûr avec les bons numéro majeurs et mineurs.
À ce stade, il faut redémarrer le conteneur pour que les nouveaux cgroups s'appliquent. Comme j'avais pas envie de faire ça et que les cgroups cesttropbien, On va appliquer les nouvelles règles à chaud via son pseudo système de fichier :
# cat >/sys/fs/cgroup/lxc/<nom du conteneur>/devices.allow c 116:4 rwm c 116:3 rwm c 116:2 rwm c 116:1 rwm c 116:33 rwm ^D
Maintenant, on peut créer manuellement les pseudo fichiers dans le conteneur :
# mkdir /dev/snd; cd /dev/snd # mknod controlC0 c 116 4 # mknod pcmC0D0c c 116 3 # mknod pcmC0D0p c 116 2 # mknod seq c 116 1 # mknod timer c 116 33 # chgrp audio controlC0 pcm* timer # chmod 1660 controlC0 pcm* timer # chmod 600 seq
Et ajoutez vous dans le groupe audio si besoin.
Installer alsa-utils puis :
$ alsactl init
Votre carte devrait à présent être détectée, vous pouvez vérifier que tout fonctionne avec un
speaker-test
.
Et voila.
Bon c'est pas tout ça, allons mettre à jour le kernel et rebooter :-).