Ajout d'une carte son à chaud dans un conteneur LXC
Published on
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 :-).