lxc: eseguendo virtualbox all'interno di un contenitore


9

Ho installato virtualbox all'interno di un contenitore lxc. Tuttavia quando provo ad avviare una VM ricevo il messaggio:

driver del kernel non accessibile (rc = 1909) .... problema di autorizzazione con / dev / vboxdrv.

Questo ovviamente sembra un problema di sicurezza prevedibile.

Qualcuno sa come posso concedere l'autorizzazione al contenitore per accedere a questo driver di dispositivo: '/ dev / vboxdrv'?

Qualsiasi aiuto o suggerimenti è molto apprezzato.

Risposte:


9

Sul tuo host LXC (suppongo Ubuntu qui):

  1. Installare i virtualbox-dkms, linux-headers-generic, build-essentialpacchetti e controllare il kernel moduli vengono caricati:

    myhost$ sudo /etc/init.d/virtualbox status
    VirtualBox kernel modules are loaded.
    
  2. Ottieni i numeri di dispositivo VirtualBox (10, 55/56/57 nel mio caso):

    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. Prendi i numeri dei nodi e aggiungili al tuo LXC guest config ( /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. Riavvia il tuo guest LXC, installa il virtualboxpacchetto e crea i nodi del dispositivo:

    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. Controlla che VirtualBox sul guest possa vedere i moduli del kernel:

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

Questa dovrebbe essere la risposta corretta. I passaggi più importanti a cui mancano tutte le altre risposte sono i passaggi 3 e 4.
Léo Lam,

1

Il driver del kernel di VirtualBox Linux (vboxdrv) non è caricato o c'è un problema di autorizzazione con / dev / vboxdrv. Reinstallare il modulo del kernel eseguendo

 '/etc/init.d/vboxdrv setup'

come radice. Gli utenti di Ubuntu o Fedora dovrebbero installare inizialmente il pacchetto DKMS. Questo pacchetto tiene traccia delle modifiche del kernel Linux e ricompila il modulo del kernel vboxdrv se necessario.


Questa è solo una citazione dal messaggio di errore. Il driver è caricato ma il contenitore non dispone dell'autorizzazione per accedervi. Secondo la risposta dell'errore. La mia domanda era: come si concede l'autorizzazione ai processi all'interno di un contenitore per accedere ai dispositivi del kernel ?? Come posso risolvere il problema delle autorizzazioni?
user108168

0

È necessario /dev/vboxdrvappartenere al gruppo "vboxuser" e all'utente che avvia il contenitore in quel gruppo. Aggiungi l'utente al gruppo quindi assicurati che ci siano permessi di gruppo (es chmod 660 /dev/vboxdrv.).


Ciao Nathan C. Grazie per la tua risposta. Dove lo sto facendo; nell'ambiente host o nel contenitore?
user108168

L'host che presume che i driver del kernel siano installati lì (cosa che dovrebbero fare poiché LXC si affida al kernel host).

Ciao Nathan C Grazie per il chiarimento. Il dispositivo / dev / vboxdrv è di proprietà di root e sto avviando il contenitore come root. Stavo eseguendo virtualbox come un altro utente all'interno del contenitore ma ho provato a eseguirlo come root. Ho anche modificato il dispositivo per impostare il gruppo su vboxusers e le autorizzazioni su 660. Sto ancora ricevendo l'errore. Tutto funziona bene sull'host sia per utenti root che non root. Non devo inserire un'impostazione nel file di configurazione lxc per concedere le autorizzazioni al contenitore ?? È quello che pensavo, ma non so cosa siano. Grazie per l'aiuto.
user108168

-1

Non dovrebbe essere necessario installare virtualbox sul tuo computer host, fintanto che il tuo contenitore compila il modulo del kernel, puoi semplicemente caricarlo durante uno script pre-avvio sul contenitore LXC. Per una migliore sicurezza, è possibile copiare i moduli del kernel VBox nell'host prima del caricamento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.