lxc: exécuter virtualbox dans un conteneur


9

J'ai installé virtualbox dans un conteneur lxc. Cependant, lorsque j'essaie de démarrer une machine virtuelle, je reçois le message:

pilote du noyau non accessible (rc = 1909) .... problème d'autorisation avec / dev / vboxdrv.

Cela ressemble évidemment à un problème de sécurité prévisible.

Est-ce que quelqu'un sait comment je peux autoriser le conteneur à accéder à ce pilote de périphérique: '/ dev / vboxdrv'?

Toute aide ou pointeur grandement apprécié.

Réponses:


9

Sur votre hôte LXC (je suppose qu'Ubuntu est ici):

  1. Installez les virtualbox-dkms, linux-headers-generic, les build-essentialcolis et vérifier les modules noyau sont chargés:

    myhost$ sudo /etc/init.d/virtualbox status
    VirtualBox kernel modules are loaded.
    
  2. Obtenez les numéros d'appareils VirtualBox (10, 55/56/57 dans mon cas):

    myhost$ ls -la /dev | grep vbox
    crw-------  1 root root     10,  57 Feb 25 08:22 vboxdrv
    crw-------  1 root root     10,  56 Feb 25 08:22 vboxdrvu
    crw-------  1 root root     10,  55 Feb 25 08:22 vboxnetctl
    
  3. Prenez les numéros de noeud et ajoutez à votre configuration d'invité LXC ( /var/lib/lxc/myguest/config):

    ## VirtualBox
    lxc.cgroup.devices.allow = c 10:57 rwm
    lxc.cgroup.devices.allow = c 10:56 rwm
    lxc.cgroup.devices.allow = c 10:55 rwm
    
  4. Redémarrez votre invité LXC, installez le virtualboxpackage et créez les nœuds de périphérique:

    myguest$ sudo mknod -m 600 /dev/vboxdrv c 10 57
    myguest$ sudo mknod -m 600 /dev/vboxdrvu c 10 56
    myguest$ sudo mknod -m 600 /dev/vboxnetctl c 10 55
    
  5. Vérifiez que VirtualBox sur l'invité peut voir les modules du noyau:

    myguest$ sudo /etc/init.d/virtualbox status
    VirtualBox kernel modules are loaded.
    

Ce devrait être la bonne réponse. Les étapes les plus importantes qui manquent à toutes les autres réponses sont les étapes 3 et 4.
Léo Lam

1

Le pilote du noyau VirtualBox Linux (vboxdrv) n'est pas chargé ou il y a un problème d'autorisation avec / dev / vboxdrv. Réinstallez le module du noyau en exécutant

 '/etc/init.d/vboxdrv setup'

en tant que root. Les utilisateurs d'Ubuntu ou de Fedora doivent d'abord installer le package DKMS. Ce paquet garde une trace des changements du noyau Linux et recompile le module du noyau vboxdrv si nécessaire.


Ceci est juste une citation du message d'erreur. Le pilote est chargé mais le conteneur n'est pas autorisé à y accéder. Selon la réponse d'erreur. Ma question était: comment accorder une autorisation aux processus d'un conteneur pour accéder aux périphériques du noyau? Comment résoudre le problème des autorisations?
user108168

0

Vous devez avoir /dev/vboxdrvappartenu au groupe "vboxuser" et à l'utilisateur démarrant le conteneur dans ce groupe. Ajoutez l'utilisateur au groupe, puis assurez-vous qu'il y a des autorisations de groupe (c. chmod 660 /dev/vboxdrv-à-d.).


Salut Nathan C. Merci pour votre réponse. Où est-ce que je fais ça; dans l'environnement hôte ou le conteneur?
user108168

L'hôte en supposant que les pilotes du noyau y sont installés (ce qu'ils devraient puisque LXC s'appuie sur le noyau de l'hôte).

Salut Nathan C Merci pour la clarification. Le périphérique / dev / vboxdrv appartient à root et je démarre le conteneur en tant que root. J'exécutais virtualbox en tant qu'autre utilisateur dans le conteneur, mais j'ai essayé de l'exécuter en tant que root. J'ai également modifié l'appareil pour définir le groupe sur vboxusers et les autorisations sur 660. Je reçois toujours l'erreur. Tout fonctionne bien sur l'hôte pour les utilisateurs root et non root. Dois-je pas mettre un paramètre dans le fichier de configuration lxc pour accorder des autorisations au conteneur ?? C'est ce que je supposais, mais je ne sais pas ce que c'est. Merci de votre aide.
user108168

-1

Il ne devrait pas être nécessaire d'installer virtualbox sur votre machine hôte, tant que votre conteneur compile le module du noyau, vous pouvez simplement le charger pendant un script de pré-démarrage sur le conteneur LXC. Pour une meilleure sécurité, vous pouvez copier les modules du noyau VBox sur votre hôte avant le chargement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.