---
title: Howto vmm
categories: virtualisation openbsd
---

OpenBSD intègre un système de virtualisation (écrit from
scratch). Celui est encore largement en cours de développement, cette
documentation est susceptible de se retrouver obsolète par moment.

Avoir des VM peut être intéressant pour faire un lab réseau sur sa
machine de travail.

# Documentation

* <http://man.openbsd.org/OpenBSD-current/man4/vmm.4>
* <http://man.openbsd.org/OpenBSD-current/man5/vm.conf.5>
* <http://man.openbsd.org/OpenBSD-current/man8/vmd.8>
* <http://man.openbsd.org/OpenBSD-current/man8/vmctl.8>

# Support matériel

Il faut que le processeur supporte la virtualisation et que celle ci
soit activée dans le bios/efi.

Par exemple si celle-ci n'est pas activée dans le bios :

~~~
$ dmesg | grep vm
vmm disabled by firmware
vmm at mainbus0 not configured
~~~

~~~
$ dmesg | grep vm
vmm0 at mainbus0: VMX/EPT
~~~

# Mise en place

Vmd utilise un fichier de conf (*/etc/vm.conf*).

~~~
# cp /etc/examples/vm.conf /etc/vm.conf
# vim /etc/vm.conf
~~~

On définit dans la conf l'emplacement des sets que l'on va
télécharger. Ensuite on définit un switch (pour le réseau) et enfin la
ou les vm.

Il est nécessaire de créer un disque par VM :

~~~
# vmctl create "/home/vm/OpenBSD.img" -s 4G
~~~

Pour télécharger les sets :

~~~
$ cd /var/www/sets/
$ wget --no-parent -r https://ftp.openbsd.org/pub/OpenBSD/snapshots/amd64/*
~~~

On peut activer et démarrer vmd

~~~
# rcctl enable vmd
# rcctl start vmd
~~~

Si on a activé une vm, on peut la voir :

~~~
# vmctl status
   ID   PID VCPUS    MAXMEM    CURMEM              TTY NAME
    1 88909     1    1024MB     169MB       /dev/ttyp7 vm.evolix.net
~~~

Enfin on peut prendre un shell (pour procéder à l'installation). Cela utilise cu(1) donc si jamais on veut quitter : `<entrée> puis ~.`

~~~
# vmctl console 1
Connected to /dev/ttyp7 (speed 9600)

(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?
~~~

Lorsqu'on a installé, on peut copier le disque de la vm et utiliser la copie pour une autre VM pour ne pas avoir à faire une deuxième installation.

## Réseau

Pour le réseau, en wifi il faut faire du NAT car on ne peut pas
bridger l'interface wifi à cause d'une limitation dans le standard
802.11.

Pour faire cela, le mieux est de passer par une interface
vether0.... à compléter.
