“Only two remote holes in the default install, in a heck of a long time!” ist der Claim von OpenBSD. Dementsprechend hattte ich lange meine Firewall mit OpenBSD umgesetzt. Mein Mail-Server läuft auch schon ewig als virtuelle Maschine mit OpenBSD. Sie hat sich auch direkt vom libvirt nach Proxmox migrieren lassen.
Jetzt soll eine neue virtuelle Maschine mit UEFI unter Proxmox installiert werden.
Für OpenBSD 7.3 gibt es ein Tutorial in den Proxmox-Foren leider hat das nicht komplett bei mir funktioniert.
Hier steht wie ich es gelöst habe.
Der Fehlversuch
Die beschriebene Befehlsfolge
qm create 110\
--name obsd-uefi \
--agent 1,type=isa\
--memory 2192 \
--bios ovmf \
--machine q35 \
--sockets 1 --cores 2 \
--cpu kvm64 \
--net0 virtio,bridge=vmbr0 \
--scsihw virtio-scsi-single \
--boot order='scsi0;ide0' \
--efidisk0 local-lvm:0 \
--scsi0 local-lvm:35
führt auf meinem System (Proxmox VE 8.3.1) zu einem Fehler: 400 too many arguments qm create [OPTIONS]
Die Meldung ist super aussagekräftig, also habe ich beschlossen einfach die virtuelle Maschine im Web-UI anzulegen.
Fehlersuche mit Web-UI
Das Web-UI erlaubt das Anlegen einer virtuellen Maschine mit mehreren Konfigurationsdialogen. Im letzten Dialog bekommt man die Schlüsselwert-Paare für die neue virtuelle Maschine angezeigt. Diese lassen sich wieder in ein Kommando für die Kommandozeile übersetzen (oder mit OK direkt erzeugen).
Da ich den Fehler im Tutorial suchen wollte, habe ich erst einmal das Kommando zusammengebaut.
qm create 110 \
--bios ovmf \
--sockets 1 --cores 2 --cpu kvm64 \
--efidisk0 local-lvm:1,efitype=4m,format=qcow2 \
--ide2 none,media=cdrom \
--machine q35 --memory 2048 \
--name openbsd \
--net0 virtio,bridge=vmbr0,firewall=1 \
--ostype=other \
--scsi0 local-lvm:32,format=qcow2,iothread=on \
--scsihw virtio-scsi-single
Dieses Kommando funktioniert.
Was ist also der Unterschied?
Dazu passe ich schrittweise das Kommando an die Vorlage aus dem Tutorial an. Das Ergebnis der Fehlersuche: Es fehlen zwei Leerzeichen im Beispiel aus dem Tutorial, dass mir das nicht früher aufgefallen ist!
Wie immer: Vorsicht bei Copy&Paste! Auch wenn ich das Beispiel an meine Umgebung angepasst hatte (vor allem beim Storage, der nicht auf local-lvm
liegt), so ist mir der Syntaxfehler nicht aufgefallen.
Rest der Anleitung
Der Rest funktioniert dann ganz normal, wobei ich das Image im Web-UI mit Überprüfung der Prüfsumme heruntergeladen habe.
qm set 110 --ide0 local-lvm:0,import-from=/var/lib/vz/template/iso/install76.img
Jetzt kann man die virtuelle Maschine starten und OpenBSD ganz normal installieren. Die Vorgaben passen für die Installation. Nur bei der Paketauswahl meckert der Installer, dass es keine SHA256.sig
im Verzeichnis gibt. Hier muss man von der Vorgabe abweichen und yes
auswählen, da man trotz fehlender Prüfsumme/Signatur fortfahren möchte.
Nach dem Reboot hat man ein laufendes OpenBSD in einer virtuellen Maschine unter Proxmox. Es hat nur einen Nachteil. Bei einem Klick auf Shutdown in Proxmox fährt es nicht herunter. Es fehlt noch der qemu-guest-agent
.
Installation des Qemu-Guest-Agents
Im OpenBSD Journal gibt es einen Artikel von Paul de Weerd, der einen in die richtige Richtung führt. Es fehlt noch der qemu-ga
, der im Paket qemu-ga
enthalten ist.
pkg_add qemu-ga
Die notwendigen Vorbereitungen --agent 1,type=isa
waren schon im Tutorial aufgeführt. Dadurch gibt es in der virtuellen Maschine ein serielle Schnittstelle, über die der Hypervisor sich mit dem Qemu-Guest-Agenten unterhält. In meiner Installation ist es die erste serielle Schnittstelle,
Mit dem folgenden Kommando wird der Dienst konfiguriert.
rcctl set qemu_ga flags -t /var/run/qemu-ga -f /var/run/qemu-ga/qemu-ga.pid \
-m isa-serial -p /dev/cua00
Danach muss er noch mit rcctl enable qemu_ga
(Vorsicht mit Unterstrich nicht Bindestrich) eingeschaltet werden.
Alternative Konfiguration des Qemu-Guest-Agents
Oben habe ich den qemu-ga
über seine Kommandozeilen-Flags konfiguriert. Man kann auch eine Konfiguration in /etc/qemu/qemu-ga.conf
speichern.
[general]
method=isa-serial
path=/dev/cua00
statedir=/var/run
pidfile=/var/run/qemu-ga.pid
Ich bin mir nicht schlüssig, was der “OpenBSD-Weg” ist. Mir gefallen beide Varianten gut. Die Konfigurationsdatei ist leichter zu verstehen als die Flags. Allerdings ist die erste einfacher zu skripten.
Wichtig ist auch, wenn man beide zugleich einsetzt, die Kommandozeilen-Flags die entsprechenden Werte aus der Konfigurationsdatei überschreiben.
Für mich ist der Schluss, dass ich die Flags-Variante bevorzuge. Diese bekommt man mit rcctl
angezeigt und sie haben Präferenz.
Fazit
Ich hatte geplant, für die Installation eine Stunde und für die Dokumentation eine Stunde benötige. Durch den Rechercheaufwand bin ich bei insgesamt sechs Stunden Aufwand gelandet, aber ab jetzt geht es flott.
!/bin/bash
if [ "$#" -ne 5 ]; then
echo "Usage: $0 <openbsd_version> <vm_id> <vm_name> <vm_disksize> <vm_bridge>"
exit 1
fi
openbsd_version=$1
vm_id=$2
vm_name=$3
vm_disksize=$4
vm_bridge=$5
image_path="/var/lib/vz/template/iso/openbsd-${openbsd_version}.img"
mirror=ftp.openbsd.org/pub/OpenBSD
maj="${openbsd_version%.*}"
min="${openbsd_version##*.}"
url="https://${mirror}/${openbsd_version}/amd64/install${maj}${min}.img"
if [ ! -f ${image_path} ]; then
sudo wget -O "${image_path}" "${url}"
fi
if [ ! -f ${image_path} ]; then
echo "No image found aborting!"
exit 2
fi
sudo qm create ${vm_id} \
--bios ovmf \
--sockets 1 --cores 2 --cpu kvm64 \
--machine q35 --memory 2048 \
--name ${vm_name} \
--net0 virtio,bridge=${vm_bridge} \
--ostype=other \
--scsi0 local:${vm_disksize},format=qcow2 \
--scsihw virtio-scsi-single \
--boot order='scsi0;ide0' \
--efidisk0 local:0
sudo qm set ${vm_id} --ide0 local:0,import-from=${image_path}
#!/bin/sh
pkg_add qemu-ga
rcctl set qemu_ga flags -t /var/run/qemu-ga -f /var/run/qemu-ga/qemu-ga.pid \
-m isa-serial -p /dev/cua00
Quellen
-
Proxmox-Forum-Mitglied asded: Install OpenBSD 7.3 on Proxmox (BIOS/UEFI and Cloud-init) (abgerufen am 2025-01-02)
-
Paul de Weerd: Using qemu guest agent on OpenBSD kvm/qemu guests (abgerufen am 2025-01-02)
Bildnachweis
Das Aufmacherbild verwendet das Proxmox-Logo entsprechend der Proxmox-Corporate-Brandguideline (2021) und das OpenBSD-Logo von Wikipedia unter der Maßgabe: “Most images provided here are copyright by OpenBSD, by Theo de Raadt, or by other members or developers of the OpenBSD group. However, it is our intent that anyone be able to use these images to represent OpenBSD in a positive light. So enjoy them and let the world see them, if that is your wish.”