Lamentablemente Hetzner retiró el soporte oficial para la instalación de FreeBSD hace ya algún tiempo, pero esperemos que en el futuro vuelvan a incluirlo visto el auge y soporte que cada vez mas está teniendo este formidable SO de la familia BSD.
Afortunadamente existen varias opciones para poder instalar FreeBSD en los dedicados Hetzner que utilizo por sus ventajosos precios sobre todo para servidores de Backups donde brilla enormemente FreeBSD con su perfecta integración y soporte nativo de ZFS. Por ejemplo:
- bsdinstall/zfsinstall a través de depenguin.me
- Guía de la comunidad de Hetzner para instalar FreeBSD desde Linux Rescue: OpenZFS via Linux Rescue
Ambos funcionan perfectamente y los he usado con éxito. Pero esta vez me apetecía experimentar un poco: ¿es posible usar el propio vKVM del Robot para arrancar directamente una ISO de FreeBSD e instalar sin hacks externos?
La respuesta corta: Sí, se puede. Y con muy buen resultado con algunas precauciones.
¿Qué es realmente el vKVM de Hetzner?
Hetzner no ofrece una KVM física real salvo que la solicites y con limitación de tiempo, pero si tiene otro método ingenioso de ofrecer una solución kvm de bajo coste. Se trata de una sesión “virtualizada” que arranca tu «servidor» como un guest dentro de un QEMU temporal, este QEMU/KVM temporal pasa directamente los discos sin virtualizar al guest con lo que te permite de facto (y siempre que el SO no se queje demasiado por el cambio de «hardware» si es una recuperación) una sesión remota KVM «clásica» (perdón por el mix de la palabra KVM para diferentes significados). Para ello utiliza un boot del servidor físico en un debian rescue desde donde se lanza la vm virtualizada y aquí está lo bueno: puedes acceder también por SSH a este «hypervisor» temporal como si fuera un sistema de rescate y relanzar el qemu a tu antojo. Siendo puristas esto mismo podríamos hacerlo desde un boot de rescate clásico pero si ya está todo preconfigurado con el vKVM pues eso que nos ahorramos.
Utilizaremos esta posibilidad de relanzar el vKVM como queramos para la instalación de nuestro FreeBSD con la iso original.
Te recomiendo que eches un vistazo a su FAQ.
Básicamente los pasos serían estos:
1. Preparar ISO de FreeBSD dentro del host vKVM
Activa vKVM desde el Robot de Hetzner y entrar vía SSH al host con los datos proporcionado (el puerto suele ser el 47772). Allí simplemente descargas la ISO que quieras:
cd /root
wget https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/14.3/FreeBSD-14.3-RELEASE-amd64-disc1.iso
2. Modificar el script /opt/vkvm/startqemu
Este es el truco principal. Cada vez que matas el proceso QEMU, el setup de Hetzner vuelve a lanzarlo automáticamente usando este script, así que lo mejor es modificarlo directamente. y así aprovechar el desarrollado realizado por Hetzner optimo para hacer funcionar todo perfectamente a nivel de red, firewall y puertos.
Abre el archivo:
vi /opt/vkvm/startqemu
Verás una línea larga con el comando original de QEMU. Tendrás que prestar atención a ella para añadir por un lado tu ISO descargada y por otro ajustar el orden del boot:
– eliminando «-boot nc» y
– añadiendo: -drive if=none,id=cd0,file=/root/FreeBSD-14.3-RELEASE-amd64-disc1.iso,media=cdrom,format=raw -device ide-cd,bus=ahci0.2,drive=cd0,bootindex=0
Esto te debería dejar algo como (no lo tomes como ejemplo literal):
qemu-system-x86_64 \
-cpu host \
-monitor tcp:127.0.0.1:4444,nowait,server \
-device qemu-xhci \
-device usb-tablet \
-netdev socket,fd=200,id=vnet0 \
-vnc 127.0.0.1:1,websocket=5701 \
-device ahci,id=ahci0 \
-drive if=none,id=disk0,file=/dev/sda,format=raw \
-device ide-hd,bus=ahci0.0,drive=disk0,bootindex=2 \
-drive if=none,id=disk1,file=/dev/sdb,format=raw \
-device ide-hd,bus=ahci0.1,drive=disk1,bootindex=3 \
-drive if=none,id=cd0,file=/root/FreeBSD-14.3-RELEASE-amd64-disc1.iso,media=cdrom,format=raw \
-device ide-cd,bus=ahci0.2,drive=cd0,bootindex=0 \
-smp 12 \
-machine type=q35,accel=kvm \
-m 60083 \
-device virtio-net-pci,netdev=vnet0,mac=XX:XX:XX:XX:XX:XX
Guardalo y «reinicia» QEMU simplemente matándolo:
pkill qemu-system-x86_64
En segundos tendrás el instalador de FreeBSD en vKVM
3. Instalación normal… con una excepción CRÍTICA
La instalación es estándar, salvo por un detalle que te puede dejar el servidor sin red al primer reinicio.
Dentro del instalador, la interfaz de red es vtnet0
Esto es porque QEMU le presenta una NIC VirtIO.
ifconfig -a
vtnet0: flags=8843<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
PERO en el servidor físico real la interfaz será… la real
Para ello tendrás que saber que interfaz de red y driver utiliza tu servidor y localizar el apropiado en FreeBSD. En el ejemplo que nos ocupa se trata de una Intel I219-LM para la que FreeBSD usa el driver em(4).
Si FreeBSD arranca intentando configurar vtnet0… estarás sin red, sin acceso y sin SSH.
Solución: antes de reiniciar, edita /etc/rc.conf con el nombre de interfaz correcto
El instalador creará algo así:
ifconfig_vtnet0="DHCP"
Cámbialo por:
ifconfig_em0="DHCP"
Ahora sí puedes reiniciar sin miedo.
4. Reinicia… y disfruta FreeBSD en hardware real
Una vez salgas del instalador y reinicies (ya sin vKVM), FreeBSD arrancará en el hardware real de Hetzner, usará
tu interfaz Intel (em0) y tendrás tu instalación limpia y 100% FreeBSD.
Conclusión
Este método no sustituye a los otros, es uno mas que pensé utilizar aprovechando lo que ofrece Hetzner y me ha parecido sencillo y cómodo.
Poder ver el QEMU que lanza el propio vKVM, modificarlo y arrancar FreeBSD desde tu propia ISO es muy ventajoso y permite mucho juego.
No despedirme sin agradecer a Hetzner su buen trabajo, aunque por favor: añadid soporte oficial a FreeBSD!