VirtualBox

De Banane Atomic
Aller à la navigationAller à la recherche

Links

Guests configuration

System

Motherboard

Setting Description
Chipset PIIX3 is the default chipset for most guests. ICH9 support is experimental.
Pointing Device USB Multi-Touch Tablet is suitable for guests running Windows 8 or later. Prefer USB Tablet to PS/2 Mouse
Enable I/O APIC With Advanced Programmable Interrupt Controllers, OSes can use more than 16 interrupt requests (IRQs) and therefore avoid IRQ sharing for improved reliability.
Enabling the I/O APIC is required, especially for 64-bit Windows guest OSes. It is also required if you want to use more than one virtual CPU in a virtual machine.
However, software support for I/O APICs has been unreliable with some OSes other than Windows. Also, the use of an I/O APIC slightly increases the overhead of virtualization and therefore slows down the guest OS a little.
All Windows OSes install different kernels, depending on whether an I/O APIC is available. As with ACPI, the I/O APIC therefore must not be turned off after installation of a Windows guest OS. Turning it on after installation will have no effect however.
Enable EFI Enables experimental support for the Extensible Firmware Interface, which replaces the legacy BIOS.
Hardware Clock in UTC Time If selected, Oracle VM VirtualBox will report the system time in UTC format to the guest instead of the local (host) time. This affects how the virtual real-time clock (RTC) operates and may be useful for UNIX-like guest OSes, which typically expect the hardware clock to be set to UTC.

Processor

Setting Description
Enable PAE/NX Determines whether the Physical Address Extension and NX capabilities of the host CPU will be exposed to the virtual machine.
Allow a 32-bit x86 CPU to access more than 4 GB of RAM.

Display Settings

Screen
Setting Description
Graphics Controller
  • VBoxSVGA: The default graphics controller for new VMs that use Windows 7 or later. It has 3D support.
  • VBoxVGA: Use this graphics controller for legacy guest OSes. This is the default graphics controller for Windows versions before Windows 7.
  • VMSVGA: Use this graphics controller to emulate a VMware SVGA graphics device. This is the default graphics controller for Linux guests.
Enable 3D Acceleration 3D support is still experimental.

Audio

Setting Description
Host Driver Audio On newer Linux distributions, the PulseAudio subsystem is preferred.

Modes d'accès au réseau

Not attached

La machine virtuelle n'est connectée à aucun réseau.

Network Address Translation (NAT)

La MV a accès à internet.
La MV est connectée à un réseau privé (ex :10.0.2.0).
Les services de la MV ne sont pas accessibles depuis la machine hôte, le réseau local de la machine hôte ou internet.
Mais il est possible de définir une redirection de ports depuis la machine hôte vers la MV. VB peut ainsi écouter des ports particulier de la machine hôte et renvoyer les paquets destinés à ces ports à la MV.
Scénario :

  • Les données réseau envoyées par la MV sont reçues par VB.
  • VB extrait les données TCP/IP et les renvoient à la machine hôte.
  • Le destinataire va croire que c'est VB qui lui envoie les données depuis l'IP de la machine hôte.
  • VB attend la réponse du paquet envoyé, puis la transforme et l'envoie à la MV.

NAT Network

Pont réseau / Bridged adapter

Création d'une interface réseau pour la MV.
La machine hôte perçoit la MV comme si elle était physiquement connecté au réseau.

Réseau interne / Internal network

Entre MV.

Réseau privé hôte

Réseau hôte – MV.

Réseau Host-only / Host-only Adapter

Mélange de réseau Bridge et de réseau Internal

Pilote de la souris

Avec les Guest Addition et le Mouse Integration VirtualBox émule une sourie sur le guest via un pilote.
La sourie est disponible sur le host et le guest et bascule automatiquement de l'un à l'autre.
Pour avoir accès à la sourie sans émulation il faut:

  • l'ajouter dans les filtres usb
  • désactiver le Mouse Integration (menu Input depuis le guest)
La sourie sera disponible sur le guest mais plus sur le host!

Save the machine state

Fermer la VM avec la croix → Save the machine state

Raccourcis clavier

Switch to Seamless Mode Right Ctrl + L
Switch to Fullscreen Right Ctrl + F
Minimize window Right Ctrl + M
Take Screenshot Right Ctrl + E
Popup Menu Right Ctrl + Home
ACPI Shutdown Right Ctrl + H

Seemless mode - Bureau intégré

Permet l'affichage du bureau invité sans le fond d'écran: barre des taches et fenêtre.

Booter un fichier IMG

Stockage → Ajouter un Contrôleur disquette → Ajouter une disquette liée au fichier IMG

Migrer des anciennes VM vers VB 4

Before 4.0 4.0 or above
Default machines folder $HOME/.VirtualBox/Machines $HOME/VirtualBox VMs
Default disk image location $HOME/.VirtualBox/HardDisks In each machine's folder
Machine settings file extension .xml .vbox

File → Export Appliance

Erreurs

Impossible de supprimer une MV

Échec de la suppression de l'instantané {I} de la machine virtuelle {MV}.
Hard disk {HD} has more than one child hard disk (n).
Explication : le fichier *.vdi est utilisé par une autre MV.
Solution : Fichier → Gestionnaire de media …
Sélectionner les fichiers *.vdi correspondant à la MV à supprimer.
Si le fichier *.vdi est « non-connecté » ou « Not Attached », il ne pose pas problème.
Si le fichier *.vdi est connécté à une MV, il doit être libéré.

Qt WARNING: libpng warning: iCCP: known incorrect sRGB profile

Les instantanés (snapshots)

Permet de sauvegarder / restaurant la MV dans un certain état.
Chaque instantané créé un nouveau disque *.vdi, ce qui devient assez vite très gourmand en espace disque.

Les partages réseau

Installez les Guest Additions : Périphériques → Installer les additions invités...
Puis dans les préférences de la MV ajoutez des dossiers à partager.

Hôte Windows

Une fois dans la MV, connectez un lecteur réseau sur le partage \\vboxsrv\NomDuDossierPartagé ou exécutez la commande suivante :

Dos.svg
net use Z: \\vboxsrv\NomDuDossierPartagé

Hôte Linux

Bash.svg
# ajouter l'utilisateur courant au groupe vboxsf pour utiliser l'automount → /media/sf_[nom du partage configuré dans vbox]
sudo gpasswd -a [user] vboxsf
# se délogguer pour que la modification s'applique

# monter le partage manuellement
sudo mount -t vboxsf [nom du partage configuré dans vbox] /media/dossier

Changer l'UUID d'un disque vdi

Dos.svg
C:\Program File\VirtualBox\VBoxManage internalcommands setvdiuuid disk.vdi

Redimensionner une partition

Si le disque a des snapshots, il faut tous les supprimer. Sinon pas de redimensionnement.

Disques VDI

Bash.svg
VBoxManage modifyhd your_virtual_disk.vdi --resize the_new_size

# Monter GParted Live ISO pour redimensionner la partition
# On GPT disks, increasing the size of the disk will result in the backup GPT header not being at the end of the device.
# GParted will ask to fix this, click on Fix.

Méthode générique

Bash.svg
# créer un nouveau disque de la taille souhaitée (en Mio, ici 10000 Mio ≈ 10 Gio)
VBoxManage createhd -filename new.vdi --size 10000

# cloner l'ancien disque
VBoxManage clonehd old.vdi new.vdi --existing

# lister les machines virtuelles
VBoxManage list vms
# afficher les infos de la machine à copier
VBoxManage showvminfo VM_name
# Storage Controller Bootable (1):        on
# IDE (1, 0): Empty
# SATA (0, 0): ...
# on a donc storagectl SATA et port 0 (<SATA> (<0>, 0))

# Détacher l'ancien disque et attacher le nouveau
# storagectl SATA et port 0 sont à remplacer par les valeurs obtenues avec showvminfo
VBoxManage storageattach VM_name --storagectl SATA --port 0 --medium none
VBoxManage storageattach VM_name --storagectl SATA --port 0 --medium new.vdi --type hdd

# Monter GParted Live ISO pour redimensionner la partition
# On GPT disks, increasing the size of the disk will result in the backup GPT header not being at the end of the device.
# GParted will ask to fix this, click on Fix.

# dés-enregistrer l'ancien disque et le supprimer
VBoxManage closemedium disk old.vdi
rm old.vdi

Ancienne méthode

Il suffit de copier la partition dans une partition plus grande :

  • Créer un deuxième disque virtuel de la taille souhaitée et l'ajouter en slave du premier
  • Télécharger GParted live et booter la machine virtuelle sur l'iso
  • Dans GParted, copier la première partition et la coller dans la deuxième. Pendant le collage, agrandir la partition pour qu'elle prenne tous l'espace. Enfin cliquer sur Apply.
  • Ensuite clique droit sur la nouvelle partition → Manage Flags → sélectionner « boot ».
  • Désactiver le boot sur le live cd, faire de la nouvelle partition une master partition et supprimer l'ancienne.
  • Au boot, xp va vérifier le système de fichier.

Compact VDI file size

Bash.svg
# Linux guest: nullify free space
telinit 1
mount -o remount,ro /dev/sda1
zerofree -v /dev/sda1

# Windows guest: defrag then nullify free space with SDelete from Sysinternals
sdelete.exe c: -z

# compact
vboxmanage modifymedium --compact /path/to/thedisk.vdi

CLI / VBoxManage

Bash.svg
# démarrer MaVM
VBoxManage startvm "MaVM"

# sauvegarder l'état de MaVM et l'arrêter
VBoxManage controlvm "MaVM" savestate

# lister les VM qui tournent
VBoxManage list runningvms

# obtenir l'UUID depuis le nom
VBoxManage showvminfo "MaVM" | rg ^UUID | awk '{print $2}'

Convert a VHDX to VDI

Bash.svg
vboxmanage clonemedium disk ./vm.vhdx ./vm.vdi --format VDI

Boot sur un disque dur physique ou une clé usb

La fonctionnalité RawDisk permet de booter sur une partition d'un vrai DD ou une clé usb. Le fichier *.vmdk doit être utilisé comme un DD virtuel dans VB.

Créer un lien vers une partition

Bash.svg
# ajouter l'utilisateur courant au groupe disk
sudo gpasswd -a [user] disk

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,2 -relative
Pour les clés usb ou s'il n'y a qu'une partition ne pas utiliser -partitions

Commandes Windows

Dos.svg
REM lister les disques
wmic diskdrive get name,size,model

REM lister les partitions
VBoxManage internalcommands listpartitions -rawdisk \\.\PhysicalDrive0

VBoxManage internalcommands createrawvmdk -filename C:\path\to\file.vmdk -rawdisk \\.\PhysicalDrive0 -partitions 1,2 -relative

Déplacer un dossier contenant une machine virtuelle

~/.config/VirtualBox/VirtualBox.xml
<MachineRegistry>
  <MachineEntry uuid="{1234abcd-1234-abcd-efgh-000000000000}" src="/path/MyMachine/MyMachine.vbox"/>

Installation sur Archlinux

Bash.svg
pacman -S virtualbox virtualbox-host-modules-arch virtualbox-guest-iso

# add current user to vboxusers group
sudo gpasswd -a $USER vboxusers
Redémarrer pour que le module vboxdrv soit chargé et la modification du groupe soit prise en compte.
Pour l'USB 2, il faut en plus installer l'Extension Pack

Activer la virtualisation dans le bios (VT-x, AMD-V, hardware-V)

Asus EFI Bios: Advances Mode → Advanced → CPU Configuration → Technologie de virtualisation Intel

Installer l'Extension Pack

  1. Télécharger l'Extension Pack
  2. File → Tools → Extension Pack Manager
Il faut les droits root pour l'installation. Polkit ou gksu doit être installé pour demander les droits root.

Logs

$HOME/VirtualBox VMs/{machinename}/Logs

Guests

64 bits

Send Ctrl + Alt + F1

  • Window screen RCtrl + F1
  • Full screen LCtrl + Alt + F1

ArchLinux

EFI

Settings → System → Onglet Motherboard → Enable EFI

Les entrées ne sont pas sauvegardées une fois la machine virtuelle éteinte.

  • Solution 1: utiliser le bootloader par défaut
    Renommer /boot/EFI/refind/refind_x64.efi en /boot/EFI/BOOT/bootx64.efi
  • Solution 2: créer le script startup.nsh
/boot/startup.nsh
\EFI\refind\refind_x64.efi
  • Solution 3: lancer manuellement le bootloader directement depuis le shell UEFI
Bash.svg
\EFI\refind\refind_x64.efi

Xorg

Bash.svg
pacman -S xorg-server xf86-video-vesa

Guest Additions

Bash.svg
# pilote vidéo
pacman -S virtualbox-guest-modules-arch

# VirtualBox Guest userspace utilities
pacman -S virtualbox-guest-utils
systemctl enable vboxservice

3D Acceleration

Bash.svg
glxinfo | egrep "(OpenGL vendor|OpenGL renderer|OpenGL version)"

# accélération logicielle avec LLVMPipe
# OpenGL vendor string: VMware, Inc.
# OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.7, 256 bits)
# OpenGL version string: 3.0 Mesa 11.1.1

# accélération matérielle
# OpenGL vendor string: Humper
# OpenGL renderer string: Chromium
# OpenGL version string: 2.1 Chromium 1.9
The AIGLX errors in Xorg.x.log are displayed even when 3D is working correctly.
/var/log/Xorg.0.log
(II) AIGLX: Screen 0 is not DRI2 capable
(EE) AIGLX: reverting to software rendering

Problème réseau: e1000 0000:00:03.0 enp0s3: Detected Tx Unit Hang

Changer le pilote de la carte réseau: Intel PRO/1000 MT Desktop → PCnet Fast III

Debian

Installation des Guest Additions

Bash.svg
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential module-assistant

# Configure your system for building kernel modules
sudo m-a prepare

# monter les Guest Additions
sudo sh /media/cdrom/VBoxLinuxAdditions.run

Fedora

Pour pouvoir installer les Guest Additions, installer la paquet kernel-devel.

Ubuntu Server

Installation des Guest Additions:

  • Devices → Insert Guest Additions CD image
Bash.svg
sudo mkdir /media/cdrom
sudo mount /dev/cdrom /media/cdrom
cd /media/cdrom

# installer les dépendances nécessaires
sudo apt-get install -y dkms build-essential linux-headers-generic linux-headers-$(uname -r)

# passer à l'utilisateur root
sudo su
# installer les Guest Additions
./VBoxLinuxAdditions.run

# rebooter puis tester que le module est bien chargé
lsmod | grep -io vboxguest

Ubuntu desktop

Bash.svg
# gcc, make and perl are needed to build the kernel with the vbox guest additions
sudo apt install build-essential