VirtualBox

De Banane Atomic
Aller à la navigationAller à la recherche

Logs

$HOME/VirtualBox VMs/{machinename}/Logs

Liens utiles

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

Accélération 2D et 3D

Raccourcis clavier

Switch to Seamless Mode Right Ctrl + L
Switch to Fullscreen Right Ctrl + F
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

Multi-coeurs

Configuration → Système → Processeur
Le nombre de cœurs de la MV est indépendant du nombre de cœurs de l'hôte car ceux-ci sont virtuels.

IO-APIC

Permet de démarrer un autre OS installé sur le DD dans une MV.

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

Quitter le mode Plein Écran

Ctrl droit + f

Changer l'UUID d'un disque vdi

Dos.png
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.

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 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

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}'

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

Prise de contrôle à distance

VB intègre un serveur de bureau distant, extension de Microsoft's Remote Desktop Protocol (RDP)

Authentification

  • Aucune
  • Externe : utilisation du compte hôte pour la connexion sur le système invité (WinLogon, PAM)
  • Client (testing!!!) : utilisation du compte invité (Guest Additions)

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
sudo pacman -S virtualbox virtualbox-guest-iso linux-headers
# virtualbox-host-dkms sera installé comme dépendance

# installez Qt pour pouvoir utiliser l'interface graphique
sudo pacman -S qt4

# modules à charger
sudo modprobe vboxdrv
# vboxnetadp for the host-only networking mode
# vboxnetflt for the bridged networking mode
# vboxpci
Ne pas oubliez d'activer la virtualisation dans le bios (VT-x, AMD-V, hardware-V)

Activer la virtualistion dans le bios

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

Activez l'usb

Bash.svg
# ajout de l'utilisateur courant au groupe vboxusers
sudo gpasswd -a $USER vboxusers
Redémarrer pour que la modification du groupe soit prise en compte.
Pour l'USB 2, il faut en plus installer l'Extension Pack

Installer l'Extension Pack

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

Guests

64 bits

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

URL

Manuel utilisateur (anglais)