bhyve pour virtualiser une machine Debian
Pour démarrer la nouvelle année, j'ai pas trouvé mieux à faire que de me lancer dans la virtualisation sous FreeBSD avec bhyve. Ci-dessous, un petit guide qui reprend en partie les lignes du manuel de FreeBSD.
Les instructions sont à exécuter en tant que root
.
Préparation de l'hôte
Création des répertoires
mkdir -p /bhyve/{vm,iso}
Charger les modules noyau nécessaires à bhyve
kldload nmdm vmm
Création de l'interface tap0
pour connecter le périphérique réseau virtuel de
la VM.
kldload if_tap
ifconfig tap0 create
sysctl net.link.tap.up_on_open=1
Création d'un pont réseau bridge0
ayant pour membres l'interface tap0
et l'interface physique. Dans cet exemple, l'interface physique est em0
.
kldload if_bridge
ifconfig bridge0 create
ifconfig bridge0 addm em0 addm tap0
ifconfig bridge0 up
Persistance
sysrc -f /boot/loader.conf nmdm_load=YES
sysrc -f /boot/loader.conf vmm_load=YES
sysrc -f /boot/loader.conf if_tap_load=YES
sysrc -f /boot/loader.conf if_bridge_load=YES
sysrc cloned_interfaces+="bridge0 tap0"
sysrc ifconfig_bridge0="addm em0 addm tap0"
echo 'net.link.tap.up_on_open=1' >> /etc/sysctl.conf
Créer une VM Debian
- Nom d'hôte :
exemple
- Mémoire :
1024M
- Système d'exploitation : Debian GNU/Linux Stretch
- Image d'installation :
debian-9.6.0-amd64-netinst.iso
Préparation
Prérequis
mkdir -p /bhyve/vm/exemple
pkg inst grub2-bhyve
Récupération de l'image d'installation
cd /bhyve/iso
fetch https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.6.0-amd64-netinst.iso
Création du disque virtuel
cd /bhyve/vm/exemple
truncate -s 16G disk.img
Création de la carte des périphériques
edit /bhyve/vm/exemple/device.map
(hd0) /bhyve/vm/exemple/disk.img
(cd0) /bhyve/iso/debian-9.6.0-amd64-netinst.iso
Installation du système
Charger le noyau Linux depuis l'image d'installation
grub-bhyve -m /bhyve/vm/exemple/device.map -r cd0 -M 1024M exemple
La commande ci-dessus démarre Grub. Si l'image d'installation contient un fichier grub.cfg
, un menu devrait apparaître. Si ce n'est pas le cas, les fichiers vmlinuz
et initrd
doivent être localisés et chargés manuellement.
grub> ls
grub> ls (cd0)/isolinux
grub> linux (cd0)/isolinux/vmlinuz
grub> initrd (cd0)/isolinux/initrd.img
grub> boot
Sélectionner l'option d'installation dans le menu Grub. L'invite de commande de
FreeBSD devrait réapparaître.
Démarrer la VM et l'installation du système
bhyve -A -H -P \
-s 0:0,hostbridge \
-s 1:0,lpc \
-s 2:0,virtio-net,tap0 \
-s 3:0,virtio-blk,/bhyve/vm/exemple/disk.img \
-s 4:0,ahci-cd,/bhyve/iso/debian-9.6.0-amd64-netinst.iso \
-l com1,stdio -c 1 -m 1024M exemple
Après l'installation du système, un redémarrage de la machine est nécessaire et
cela va entraîner la sortie de bhyve.
L'instance de la VM doit être détruite avant de redémarrer à nouveau
bhyvectl --destroy --vm=exemple
Démarrage
À présent la VM peut être démarrée directement depuis le disque virtuel. À
nouveau, il faut avant tout charger le noyau.
grub-bhyve -m /bhyve/vm/exemple/device.map -r hd0,msdos1 -M 1024M exemple
Sélectionner le noyau à lancer dans le menu Grub. L'invite de commande de
FreeBSD devrait réapparaître.
Démarrer la VM
bhyve -A -H -P \
-s 0:0,hostbridge \
-s 1:0,lpc \
-s 2:0,virtio-net,tap0 \
-s 3:0,virtio-blk,/bhyve/vm/exemple/disk.img \
-l com1,stdio -c 1 -m 1024M exemple
L'invite de commande de la VM devrait apparaître.
Arrêt
Pour arrêter la VM, il suffit d'ordonner son arrêt à l'aide de poweroff
ou
reboot
, puis, détruire son instance.
bhyvectl --destroy --vm=exemple
Liens utiles
Tags : unix freebsd bhyve virtualisation