lxc: menjalankan virtualbox di dalam sebuah wadah


9

Saya sudah menginstal virtualbox di dalam wadah lxc. Namun ketika saya mencoba untuk memulai VM saya mendapatkan pesan:

driver kernel tidak dapat diakses (rc = 1909) .... masalah izin dengan / dev / vboxdrv.

Ini jelas terlihat seperti masalah keamanan yang dapat diprediksi.

Adakah yang tahu bagaimana saya bisa memberikan izin kepada wadah untuk mengakses driver perangkat ini: '/ dev / vboxdrv'?

Setiap bantuan atau petunjuk sangat dihargai.

Jawaban:


9

Pada host LXC Anda (saya menganggap Ubuntu di sini):

  1. Instal virtualbox-dkms, linux-headers-generic, build-essentialpaket dan memeriksa kernel modul yang dimuat:

    myhost$ sudo /etc/init.d/virtualbox status
    VirtualBox kernel modules are loaded.
    
  2. Dapatkan nomor perangkat VirtualBox (10, 55/56/57 dalam kasus saya):

    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. Ambil nomor simpul dan tambahkan ke konfigurasi tamu LXC Anda ( /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. Mulai ulang tamu LXC Anda, instal virtualboxpaket, dan buat simpul perangkat:

    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. Periksa apakah VirtualBox pada tamu dapat melihat modul kernel:

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

Ini seharusnya jawaban yang benar. Langkah terpenting yang tidak dimiliki semua jawaban lainnya adalah langkah 3 dan 4.
Léo Lam

1

Driver kernel VirtualBox Linux (vboxdrv) tidak dimuat atau ada masalah izin dengan / dev / vboxdrv. Atur ulang modul kernel dengan menjalankan

 '/etc/init.d/vboxdrv setup'

sebagai root. Pengguna Ubuntu atau Fedora harus menginstal paket DKMS pada awalnya. Paket ini melacak perubahan kernel Linux dan mengkompilasi ulang modul kernel vboxdrv jika perlu.


Ini hanya kutipan dari pesan kesalahan. Pengemudi dimuat tetapi wadah tidak memiliki izin untuk mengaksesnya. Sesuai respons kesalahan. Pertanyaan saya adalah: bagaimana seseorang memberikan izin untuk proses dalam wadah untuk mengakses perangkat kernel ?? Bagaimana cara mengatasi masalah izin?
user108168

0

Anda harus /dev/vboxdrvdimiliki oleh grup "vboxuser" dan pengguna memulai wadah di grup itu. Tambahkan pengguna ke grup lalu pastikan ada izin grup (yaitu chmod 660 /dev/vboxdrv).


Hai Nathan C. Terima kasih atas tanggapan Anda. Di mana saya melakukan ini; di lingkungan tuan rumah atau wadah?
user108168

Host dengan asumsi driver kernel diinstal di sana (yang seharusnya karena LXC bergantung pada kernel host).

Hai Nathan C Terima kasih atas klarifikasi. Perangkat / dev / vboxdrv dimiliki oleh root dan saya memulai wadah sebagai root. Saya menjalankan virtualbox sebagai pengguna lain di dalam wadah tetapi mencoba menjalankannya sebagai root. Saya juga chmoded perangkat untuk mengatur grup ke vboxusers dan izin ke 660. Saya masih mendapatkan kesalahan. Semuanya berfungsi dengan baik pada host untuk pengguna root dan non-root. Apakah saya tidak perlu meletakkan pengaturan di file config lxc untuk memberikan izin ke kontainer ?? Itu yang saya duga tetapi tidak tahu apa itu. Terima kasih atas bantuan Anda.
user108168

-1

Seharusnya tidak perlu menginstal virtualbox di mesin host Anda, selama wadah Anda menyusun modul kernel, Anda bisa memuatnya selama skrip pra-mulai pada wadah LXC. Untuk keamanan yang lebih baik, Anda dapat menyalin modul kernel VBox ke host Anda sebelum memuat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.