Icon

Partager Envoyer

(Logiciel informatique) FreeBSD hyperviseur

Configurer l'hyperviseur BHyve en remplacement de Virtualbox

BHyve est l'hyperviseur BSD de type 2 disponible depuis la version 10 de FreeBSD (ou FreeNAS 9.10). Il accepte divers systèmes invités, tels que : FreeBSD, NetBSD, OpenBSD, Debian, Ubuntu ou encore Microsoft Windows 10. En outre, il tire parti des systèmes de fichiers ZFS. Au moins deux gestionnaires de machines virtuelles (en ligne de commandes) existent pour BHyve : BMT et iohyve.

Migrer une VM de Virtualbox vers BHyve

Note : pour pouvoir fonctionner, BHyve requiert un processeur supportant une ou plusieurs des technologies suivantes :

Intel® Extended Page Tables (EPT) ou AMD® Rapid Virtualization Indexing (RVI) ou Nested Page Tables (NPT). Les systèmes invités Linux® ou FreeBSD avec plus d'un vCPU requièrent en outre le support de VMX en mode non restreint (UG). (source : [1])

En premier lieu, il faut installer les paquets requis :

pkg inst iohyve qemu-devel grub2-bhyve

(notes : qemu-devel a été remplacé par qemu-tools ; le dernier paquet n'est plus maintenu : il est utilisé pour le démarrage des systèmes invités GNU/Linux)

Stopper la VM existante dans Virtualbox (si elle est lancée), puis convertir son image disque (depuis le format Virtualbox .vdi vers le format brut img) :

qemu-img convert -f vdi -O raw /path/to/virtualbox-disk-image.vdi /path/to/raw-image.img

Si la VM utilise plutôt un disque au format .vhd, vous pouvez le convertir en .vdi auparavant directement avec l'outil VBoxManage de VirtualBox :

VBoxManage clonehd /path/to/virtualbox-disk-image.vhd /path/to/virtualbox-disk-image.vdi --format vdi

Relever la taille exacte du fichier image obtenu, par exemple avec :

ls -al /path/to/raw-image.img

(ex. : 536870912000 pour 500 Go)

Configurer BHyve à l'aide du gestionnaire iohyve :

la commande suivante définit en une ligne le pool de stockage des VMs (un zvol iohyve y sera créé), le chargement automatique des modules requis (vmm) et l'interface réseau qui sera pontée (ici l'agrégat de liens lagg0) pour communiquer avec la VM (par défaut, un pont nommé bridge0 sera créé)

iohyve setup pool=DATA kmod=1 net=lagg0

Créer puis configurer la nouvelle VM BHyve à l'aide du gestionnaire iohyve :

iohyve create leng 536870912000

(où 536870912000 est la taille exacte de l'image disque convertie qui a été précédemment relevée et sera la taille du disque de la VM leng...)

iohyve set leng ram=4GB cpu=1 loader=grub-bhyve os=d8lvm

(...destinée à un OS Linux de type Debian/Ubuntu pourvu de 4 Go de RAM et d'un CPU/core avec un système de fichiers utilisant LVM. Voici les types d'os supportés: openbsd57, openbsd58, openbsd59, openbsd60, openbsd61, netbsd, debian (sans LVM), d8lvm (avec LVM), centos6, centos7 (sans XFS), ubuntu (avec LVM, sinon debian), arch, et custom (non standard). Notez qu'il est inutile de préciser un chargeur (loader) ou un os si l'invité est un système FreeBSD.)

Copier l'image disque précédemment convertie vers le disque de la VM bhyve :

dd if=/path/to/raw-image.img of=/dev/zvol/DATA/iohyve/leng/disk0

(le pool utilisé pour stocker les VMs est ici DATA et le nom de la VM nouvellement créée dans BHyve est leng)

Lister les VMs disponibles avec leur état :

iohyve list

Lancer la VM :

iohyve start leng

Pour activer la configuration au démarrage du système, il suffit pour terminer d'ajouter les lignes suivantes à /etc/rc.conf :

iohyve_enable="YES"
iohyve_flags="kmod=1 net=lagg0"

 

Résoudre les problèmes de démarrage avec grub

Si la VM ne démarre pas, votre schéma de partitions peut être incorrect et/ou poser problème à iohyve.

Pour s'y connecter en console :

iohyve console leng

Dans la console grub, pour lister les partitions :

ls

Selon la syntaxe grub, hd0,1 signifie disque #1, partition #1, équivalent, par exemple, à (hd0,msdos1).

Pour lister le contenu de la partition :

ls (hd0,1)/

Identifiez ainsi votre partition racine, contenant les entrées '/root', '/sbin'... : par exemple, hd0,1.

Puis, si elle diffère, identifiez la partition qui contient les fichiers du noyau (vmlinuz*, initrd*) : par exemple, hd0,2 si /boot est une partition dédiée.

Contrôlez que le système invité démarre bien avec ces informations, en saisissant (encore dans la console grub) :

(Adaptez si nécessaire à votre schéma de partitions)

Une fois le système invité démarré, par précaution, mettez à jour la configuration de grub :

sudo update-grub

Si vous redémarrez la machine virtuelle, cependant, le problème va se reproduire, car le fichier de configuration grub de l'invité n'est pas lu par BHyve/iohyve

Pour y remédier, vous devez créer un fichier grub.cfg spécialement pour BHyve, qui doit être placé directement à la racine de la VM (là où se trouve son fichier device.map). Dans notre exemple :

vim /iohyve/leng/grub.cfg

Ce fichier contiendra :

timeout=30
menuentry 'leng (bhyve)' {
        root=hd0,2
        linux /vmlinuz-4.4.0-131-generic root=/dev/sda1
        initrd /initrd.img-4.4.0-131-generic
}

Notez que les chemins de vmlinuz* et initrd* sont ici relatifs à la racine de hd0,2 (la partition /boot) :

/vmlinuz-4.4.0-131-generic correspond donc bien à /boot/vmlinuz-4.4.0-131-generic sur le système invité

et /initrd.img-4.4.0-131-generic à /boot/initrd.img-4.4.0-131-generic

En outre, le paramètre root=/dev/sda1 indique au système invité que la partition racine se trouve quant à elle sur /dev/sda1 (soit sur la partition #1 du disque #1)

Cela doit correspondre à ce qui a été précédemment relevé ainsi qu'aux informations qui figurent désormais dans le fichier /boot/grub/menu.lst du système invité.

Enfin, pour que le fichier créé soit bien pris en compte par iohyve, il faut veiller à indiquer que le type de système invité est « sur mesure » :

iohyve set os=custom

Pour relancer la VM bloquée sur la console de grub :

iohyve forcekill leng
iohyve start leng

Ressources externes

Installation et configuration (FreeBSD Handbook) : https://www.freebsd.org/doc/handbook/virtualization-host-bhyve.html

Ms Windows 10 comme système invité : https://www.ateamsystems.com/tech-blog/howto-windows-10-bhyve-w-freebsd-11/

iohyve - FreeBSD bhyve manager utilizing ZFShttps://github.com/pr1ntf/iohyve

BMT - BHyve Management tool sur Github (a-team systems) : https://github.com/ateamsystems/bmt

FreeNAS - Migrating from Virtualbox to BHyve : https://mikusa.blogspot.com/2017/01/freenas-migrating-from-virtualbox-to.html

et https://blog.yuo.be/2017/01/04/migrating-a-vm-from-virtualbox-to-iohyve-bhyve-on-freenas-9-10/

Grub et iohyve : http://kflu.github.io/2020/04/08/2020-04-08-freebsd-bhyve/ ; https://www.truenas.com/community/threads/iohyve-bhyve-setup-questions-regarding-ubuntu-and-arch-vms.49343/

BHyve, UEFI and Grub : https://www.davidschlachter.com/misc/freebsd-bhyve-uefi-shell

nature de lélément:
hyperviseur
site officiel:
système dexploitation:
FreeBSD


Ce document a été publié le 2019-07-30 23:26:10. (Dernière mise à jour : 2024-06-18 14:33:39.)




This website uses 'cookies' to enhance user experience and provide authentification. You may change which cookies are set at any time by clicking on more info. Accept
x