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!.
No hay comentarios:
Publicar un comentario