OpenBSD unter Proxmox installieren

Kategorien: administration

“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.

Download-Dialog

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

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.”

Das könnte Sie auch interessieren