Catnoo
Notes de paramétrage de postes de travail, et autres vicissitudes ...

Accueil > Virtualisation > virtualbox - options de configuration d’une VM

virtualbox - options de configuration d’une VM

jeudi 24 août 2017, par Lucien-Henry

Explications de choix

Système Carte-mère
Mémoire vive

Ordre d’amorçage

Chipset : PIIX3

Chipset : ICH9
Nécessite d’avoir les IO-APIC activés pour être employé. On peut ne pas l’activer si les IO-APIC sont activés, mais ... c’est perdre des performances si on ne l’active pas.

Système de pointage : Souris PS/2

Système de pointage : Tablette USB

Système de pointage : Tablette USB Multi-Touch

Fonctions avancées : Activer les IO-APIC
IO-APIC est obligatoire pour les Windows 8,10 et MacOSX.
IO-APIC est l’acronyme de I/O Advanced Programmable Interrupt Controller, qui est un contrôleur programmable d’interruptions. C’est une architecture Intel pour gérer les interruptions dans les ordinateurs multiprocesseurs.
Ce peut être une cause de défaillance du système, car certaines versions de certains systèmes d’exploitation ne le gèrent pas correctement. Si c’est le cas, la désactivation du IO-APIC peut régler le problème. Pour Linux, il faut essayer le paramètre noyau "noapic" ; pour FreeBSD, la variable d’environnement noyau "hint.apic.0.disabled"
Dans Linux, les problèmes avec IO-APIC sont une des nombreuses causes de messages d’erreur concernant "spurious 8259A interrupt : IRQ7.". Il est aussi possible que l’IO-APIC cause des lenteurs lors des copies entre médias différents (disque dur à clef USB par exemple) ou des problèmes avec les interfaces réseau basées sur le pilote via-rhine, causant un dépassement de délai de transmission. Les noyaux monoprocesseurs avec l’APIC activée peut provoquer la génération d’interruptions spécieuses. Ce mécanisme est intéressant pour la conception de systèmes temps réel ou l’on veut éviter d’interroger inutilement un périphérique pour savoir si c’est lui qui vient de générer l’interruption : si les interruptions ne sont pas partagées, lorsque l’on reçoit un numéro d’interruption donné, on sait en effet immédiatement quel périphérique a signalé cette interruption, ce qui réduit la latence et augmente le déterminisme de son traitement.
Donc, si on comprend bien, les IO-APIC ne sont bien sous VirtualBox que si on veut mettre plusieurs processeurs dans la machine virtuelle, et il vaut mieux les éviter sinon.

Système Processeur
Nombre de processeurs

Ressources allouées

Fonctions avancées : Activer PAE/NX
Extension Adresse Physique, que le cpu hote a cette capacité, certains os l’utilisent pour accelerer (partie de la ram peu occupée car situé au-dela de la limite des 3...go)
L’option PAE/NX permet de pouvoir allouer plus de 4Go de ram à un OS 32bits virtualisé sur une machine disposant de davantage de RAM.
Il faudra donc activer le mode PAE dans la machine virtuelle, autant sous Linux que sous Windows (le dit mode PAE qui ne sert plus à rien à partir de Windows 8).
En résumé ... si on coche Activer PAE/NX pour bénéficier du mode PAE :

  • pour une machine virtuelle en 64bit ... ça ne sert à rien.
  • ce n’est utile pour une machine virtuelle
    • en 32 bit
    • qui a plus de 3 Go de mémoire vive allouée
    • dont le mode PAE a été activé à l’intérieur des paramétrage du système d’exploitation hébergé Le NX Bit ou bien XD bit, pour No eXecute, est une technique utilisée dans les processeurs pour dissocier les zones de mémoire contenant des instructions, donc exécutables, des zones contenant des données. Ceci permet de faire de la protection d’espace exécutable protégeant le système des virus et chevaux de Troie utilisant les failles de dépassement de tampon. icrosoft gère cette technologie depuis Windows XP Service Pack 2 et Windows Server 2003 SP1 via la fonctionnalité Data Execution Prevention (DEP). Ce mécanisme a été remanié sous Windows Vista, et connaît une nouvelle révision avec Windows 8. Enfin, il est devenu obligatoire pour exécuter Windows 10.
  • Hormis pour une machine virtuelle sous Windows 10, ça ne sert pas à grand chose.

Système Accélération
Interface de paravirtualisation : aucun

Interface de paravirtualisation : par défaut

Interface de paravirtualisation : Héritage

Interface de paravirtualisation : Minimale

Interface de paravirtualisation : Hyper-V

Interface de paravirtualisation : KVM

Virtualisation matérielle : Activer VTx/AMD-V
Intel-VT et AMD-V, ce sont des fonctions matérielles de prise en charge de virtualisation. C’est indispensable pour virtualiser correctement un Windows. On trouve cela sur les processeurs à 3 ou 4 coeurs récents.
Intel VT et AMD-V sont des technologies de virtualisation. Elles ont été développées par intel et AMD pour faire un semblant de paravirtualisation avec des systèmes non modifiés (et non modifiables) comme Windows par exemple.
Pour rappel, la paravirtualisation permet de faire communiquer les systèmes virtualisés directement avec l’hyperviseur sans passer par la couche drivers que necessite des solutions comme VMware workstation ou virtualbox.
Les paravirtualiseurs les plus connus sont KVM et Xen (de citrix).
Pour les connaisseurs, intel-VT et AMD-V simulent l’installation de l’hyperviseur sur un "ring -1" pour laisser place aux guest OS sur le ring 0. Windows qui ne peut tourner que sur un ring 0 n’y voit que du feu.
Pour les processeurs Intel, une autre fonction matérielle "Virtual Processor Identifiers" peut beaucoup accélérer le changement de contexte en réduisant le besoin coûteux de mémoriser les Translation Lookaside Buffers (TLBs) du processeur. Pour activer ces fonctions pour une VM, vous devez utiliser les commandes : VBoxManage modifyvm —vtxvpid et —largepages

VBoxManage modifyvm --vtxpid on
\VirtualBox VMs\eb-pc0ke4yn-01>"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm eb-pc0ke4yn-01 --vtxvpid on --largepages on

L’option concerne Activer Vt-x /AMD-V imbriqué, en anglais le nom est nested virtualisation. Cette option permet "d’ajouter" le drapeau vmx (pour les processeurs Intel digne de ce nom) ou le drapeau svm (pour les processeurs amd digne de ce nom) à la machine invitée afin que le système d’exploitation puisse se comporter comme un hyperviseur de type 1. En réalité, la virtualisation imbriquée ne fonctionne que certains processeurs AMD et Oracle, la société qui gère VirtualBox, aurait pu rayer la mention VT-x, représentée par le drapeau vmx, afin de ne pas ajouter de la confusion. Un moyen pour tenter l’utilisation de la nested virtualization est d’employer l’option —nested-hw-virt de VBoxManage modifyvm. Une fois —nested-hw-virt déclaré, la case est dégrisée et cochée dans l’onglet Système / Processeur.

VBoxManage modifyvm --vtxpid on
\VirtualBox VMs\eb-pc0ke4yn-01>"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm eb-pc0ke4yn-01 --vtxvpid on --largepages on --nested-hw-virt on

Virtualisation matérielle : Activer la pagination imbriquée
La pagination imbriquée élimine la charge causée par les sorties de VM et les accès aux tables de pages. Elle améliore ainsi substantiellement les performances de virtualisation. Sur les processeurs AMD, on l’appelle la "rapid virtualization indexing" (RVI) et Intel appelle la "extended page tables" (EPT).
Si la pagination imbriquée est activée, l’hyperviseur de VirtualBox peut également utiliser de grandes pages pour réduire l’utilisation du TLB et la charge avec une amélioration jusqu’à 5% des performances. Pour activer cette fonctionnalité pour une VM, vous avez besoin d’utiliser la commande :

VBoxManage modifyvm --largepages on
\VirtualBox VMs\eb-pc0ke4yn-01>"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm eb-pc0ke4yn-01 --largepages on

Affichage : Ecran
contrôleur Graphique VBoxVGA
This emulates a graphics adapter specific to VirtualBox, the same as in previous versions (<6.0.0). This is the default for images created for previous versions of VirtualBox (<6.0.0) and for Windows guests before Windows 7. It has some form of 3D passthrough, but – if I remember correctly – uses an insecure approach that just lets the guest dump any and all commands to the host GPU. Using it on a Linux guest requires installing the guest additions because this adapter is not (yet) supported by the mainline Linux kernel. Only supports OpenGL 1.1 on 64bit Windows 10 and all Linux guests.
This option likely exists just to provide continuity – after upgrading to 6.0, all old VMs have this mode selected automatically so there’s no unexpected change in behavior ; you don’t lose whatever acceleration you previously had.
contrôleur Graphique VMSVGA
This emulates the VMware Workstation graphics adapter with the "VMware SVGA 3D" acceleration method.
Contrary to what the manual says, this is currently the default for Linux guests.
It is supposed to provide better performance and security than the old method.
This is supported by the mainline Linux kernel using the SVGA driver.
Supports OpenGL 2.1 on all Windows and Linux guests.
It might also have the advantage of supporting old operating systems which had VMware guest additions available but not VirtualBox guest additions. (I plan to test this with Windows 9x, which is otherwise a massive pain to get even VESA graphics working with VirtualBox)
contrôleur Graphique VBoxSVGA
This provides a hybrid device that works like VMSVGA (including its new 3D acceleration capabilities), but reports the same old PCI VID:PID as VBoxVGA.
This is the default for Windows guests.
The advantage of this mode is that you can upgrade existing VMs (which previously used VBoxVGA and had the VirtualBox Video driver installed) and they don’t lose their graphics in the process – they still see the same device, until you upgrade the "guest additions" at any later time to enable 3D acceleration.
Also, because it’s still VMware SVGA emulated by VirtualBox, choosing this option and using the VirtualBox driver may still have advantages over the VMware one, e.g. allow to make use of VirtualBox-specific additional features.
contrôleur Graphique "None"
This is, obviously, no emulated graphics at all. Only use it if you provide a real GPU via PCI passthrough, or if your system absolutely doesn’t need a GPU.

En résumé : VBoxSVGA mieux que VMSVGA, mieux que VBoxVGA (par défaut), mieux que rien ...

Spécificités sous Windows 10

Désactiver Hyper-V :

  • Lancer appwiz.cpl
  • Désactiver des fonctionnalités Windows : Hyper-V (et sous-arborescence) Sur Virtualbox, lorsque la fonction VT-X est activée dans le logiciel mais pas sur le PC hôte, cela peut donner l’erreur :
  • Not in a hypervisor partition (HVP=0) (VERR_NEM_NOT_AVAILABLE).
  • AMD-V is disabled in the BIOS (or by the host OS) (VERR_SVM_DISABLED) Il faut désinstaller Microsoft Hyper-V via un cmd.exe en mode administrateur : dism.exe /Online /Disable-Feature:Microsoft-Hyper-V Puis réaliser les manipulations suivantes :
    mountvol X: /s copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
    bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
    bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
    bcdedit /set hypervisorlaunchtype off mountvol X: /d

Redémarrer l’ordinateur.
Un message Credential Guard Opt-out tool s’affiche alors pour demander si on souhaite le désactiver.
Appuyez sur F3 afin de le désactiver.
De même pour Hyper-V.
Activer VT-x et AMD-V :

  • Virtualbox, dans une machine virtuelle : Système / Onglet Processeur / Activer VT-x/AMD-V imbriqué). Activer VT-x et AMD-V sur VMware
  • VMware, le message VMware and Device/Credential Guard are not compatible disparaît et vous pouvez démarrer une machine virtuelle. Enfin dans les propriétés de la VM et Processus, cochez Virtualize Intel VT-x/EPT or AMD-V/RVI.

Groupes spécifiques sous Linux

Ajouter l’utilisateur en cours aux utilisateurs ayant droit aux spécificités de VirtualBox

sudo usermod -a -G vboxusers $USER
sudo usermod -a -G vboxsf "$USER"
groups $USER

Méthodes de lancement des machines

Lancement en ligne de commande sans aucune interface graphique
Via l’interface VirtualBox, créer un raccourcis sur le bureau, et dans la "Cible" de l’onglet Raccourci de ce raccourci, modifier la commande par :
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "{51cb5f93-71cf-4900-9189-62379a038adf}" --type headless
Cette ligne de commande peut être lancée depuis n’importe où via l’invite de commande (pas besoin de se trouver dans le répertoire de la machine virtuelle) car on la machine est identifiée via son uuid.

Lancement en ligne de commande
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "{51cb5f93-71cf-4900-9189-62379a038adf}"

Lancement au démarrage
Créer un raccourci sur la machine virtuelle à lancer au démarrage de l’utilisateur et le modifier comme ci-dessus.
Sous Windows, accéder au répertoire de lancement des applications au démarrage en ouvrant la case "Exécuter" (Win + R) et en entrant shell:startup.
Y copier le raccourci.

Lancement depuis le systray
Télécharger l’application vboxheadlesstray.

Liens divers

PAE/NX
Option VM sous Ubuntu
Extension Adresse Physique / Mode PAE
Mode NX
Les IO/APIC
Doc VirtualBox VRAIMENT A LIRE
VBoxVGA VMSVGA VBoxSVGA
Activer Vt-x /AMD-V imbriqué
vboxuser et vboxsf
VirtuaBox headless-
VirtualBox sans interface graphique
Comment activer la technologie de virtualisation (VT-x et AMD-V) sur mon PC
Comment activer la virtualisation Intel VT-x/EPT ou AMD-R/RVI dans VirtualBox ou VMware

SPIP | | Plan du site | Suivre la vie du site RSS 2.0
Habillage visuel © digitalnature sous Licence GPL