FreeBSD : Virtualisation avec bhyve

Lien :
https://www.cyberciti.biz/faq/how-to-install-linux-vm-on-freebsd-using-bhyve-and-zfs/

1/ Activation de tap.

root@station173:/usr/home/util01 # echo "net.link.tap.up_on_open=1" >> /etc/sysctl.conf
root@station173:/usr/home/util01 # sysctl net.link.tap.up_on_open=1
net.link.tap.up_on_open: 0 -> 1
root@station173:/usr/home/util01 # 

2/ Chargement des modules de machine virtuelle.

root@station173:/usr/home/util01 # kldload vmm
root@station173:/usr/home/util01 # kldload nmdm

3/ Configuration du démarrage des pilotes au démarrage.

root@station173:/usr/home/util01 # echo 'vmm_load="YES"' >> /boot/loader.conf
root@station173:/usr/home/util01 # echo 'nmdm_load="YES"' >> /boot/loader.conf
root@station173:/usr/home/util01 # echo 'if_tap_load="YES"' >> /boot/loader.conf
root@station173:/usr/home/util01 # echo 'if_bridge_load="YES"' >> /boot/loader.conf

4/ Création du pont reseau.

root@station173:/usr/home/util01 # ifconfig bridge create
bridge0

5/ Identication de l'interface réseau de la carte réseau de l'ordinateur.

root@station173:/usr/home/util01 # ifconfig 
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
    ether 18:60:24:72:59:64
    inet6 fe80::1a60:24ff:fe72:5964%re0 prefixlen 64 scopeid 0x1
    inet 192.168.1.28 netmask 0xffffff00 broadcast 192.168.1.255
    inet 192.168.1.221 netmask 0xffffffff broadcast 192.168.1.221
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
    nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
...

6/ Ajouter l'interface réseau r01 au bridge.

root@station173:/usr/home/util01 # ifconfig bridge0 addm re0

7/ Nommer le bridge.

root@station173:/usr/home/util01 # ifconfig bridge0 name re0bridge
re0bridge
root@station173:/usr/home/util01 # ifconfig re0bridge up

8/ Créer une interface tap.

root@station173:/usr/home/util01 # ifconfig tap0 create

9/ Ajouter l'interface tap au bridge.

root@station173:/usr/home/util01 # ifconfig re0bridge addm tap0

10/ Configuation du réseau au démarrage.

Ouvrir :

/etc/rc.conf

Ajouter à la fin :

cloned_interfaces="bridge0 tap0"
ifconfig_bridge0_name="re0bridge"
ifconfig_re0bridge="addm re0 addm tap0 up"

11/ Création d'un volume ZFS.

root@station173:/usr/home/util01 # zfs create -V20G -o volmode=dev zroot/debianvm

12/ Téléchargement de l'image iso de Debian.

root@station173:/usr/home/util01 # wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.5.0-amd64-netinst.iso

13/ Insallation du support Grub pour bhyve sous FreeBSD.

root@station173:/usr/home/util01 # pkg install grub2-bhyve bhyve-firmware

14/ Installation d'une machine virtuelle Linux "Debian".

root@station173:/usr/home/util01 # bhyve -c 1 -m 1G -w -H \
-s 0,hostbridge \
-s 3,ahci-cd,/usr/home/util01/debian-11.5.0-amd64-netinst.iso \
-s 4,virtio-blk,/dev/zvol/zroot/debianvm \
-s 5,virtio-net,tap0 \
-s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \
-s 30,xhci,tablet \
-s 31,lpc -l com1,stdio \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
debianvm

15/ Sur un autre ordinateur, lancement de l'installation de la VM à partir de VNC.

util01@station66:~$ xtightvncviewer 192.168.1.28:5900

Puis commencer l'installation de Debian.

16/ Configuration du démarrage d'une machine virtuelle sous bhyve.

  • A l'étape Finish the installation|Terminer l'installation, cliquer sur le bouton Go Back|Revenir en arrière .

Choisir le menu Execute a shell|Exécuter un shell (ligne de commande) puis Continue|Continuer pour accéder au terminal.

  • Activation du boot :
# mkdir /target/boot/efi/EFI/BOOT/
# cp /target/boot/efi/EFI/debian/grubx64.efi /target/boot/efi/EFI/BOOT/bootx64.efi
  • Sortir du shell :
# exit

17/ Finir l'installaton de Debian.

Choisir le menu Finish the installation|Terminer l'installation puis Continue|Continuer

18/ Détruire l'instance de la machine virtuel "debianvm".

root@station173:/usr/home/util01 # bhyvectl --destroy --vm=debianvm

19/ Relancer la machine virtuelle.

root@station173:/usr/home/util01 # bhyve -c 2 -m 1G -w -H \
-s 0,hostbridge \
-s 4,virtio-blk,/dev/zvol/zroot/debianvm \
-s 5,virtio-net,tap0 \
-s 29,fbuf,tcp=0.0.0.0:5900,w=1024,h=768,wait \
-s 30,xhci,tablet \
-s 31,lpc -l com1,stdio \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
debianvm

20/ Problèmes.

Erreur #1 :

BdsDxe: failed to load Boot0001 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x4,0x0): Not Found

Solution :

  • Accéder l'interface de gestion BHYVE :
Shell> exit
  • Aller dans le Boot Maintenace Manager

  • Sélectionner : Boot From File

  • Sélectionner : NO VOLUME LABEL.

  • Aller dans EFI puis dans BOOT puis sélectionner le fichier bootx64.efi.

  • La machine virtuelle démarre.

bh.png