Instalar Debian en una máquina virtual en FreeBSD 13.1 bhyve
Levantar (up) el dispositivo de túnel tap por defecto, agregando la siguiente línea al archivo /etc/sysctl.conf
echo "net.link.tap.up_on_open=1" >> /etc/sysctl.conf sysctl net.link.tap.up_on_open=1
Firewall reglas pf
# Reglas para vm bhyve pass in quick on bridge0 all keep state pass in quick on tap0 all keep state pass out quick on bridge0 all keep state pass out quick on tap0 all keep state
Reiniciar pf
service pf restart
Cargar el controlador como módulo en el momento del arranque
# /boot/loader.conf 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
Crear un bridge
ifconfig bridge create bridge0
Añadir como miembro del puente la interfaz em0
ifconfig bridge0 addm em0
Cambiar el nombre de la interfaz bridge0
ifconfig bridge0 name em0bridge em0bridge
Activar la interfaz
ifconfig em0bridge up
Crear una nueva interfaz de tap de nombre tap0
ifconfig tap0 create
Agregar la interfaz a em0bridge0
ifconfig em0bridge0 addm tap0
Activar la interfaz tap0
ifconfig tap0 up
Habilitar los dispositivos de red para su arranque automático
# byhve /etc/rc.conf cloned_interfaces = "bridge0 tap0" ifconfig_bridge0_name = "em0bridge" ifconfig_em0bridge = "addm em0 addm tap0 up"
Crear un volumen de 20 Gb zfs
zfs create -V20G -o volmode=dev zroot/debianvm
Descargar la imagen debian-11.4.0
cd /tmp/ wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.4.0-amd64-netinst.iso
Instalar paquetes necesarios y sus dependencias
pkg install grub2-bhyve bhyve-firmware
New packages to be INSTALLED: bhyve-firmware: 1.0_1 edk2-bhyve: g202202_1 grub2-bhyve: 0.40_8 uefi-edk2-bhyve-csm: 0.2_3,1
Instalar la VM debian 11.4.0 bajo FreeBSD
bhyve -c 4 -m 1G -w -H \ -s 0,hostbridge \ -s 3,ahci-cd,/tmp/debian-11.4.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
man bhyve
-m memsize[K|k|M|m|G|g|T|t] Establece el tamaño de la memoria física del huésped
-H: sistema de archivos host para exportar al cargador
-l: el cargador del sistema operativo que se utilizará - uefi
-s: configure una ranura PCI virtual y otras funciones, como disco duro, cdrom y otros dispositivos.
-c Número de CPUs virtuales invitadas y/o la topología de la CPU. El valor por defecto de para cada uno de numcpus, sockets, cores y hilos es 1
-W Forzar las emulaciones de dispositivos PCI de virtio para que usen las interrupciones MSI en lugar de las interrupciones MSI-X.
-l lpcdev,conf Permite configurar los dispositivos detrás del puente LPC PCI-ISA. Los únicos dispositivos soportados son los de clase TTY com1, com2, com3 y com4
-l help Imprimir una lista de dispositivos LPC soportados.
bhyve -l help bootrom com1 com2 com3 com4 pc-testdev
-s help Imprimir una lista de dispositivos PCI soportados.
bhyve -s help ahci ahci-hd ahci-cd e1000 dummy hda fbuf amd_hostbridge hostbridge lpc nvme passthru virtio-9p virtio-blk virtio-console virtio-net virtio-rnd virtio-scsi uart xhci
Instalar un cliente vnc
pkg install tigerviewer
Script que inicia la vm debian
#!/bin/sh # 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/local/share/uefi-firmware/BHYVE_UEFI.fd debianvm
Llegados a este punto accedemos al instalador de Debian 11 Linux, iniciando la máquina virtual y el cliente VNC TigerVnc viewer. Escriba la dirección del servidor y el puerto, en mi caso
192.168.88.51:5900
clic en Conectar para empezar con la instalación
Al finalizar la instalación haga clic en Retroceder y
ejecute un shell para instalar el cargador de arranque uefi
sino la vm no se iniciará y eso no es lo que quiere
Ejecutar un shell
Crear el directorio BOOT
mkdir /target/boot/efi/EFI/BOOT/
Copiar grubx64.efi a /targe/boot/efi/EFI/BOOT/bootx64.efi
cp /target/boot/efi/EFI/debian/grubx64.efi /target/boot/efi/EFI/BOOT/bootx64.efi exit
Terminar la instalación
Continuar
Iniciar la vm debian
Usando un script para iniciar la VM
#!/bin/sh bhyve -c 4 -m 1G -w -H \ -s 0,hostbridge \ -s 3,ahci-cd,/tmp/debian-11.4.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
chmod +x /usr/home/carlos/scripts/startdebian.sh cd /usr/home/carlos/scripts ./startdebian.sh
Permitir acceso ssh a la vm debian
Archivo de configuracion de ssh /etc/ssh/sshd_conf
PermitRootLogin no AllowUsers carlos@192.168.88.* Reiniciar servicio systemctl restart sshd
Acceder via ssh a la vm debian
% ssh carlos@192.168.88.101 The authenticity of host '192.168.88.101 (192.168.88.101)' can't be established. ED25519 key fingerprint is SHA256:/vYJensJh11xpGCdbwe2pLNGTPtRlkw1y0bsABU3XtE. No matching host key fingerprint found in DNS. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
FreeBSD es genial!.















