Tabla de Contenidos

Crear máquinas virtuales en FreeBSD

Yo cada día flipo mas con los nombres psicodélicos que le ponen a estas cosas “Xeon”, “RAID”, “bhyve”. Una locura hermano.

FreeBSD tiene su propio virtualizador que es bastante bueno llamado bhyve. En mi opinión es una cosa que funciona.

Para simplificarnos la vida (porque sinceramente dudo que haya Cristo que se haya aprendido a usar la herramienta bhyve) usaremos un programa llamado vm-bhyve para gestionar nuestras máquinas virtuales. Está escrito en shell y no tiene dependencias.

Genuinamente si consiguies usar vm-bhyve correctamente es que no vas a necesitar Proxmox.

Dicho esto una vez instalado lo único que hay que hacer es seguir las instrucciones que podemos encontrar en el github del proyecto

1. pkg install vm-bhyve
2. zfs create pool/vm
3. sysrc vm_enable="YES"
4. sysrc vm_dir="zfs:pool/vm"
5. vm init
6. cp /usr/local/share/examples/vm-bhyve/* /mountpoint/for/pool/vm/.templates/
7. vm switch create public
8. vm switch add public em0
9. vm iso https://download.freebsd.org/ftp/releases/ISO-IMAGES/14.2/FreeBSD-14.2-RELEASE-amd64-bootonly.iso
10. vm create myguest
11. vm install [-f] myguest FreeBSD-14.2-RELEASE-amd64-bootonly.iso
12. vm console myguest

Básicamente lo instalas, creas un FS de zfs para tus vms, modificas la configuración del sistema para iniciar e indicarle donde están las vms. Lo inicializas con vm init, te copias ejemplos de VMs que ya hay y creas un switch virtual para añadir las VMs a tu red1), descargar una iso e instalarla en un sistema operativo freebsd.

Luego puedes acceder a la consola de texto de la VM pero lo guapo es usar VNC.

Soporte de VNC gráficos

Necesitaras instalar paquetes de firmware de UEFI para que el VNC furule. Desconozco el motivo del por cual se necesita usar UEFI para esto pero es la que hay. Puedes instalarlo con:

pkg install -y edk2-bhyve grub-bhyve2 bhyve-firmware

Total que neceistas modificar la configuración de la vm. Si creamos la VM myguest en el pool pool/vm pues tendriamos que ir a /vm/myguest/myguest.conf y añadir la siguientes lineas:

myguest.conf
graphics="yes"
graphics_listen="0.0.0.0"
graphics_port="5900"

Con esto tendriamos el servidor vnc de la VM en el puerto 5900 de cualquier interfaz de red donde podremos controlarla o hacer lo que queramos.

Comandos básicos de vm

Aquí se ponen los comandos que deberias saber para operar vm. La verdad es que tampoco son demasiados ni son tan complicados. Recuerda que siempre puedes ver la referencia con –help

vm start $VM    # iniciar la vm $VM
vm stop $VM     # parar la vm $VM (ACPI shutdown)
vm poweroff $VM # parar la maquina virtual $VM lo quiera o no
vm restart $VM  # Reiniciar la vm $VM (ACPI reboot)
vm reset $VM    # Reiniciar la vm $VM quiera o no
vm stopall      # Adivina :3
vm startall     # Adivina :3
vm iso $URL	 # descargar iso para posterior instalacion
vm install $ISO $VM # Cargar $ISO en $VM

Creación de una máquina virtual

Por ejemplo, podrias crear una máquina de OpenBSD con el siguiente comando:

vm create -t openbsd -s 25G openbsd1

Esto crearía una máquina virtual llamada openbsd1, por lo cual podriamos iniciar la instalación con el comando:

vm install install76.iso openbsd1

Y arrancará la máquina.

Listar máquinas

Podemos listar las máquinas virtuales que tengamos, encendidas o no, con el comando vm list. Aquí un ejemplo en un sistema que ya tiene unas cuantas:

~ [icarus] % vm list
NAME      DATASTORE  LOADER  CPU  MEMORY  VNC                 AUTO     STATE
debian2   default    uefi    2    4096M   0.0.0.0:5910        Yes [3]  Running (31795)
debian3   default    uefi    1    1024M   0.0.0.0:5911        No       Locked (icarus)
freebsd1  default    uefi    1    1024M   -                   No       Stopped
freebsd2  default    uefi    1    1024M   192.168.1.230:5918  No       Locked (icarus)
netbsd1   default    uefi    1    512M    -                   No       Stopped
openbsd   default    uefi    1    1024m   0.0.0.0:5902        Yes [1]  Running (69932)
openbsd2  default    uefi    4    8192m   192.168.1.230:5916  No       Locked (icarus)
ubuntu1   default    uefi    8    8192M   -                   No       Stopped
ubuntu2   default    uefi    4    8192M   0.0.0.0:5900        Yes [4]  Running (46207)

Podemos ver los puertos VNC, en caso de que los tengamos activos.

¡Felicidades por conseguir montar máquinas virtuales en FreeBSD!

Estrellita pascuera

1)
estarán en la misma interfaz que donde la has puesto, em0 en este caso, si quieres tenerlas aisladas, usa otro switch