Dacă ai ajuns pe această pagină, cel mai probabil ai întâlnit cel puțin una din situațiile clasice: tastatura nu funcționează în VM, rezoluția rămâne blocată la 800×600, clipboard-ul nu se sincronizează cu gazda sau folderele partajate nu apar nicăieri. Toate acestea au o rădăcină comună - lipsa configurării corecte, fie a VirtualBox-ului pe gazda (host), fie a Guest Additions în mașina virtuală (guest). Acest ghid acoperă tot procesul de la zero, pentru principalele distribuții Linux, și integrează informațiile din documentația oficială Oracle și ArchWiki.
VirtualBox este un hypervisor de tip 2 (rulează deasupra sistemului de operare existent), dezvoltat de Oracle. Vine cu o interfață grafică Qt, dar și cu unelte în linie de comandă - VBoxManage, VBoxSDL și VBoxHeadless - pentru gestionarea și rularea VM-urilor fără GUI, util pe servere sau în automatizări.
Pe Linux, integrarea cu kernel-ul se face prin câteva module care trebuie încărcate pe sistemul gazdă:
Dacă aceste module nu sunt încărcate, VirtualBox Manager poate porni, dar orice VM va eșua la start cu mesajul WARNING: The vboxdrv kernel module is not loaded.
sudo apt update sudo apt install -y virtualbox virtualbox-dkms virtualbox-ext-pack
Pe Ubuntu 22.04+ și Debian 12, versiunea din repozitorii oficiale poate fi cu câteva versiuni în urmă față de cea de pe site-ul Oracle. Dacă vrei ultima versiune stabilă:
# Adaugă repozitoriul Oracle wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmor -o /usr/share/keyrings/oracle-virtualbox.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox.gpg] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list sudo apt update sudo apt install -y virtualbox-7.1
sudo dnf install -y kernel-devel kernel-headers gcc make perl sudo dnf config-manager --add-repo https://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo sudo dnf install -y VirtualBox-7.1
sudo zypper install virtualbox virtualbox-host-source sudo /sbin/rcvboxdrv setup
Pe Arch, alegerea pachetului de module depinde de kernel-ul instalat. Instalează întotdeauna și virtualbox-host-dkms pentru a beneficia de recompilare automată la actualizări de kernel:
sudo pacman -S virtualbox virtualbox-host-modules-arch
sudo pacman -S virtualbox virtualbox-host-dkms
pamac install virtualbox $(pacman -Qsq "^linux" | grep "^linux[0-9]*[-rt]*$" | awk '{print $1"-virtualbox-host-modules"}' ORS=' ')
Este recomandat să instalezi și virtualbox-guest-iso pe gazda Arch - pune la dispoziție imaginea ISO cu Guest Additions la /usr/lib/virtualbox/additions/VBoxGuestAdditions.iso, gata de montat în orice VM guest:
sudo pacman -S virtualbox-guest-iso
echo "app-emulation/virtualbox" >> /etc/portage/package.accept_keywords emerge --ask app-emulation/virtualbox
virtualbox-host-dkms folosește systemd-modules-load.service pentru a încărca modulele automat la boot. Lista modulelor se găsește în /usr/lib/modules-load.d/virtualbox-host-dkms.conf. Dacă nu vrei reboot, încarcă modulele manual:
sudo modprobe vboxdrv sudo modprobe vboxnetadp sudo modprobe vboxnetflt # Pe Arch, există un script dedicat: sudo vboxreload
Dacă nu dorești încărcarea automată la boot, suprascrie configurația implicită cu un fișier gol:
sudo touch /etc/modules-load.d/virtualbox-host-dkms.conf # sau sudo ln -s /dev/null /etc/modules-load.d/virtualbox-host-dkms.conf
Dacă VirtualBox sau kernel-ul sunt actualizate în timp ce modulele sunt deja încărcate, trebuie să le reîncarci manual cu sudo vboxreload (Arch) sau sudo /sbin/rcvboxdrv setup (Debian/openSUSE).
Un pas pe care mulți îl uită - fără el USB-ul și folderele partajate nu funcționează:
sudo usermod -aG vboxusers $USER
Modificarea grupului devine efectivă abia la următoarea autentificare. În sesiunea curentă poți folosi newgrp vboxusers pentru a o activa imediat.
Dacă distribuția ta are Secure Boot activ (situație frecventă pe laptopuri cu Ubuntu, Fedora sau openSUSE preinstalate), modulele vbox vor fi refuzate la încărcare cu eroarea Failed to insert 'vboxdrv': Required key not available.
Opțiunea 1 - dezactivează Secure Boot din UEFI/BIOS (mai simplu, recomandat pentru uz personal).
Opțiunea 2 - semnează modulele cu o cheie proprie. Dacă folosești un kernel cu CONFIG_MODULE_SIG_FORCE, rulează ca root:
find "/lib/modules/$(uname -r)/" \ '(' -name 'vboxdrv.ko*' -o -name 'vboxnetadp.ko*' -o -name 'vboxnetflt.ko*' ')' \ -exec /lib/modules/$(uname -r)/build/scripts/sign-file sha256 \ /lib/modules/$(uname -r)/build/certs/signing_key.pem \ /lib/modules/$(uname -r)/build/certs/signing_key.x509 {} ';'
Dacă fișierul signing_key.pem nu există în directorul certs, generează-l manual. Creează un fișier x509.genkey:
[ req ] default_bits = 4096 distinguished_name = req_distinguished_name prompt = no string_mask = utf8only x509_extensions = myexts [ req_distinguished_name ] CN = Modules [ myexts ] basicConstraints=critical,CA:FALSE keyUsage=digitalSignature subjectKeyIdentifier=hash authorityKeyIdentifier=keyid
Generează cheile și înregistrează-le cu MOK:
openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 \ -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pem sudo cp signing_key.x509 signing_key.pem /lib/modules/$(uname -r)/build/certs/ sudo mokutil --import signing_key.x509
Algoritmul de hash nu trebuie să corespundă celui configurat în kernel, dar trebuie să fie compilat în kernel.
Extension Pack adaugă suport pentru USB 2.0/3.0, RDP, disk encryption și NVMe. Pe Arch este disponibil virtualbox-ext-oracle din AUR, sau poate fi instalat manual:
# Descarcă de pe https://www.virtualbox.org/wiki/Downloads, apoi: sudo VBoxManage extpack install --replace Oracle_VirtualBox_Extension_Pack-7.1.8.vbox-extpack # Sau fără Polkit, direct ca root: sudo vboxmanage extpack install /path/to/Oracle_VirtualBox_Extension_Pack.vbox-extpack
Alternativă open source pentru RDP: pachetul virtualbox-ext-vnc.
Pe sisteme cu Wayland (ex. GNOME cu GDM), există o restricție de securitate care împiedică VirtualBox să captureze tot input-ul de tastatură. Dacă vrei să trimiți shortcut-uri de window manager către guest, adaugă VirtualBox pe lista albă:
# Verifică lista actuală gsettings get org.gnome.mutter.wayland xwayland-grab-access-rules # Adaugă VirtualBox (păstrează eventualele aplicații deja în listă) gsettings set org.gnome.mutter.wayland xwayland-grab-access-rules "['VirtualBox Machine']"
Dacă VirtualBox nu pornește deloc pe Wayland și dai de un Segmentation fault, forțează X11:
QT_QPA_PLATFORM=xcb VirtualBox
Sau adaugă în fișierul .desktop al aplicației: Exec=env QT_QPA_PLATFORM=xcb VirtualBox.
Notă Btrfs: dacă stochezi discurile virtuale pe un filesystem Btrfs, dezactivează copy-on-write pentru directorul respectiv înainte de a crea vreun image:
chattr +C ~/VirtualBox\ VMs/
# Creează VM VBoxManage createvm --name "Kali-2025" --ostype Debian_64 --register # Configurează hardware VBoxManage modifyvm "Kali-2025" --memory 4096 --cpus 2 --vram 128 VBoxManage modifyvm "Kali-2025" --graphicscontroller vmsvga VBoxManage modifyvm "Kali-2025" --nic1 nat # Creează și atașează discul VBoxManage createmedium disk --filename ~/VirtualBox\ VMs/Kali-2025/Kali-2025.vdi --size 40960 VBoxManage storagectl "Kali-2025" --name "SATA" --add sata VBoxManage storageattach "Kali-2025" --storagectl "SATA" --port 0 --device 0 --type hdd --medium ~/VirtualBox\ VMs/Kali-2025/Kali-2025.vdi # Atașează ISO VBoxManage storagectl "Kali-2025" --name "IDE" --add ide VBoxManage storageattach "Kali-2025" --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium /path/to/kali-linux.iso
| Format | Descriere | Note |
|---|---|---|
| VDI | format nativ VirtualBox | recomandat pentru uz general |
| VMDK | format VMware | suportă splitare în fișiere de 2 GB |
| VHD | format Microsoft (Hyper-V, Virtual PC) | poate fi montat nativ în Windows 7+ |
| VHDX | versiune extinsă VHD (Hyper-V 3.0) | suport read-only în VirtualBox |
| QCOW | format QEMU versiunea 1 | suport complet |
| QCOW2 | format QEMU curent | nu este suportat de VirtualBox |
| QED | format QEMU Enhanced Disk (vechi) | suport pentru compatibilitate |
| OVF | Open Virtualization Format | import/export între hypervisoare, cu limitări |
| RAW | disc fără container | acces direct la disc fizic sau fișier simplu |
# VDI → VMDK VBoxManage clonehd source.vdi destination.vmdk --format VMDK # VMDK → VDI VBoxManage clonehd source.vmdk destination.vdi --format VDI # QCOW2 → VDI (necesită qemu-img) qemu-img convert -O vdi source.qcow2 destination.vdi # VDI → QCOW2 qemu-img convert -O qcow2 source.vdi destination.qcow2 # -p afișează progresul; -o compat=0.10 sau compat=1.1 specifică revizia QCOW2
# Redimensionează direct (numai pentru VDI, valoarea în MiB) VBoxManage modifymedium disk your_virtual_disk.vdi --resize 51200 # 51200 MiB = 50 GiB
Pentru VMDK sau abordare alternativă - clonează pe un disc nou:
VBoxManage createmedium disk --filename new.vdi --size 51200 VBoxManage clonemedium disk old.vdi new.vdi --existing VBoxManage storageattach "NumeleVM" --storagectl "SATA" --port 0 --medium none VBoxManage storageattach "NumeleVM" --storagectl "SATA" --port 0 --medium new.vdi --type hdd
Pornește VM-ul cu un live ISO de GParted și extinde partiția la noua dimensiune.
Dacă un disc VDI a crescut prea mult, recuperi spațiul nefolosit în doi pași. Mai întâi, în interiorul VM-ului, umple spațiul liber cu zerouri:
cat /dev/zero > /tmp/fillfile || rm /tmp/fillfile
Apoi, după oprirea VM-ului, compactează pe host:
VBoxManage modifyhd your_disk.vdi --compact
Dacă VM-ul are snapshot-uri, rulează comanda pe fiecare fișier .vdi în parte. Compactarea nu funcționează pe discuri criptate.
Acesta este pasul pe care cei mai mulți îl sar și de unde vin 90% din problemele raportate: tastatură care nu merge, rezoluție blocată, clipboard nefuncțional, foldere partajate invizibile.
Guest Additions compilează module kernel în interiorul VM-ului guest, deci ai nevoie de unelte de compilare și header-ele kernel-ului care rulează în guest.
sudo apt update sudo apt install -y build-essential dkms linux-headers-$(uname -r)
sudo dnf install -y gcc make perl kernel-devel kernel-headers dkms
sudo pacman -S base-devel linux-headers dkms
sudo zypper install -y gcc make kernel-devel dkms
Din meniul VM-ului: Devices → Insert Guest Additions CD Image
Dacă nu se montează automat:
sudo mkdir -p /mnt/cdrom sudo mount /dev/cdrom /mnt/cdrom
Dacă ai instalat virtualbox-guest-iso pe gazda Arch, ISO-ul se află la /usr/lib/virtualbox/additions/VBoxGuestAdditions.iso și poate fi montat direct din setările VM-ului ca unitate optică.
cd /mnt/cdrom sudo sh ./VBoxLinuxAdditions.run
Urmărește output-ul - dacă apar erori de compilare, înseamnă că lipsesc header-ele kernel sau pachetele de build. Instalarea reușită arată:
Building the VirtualBox Guest Additions kernel modules ...done. Doing non-kernel setup of the Guest Additions ...done.
sudo reboot
lsmod | grep vbox # Ar trebui să apară: vboxguest, vboxsf, vboxvideo # Verificare versiune module vs. versiune instalată: # Pe host: modinfo vboxdrv | grep '^version:' # Pe guest: caută în logurile VM "Guest Additions information report"
După instalarea Guest Additions și repornire:
Dacă rezoluția consolei virtuale (TTY, framebuffer) rămâne mică chiar după instalarea Guest Additions, adaugă rezoluții personalizate. Pe host:
VBoxManage setextradata "NumeleVM" "CustomVideoMode1" "1920x1080x24"
Poți defini până la 16 rezoluții (CustomVideoMode1 până la CustomVideoMode16). Rezoluții recomandate: 1280×720, 1920×1080, 2560×1440, 3840×2160.
Apoi, în VM, adaugă parametrul kernel la boot:
video=1920x1080
Nu folosi parametrul vga= sau setările de rezoluție din GRUB (GRUB_GFXPAYLOAD_LINUX) - acestea sunt suprascrise de KMS. Parametrul video= este cel corect.
Settings → Shared Folders → click pe iconița + → selectează directorul de pe host, dă-i un nume (ex. host-share) și bifează Auto-mount.
# Folderul apare automat în /media/sf_<nume> ls /media/sf_host-share # Dacă primești "Permission denied", adaugă-te în grupul vboxsf sudo usermod -aG vboxsf $USER # Deconectează-te și reconectează-te
sudo mount -t vboxsf host-share /mnt/shared
Pentru montare permanentă, adaugă în /etc/fstab:
host-share /mnt/shared vboxsf defaults,uid=1000,gid=1000 0 0
Notă Windows guest: dacă un fișier .exe care necesită drepturi de administrator refuză să ruleze de pe un folder partajat, copiază-l pe discul virtual sau folosește calea UNC \\vboxsvr\host-share.
| Mod | VM → Internet | Host → VM | VM → VM |
|---|---|---|---|
| NAT | ✓ | ✗ (fără port forwarding) | ✗ |
| Bridged | ✓ | ✓ | ✓ |
| Host-only | ✗ | ✓ | ✓ (aceeași rețea) |
| Internal | ✗ | ✗ | ✓ (aceeași rețea internă) |
| NAT Network | ✓ | ✗ (fără port forwarding) | ✓ |
NAT este implicit și suficient pentru navigare din VM. Bridged este ideal dacă vrei ca VM-ul să apară ca un device separat în rețeaua locală. Host-only este util pentru laburi de rețea sau acces SSH din host în VM fără internet.
VBoxManage modifyvm "NumeleVM" --natpf1 "ssh,tcp,,2222,,22" ssh -p 2222 user@127.0.0.1
sshfs -p 2222 user@localhost:$HOME ~/shared_folder
Dacă primești erori E_ACCESSDENIED la modificarea adaptorului de rețea virtual, VirtualBox limitează subrețelele permise. Creează /etc/vbox/networks.conf:
* 10.0.0.0/8 192.168.0.0/16 * 2001:db8:1234::/48
Spațiile și asteriscul sunt importante. Reîncarcă driverele după modificare:
sudo modprobe -r vboxnetadp vboxnetflt sudo modprobe vboxnetadp vboxnetflt
Dacă vrei ca un VM să pornească automat la boot-ul sistemului gazdă, creează un serviciu systemd:
[Unit] Description=VBox Virtual Machine %i Service Requires=systemd-modules-load.service After=systemd-modules-load.service [Service] User=username Group=vboxusers ExecStart=/usr/bin/VBoxManage startvm %i --type headless ExecStop=/usr/bin/VBoxManage controlvm %i savestate RemainAfterExit=yes [Install] WantedBy=multi-user.target
Înlocuiește username cu un utilizator din grupul vboxusers - același utilizator care a creat VM-ul (altfel VM-ul nu va fi vizibil). --type poate fi gui, headless sau separate; savestate poate fi înlocuit cu acpipowerbutton pentru oprire normală. Dacă ai mai multe VM-uri și nu se opresc corect, adaugă KillMode=none și TimeoutStopSec=40 în secțiunea [Service].
sudo systemctl enable vboxvmservice@NumeleVM sudo systemctl start vboxvmservice@NumeleVM
| Comandă | Descriere |
|---|---|
VirtualBox | interfața grafică completă |
VBoxSDL | fereastră simplă fără overlay-uri, util pentru testare rapidă |
VBoxHeadless | fără GUI, pentru servere; cu extensia VRDP poți accesa remote display-ul |
vboxwebsrv | server web pentru gestionare remote cu RemoteBox (GUI) sau phpVirtualBox (WebUI) |
Snapshot-urile îți permit să salvezi starea VM-ului la un moment dat și să revii oricând.
VBoxManage snapshot "NumeleVM" take "Inainte-de-experimente" VBoxManage snapshot "NumeleVM" restore "Inainte-de-experimente" VBoxManage snapshot "NumeleVM" list
Fiecare snapshot generează un fișier .vdi separat - comanda modifyhd --compact trebuie rulată pe fiecare dintre ele individual.
Apasă tasta Host Key (implicit Right Ctrl) pentru a elibera input-ul. Dacă câmpul de username/parolă nu primește input: click pe fereastra VM, apasă Right Ctrl + Delete, apoi click pe câmpul de text. Soluția permanentă este instalarea Guest Additions.
sudo modprobe vboxdrv dmesg | grep vbox # pentru detalii despre eroare # Pe Arch, după update de kernel sau VirtualBox: sudo vboxreload # Pe Debian/Ubuntu/openSUSE: sudo /sbin/rcvboxdrv setup
Virtualizarea hardware (VT-x / AMD-V) nu este activată în BIOS/UEFI. Intră în setările firmware-ului și activează opțiunea (de obicei în secțiunea CPU sau Security). Pe Windows host, poate fi necesar să dezactivezi Hyper-V.
vboxvideo este încărcat în guest: lsmod | grep vboxvideo# Asigură-te că header-ele corespund exact kernel-ului care rulează uname -r # Instalează pachetul de headers exact pentru această versiune
sudo usermod -aG vboxsf $USER # Deconectează-te complet și reconectează-te
lsmod | grep vbox sudo modprobe vboxnetadp vboxnetflt # Sau din GUI: File → Host Network Manager → Create
Instalează PulseAudio pe host sau configurează VirtualBox să folosească backend-ul PulseAudio (pe care PipeWire îl interceptează prin pipewire-pulse):
VBoxManage modifyvm "NumeleVM" --audio-driver pulse --audio-controller hda
Încearcă să schimbi controllerul USB din USB 2 (EHCI) în USB 3 (xHCI) sau invers, din Settings → USB.
Apare de obicei când Extension Pack nu este actualizat și devine incompatibil cu noua versiune VirtualBox, sau dacă ai creat un disc în format QCOW2 (nesuportat). Verifică că Extension Pack și VirtualBox sunt la aceeași versiune.
sudo vboxreload dkms status # verifică că DKMS a recompilat modulele
Reducerea numărului de procesoare virtuale poate ajuta, deoarece mai multe nuclee alocate pot scădea performanța de randare pe Intel GPU. Încearcă cu 1-2 nuclee.
Adaugă la parametrii kernel ai gazdei:
split_lock_detect=off
KVM și modulele VirtualBox nu pot rula simultan. Dacă Android Studio emulator a folosit KVM și acum VirtualBox nu pornește:
sudo vboxreload # Dacă modulele sunt în uz, identifică procesul și termină-l: lsof /dev/kvm