Tutoriales

Cómo instalar Linux VM en FreeBSD usando bhyve y ZFS

Bhyve («hipervisor BSD») es un hipervisor regalado y de código amplio para FreeBSD. Podemos usar Bhyve para ejecutar Linux, Windows y el sistema activo invitado * BSD como una máquina potencial. Veamos cómo instalar Linux VM usando Bhyve en el sistema activo host FreeBSD unido con ZFS y redes en puente.



Cómo instalar Linux VM en FreeBSD usando bhyve

Nuestra configuración de muestra es la sucesivo:

El nombre de nuestra interfaz de red es em0 con IP estática. Crearemos un puente de red llamado em0bridge, que actuará como enlace dialéctico entre dos o más redes que utilizan el mismo formato de trama. Crearemos una nueva interfaz de toque para cada VM y la adjuntaremos a nuestra VM. A continuación, esa interfaz de tap se agregará a em0bridge. Crear una máquina potencial en bhyve es configurar el sistema host FreeBSD implica varios pasos. Baste de teoría. Ensuciemos nuestras manos con órdenes reales.

Paso 1: haz que el dispositivo de toque ARRIBA de forma predeterminada

Anualidad la sucesivo entrada al /etc/sysctl.conf:
echo "net.link.tap.up_on_open=1" >> /etc/sysctl.conf
sysctl net.link.tap.up_on_open=1

Cuando net.link.tap.up_on_open es 1 / valía dispar de cero, el dispositivo de túnel se marcará como «hacia lo alto» cuando se refugio el dispositivo de control.

Paso 2: carga del kernel de vmm FreeBSD bhyve potencial machine maestro

Utilice el comando kldload para cargar el módulo del kernel de FreeBSD en tiempo de ejecución, ejecute:
kldload vmm
kldload nmdm

Asegúrese de que cargamos el regulador como un módulo en el momento del puesta en marcha:

echo 'vmm_load="YES"' >> /boot/loader.conf
echo 'nmdm_load="YES"' >> /boot/loader.conf
echo 'if_tap_load="YES"' >> /boot/loader.conf
echo 'if_bridge_load="YES"' >> /boot/loader.conf

Paso 3: creación de un puente y un dispositivo de derivación

Cree un nuevo puente, ejecute:
ifconfig bridge create
Agregue la interfaz denominada em0 como miembro del puente. La interfaz se pone en modo promiscuo para que pueda percibir todos los paquetes enviados en la red:
ifconfig bridge0 addm em0
Establezca el nombre de la interfaz en em0bridge para allanar la identificación:
ifconfig bridge0 name em0bridge
ifconfig em0bridge up

Finalmente, cree una nueva interfaz de tap convocatoria tap0 y agréguela al em0bridge:
ifconfig tap0 create
ifconfig em0bridge addm tap0

Asegúrese de configurar y activar los dispositivos de red para que se inicien automáticamente en el archivo /etc/rc.conf:

# byhve and jail settings bridges 
cloned_interfaces="bridge0 tap0"
ifconfig_bridge0_name="em0bridge"
ifconfig_em0bridge="addm em0 addm tap0 up"

Paso 4: creación de volúmenes ZFS para Linux bhyve guest / VM

ZFS nos brinda un rendimiento significativo sobre la imagen de disco. Podemos realizar fácilmente otras operaciones, como clonación y copias de seguridad. Por lo tanto, voy a crear un bulto de 20 GB de la sucesivo guisa:
zfs create -V20G -o volmode=dev zroot/debianvm

Paso 5: descarga de la imagen iso del instalador de Debian Linux

Utilice el comando wget para descargar la imagen. Alternativamente, asimismo podemos usar curl para descargar la imagen:
cd /tmp/
wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.7.0-amd64-netinst.iso

Paso 6: instale el soporte de Grub para bhyve en FreeBSD

GNU / GRUB es un cargador de puesta en marcha de puesta en marcha múltiple y se recomienda para invitados de Linux. El sucesivo paquete nos permite ejecutar el binario grub-bhyve. En otras palabras, nos permite provenir sistemas operativos invitados que no son de FreeBSD, como Debian o Ubuntu Linux.
pkg install grub2-bhyve

Paso 7: instalación de Linux VM en FreeBSD

Ahora todo está en su empleo. Es hora de instalar la VM Debian Linux 10.x actual en FreeBSD usando el comando bhyve:
bhyve -c 1 -m 1G -w -H
-s 0,hostbridge
-s 3,ahci-cd,/tmp/debian-10.7.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/tópico/share/uefi-firmware/BHYVE_UEFI.fd
debianvm

Comprender las opciones de la rasgo de comandos de bhyve:

  • -C : número de cpus virtuales
  • -H : sistema de archivos del host para exportar al cargador
  • -l : el cargador del sistema activo a utilizar (uefi es necesario para sistemas operativos que no sean FreeBSD, como invitados de Linux / Windows)
  • -metro : RAM / tamaño de memoria para VM
  • -w : ignorar los MSR no implementados
  • -s : Configure una ranura PCI potencial y otras funciones como disco duro, cdrom y otros dispositivos

Obtener ayuda asimismo es comprensible:
man bhyve
bhyve -s help
bhyve -l help

Una nota sobre el cliente VNC:

Para lograr al instalador de Debian 10 Linux, refugio su cliente VNC y escriba server_IP: 5900. Por ejemplo:

Uso del cliente VNC para lograr al instalador de Debian 10 desde mi escritorio Ubuntu Linux

Y Voilà, nos besalamano el instalador de Debian 10:

Instalador de VM Linux Debian 10 ejecutándose en FreeBSD bhyve host

Ahora todo lo que tiene que hacer es seguir el instalador hasta impresionar a la pantalla de reinicio de Linux. Necesitamos hacer un ajuste manual al cargador de puesta en marcha Debian 10 VM en FreeBSD. De lo contrario, terminaremos sin provenir Debian 10 bhvye VM. No queremos eso, ¿verdad? Clickea en el Regresa yema:

Asegúrese de desplazarse alrededor de debajo y designar «Ejecutar un shell”Y haga clic en la opción“Continuar» yema:

Escriba el sucesivo comando mkdir y [nixmcd name=”cp”]:
mkdir /target/boot/efi/EFI/BOOT/
# copy file - workaround for bhyve grub package #
# Pay attention to destination file bootx64.efi #

cp /target/boot/efi/EFI/debian/grubx64.efi /target/boot/efi/EFI/BOOT/bootx64.efi

Y hemos terminado de arreglar GRUB. Escriba el comando «salir» para retornar al menú de instalación:
exit

Asegúrese de finalizar la instalación y reiniciar Debian 10 bhvye VM:

Paso 8 – Comienzo Deiban 10 Linux bhvye VM en FreeBSD

Posteriormente de instalar una máquina potencial Debian 10, reiniciamos la máquina potencial y forzamos a bhyve a salir. Por lo tanto, la instancia de la máquina potencial debe destruirse antaño de que pueda iniciarse nuevamente:
bhyvectl --destroy --vm=debianvm
Finalmente, inicie la máquina potencial Debian 10 y disfrute de los frutos de nuestro trabajo:
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/tópico/share/uefi-firmware/BHYVE_UEFI.fd
debianvm

Debian 10 arrancó con éxito bajo FreeBSD bhyve sin problemas de puesta en marcha UEFI

Paso 9: inicio de la máquina potencial Bhyve Debian 10 en el puesta en marcha

Cree un script de shell simple de la sucesivo guisa:

#!/bin/sh
# Name: startdebianvm
# Purpose: Simple script to start my Debian 10 VM using bhyve on FreeBSD
# Author: Vivek Gite {https://www.cyberciti.biz} under GPL v2.x+
-------------------------------------------------------------------------
# Lazy failsafe (not needed but I will leave them here)
ifconfig tap0 create
ifconfig em0bridge addm tap0
if ! kldstat | grep -w vmm.ko 
then
	kldload -v vmm
fi
if ! kldstat | grep -w nmdm.ko
then
	kldload -v nmdm
fi
bhyve -c 1 -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 
-s 30,xhci,tablet 
-s 31,lpc -l com1,stdio 
-l bootrom,/usr/tópico/share/uefi-firmware/BHYVE_UEFI.fd 
debianvm

Ejecútelo usando cron job. Podemos ejecutar el trabajo cron posteriormente de reiniciar el sistema:
@reboot /path/to/startdebianvm

Resumiendo

Eso es todo por ahora. Espero que disfrutes este tutorial. La próxima vez hablaremos sobre la configuración de NAT del firewall, el proxy inverso y las imágenes en la estrato. Los puertos de FreeBSD asimismo tienen muchas herramientas de agencia de Bhyve. Asegúrese de consultar la página del manual y el capítulo del manual asimismo:
man 8 bhyve

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba