Virtualisierung
LXC-Container und virtuelle Maschinen mit Incus: Images, ISO-Bibliothek, Ressourcen, Netzwerk, Freigaben, Snapshots und Konsole.
Voraussetzungen
- Das Paket
incus(Debian 13) installiert der Installer zusammen mitovmf(UEFI-Firmware für VMs). Bunkerbox spricht mit Incus ausschließlich über die REST-API auf/var/lib/incus/unix.socket; nur die Konsole nutzt das Programmincus. - Ein ZFS-Pool für die Instanzen, sinnvollerweise der SSD-Pool
apps. - Für Adressen aus dem Heimnetz: die LAN-Bridge
br0(siehe Netzwerk). Ohne Bridge stehen nur das NAT-Netz und „Kein Netzwerk“ zur Wahl. - VMs brauchen Hardware-Virtualisierung (Intel VT-x bzw. AMD-V im BIOS eingeschaltet).
Einrichtung
Beim ersten Aufruf von Virtualisierung erscheint die Karte Virtualisierung einrichten:
| Feld | Bedeutung |
|---|---|
| Dataset für Instanzen | z. B. apps/incus. Das Dataset darf noch nicht existieren, Incus legt es an und verwaltet darunter je Instanz ein eigenes Dataset bzw. Volume (Speicherpool bunkerbox, Treiber zfs). |
| Dataset für die ISO-Bibliothek | z. B. apps/iso. Wird angelegt (Mountpoint /apps/iso) oder, falls vorhanden, übernommen. |
Zusätzlich entsteht das Incus-NAT-Netz incusbr0 (private IPv4/IPv6-Adressen, Internet über den Host). Bereits vorhandene Teile bleiben unverändert; hat Incus schon einen ZFS-Speicherpool (z. B. aus incus admin init), wird dieser verwendet. Die ISO-Einstellung liegt in data/virtualization-state.json (600), alles andere in Incus selbst.
Instanzen
Die Liste zeigt Name, Art (LXC oder VM), Status, Ressourcen, Netzwerk und Adressen jeder Instanz und aktualisiert sich alle 10 s (während eines Vorgangs alle 2 s). Eine Instanz, deren Image noch heruntergeladen wird, erscheint mit Fortschrittsbalken; schlägt das Anlegen fehl, bleibt sie 15 Minuten mit der Fehlermeldung sichtbar.
| Aktion | Wirkung |
|---|---|
| Starten | startet die Instanz |
| Herunterfahren | sauberes Herunterfahren, nach 60 s Abbruch mit Fehler |
| Neu starten | Neustart des Systems in der Instanz |
| Ausschalten | sofortiges Abschalten, wie Stecker ziehen |
| Löschen | Name eintippen; eine laufende Instanz wird vorher ausgeschaltet. Instanz, Platte und Snapshots werden gelöscht, eingebundene Verzeichnisse bleiben unberührt. |
Vorgänge laufen im Hintergrund; pro Instanz läuft höchstens einer. Solange ein Vorgang läuft (z. B. ein Image-Download), verweigert Bunkerbox ein Update.
Neue Instanz
- Art: Container (LXC, nutzt den Kernel des Hosts, nur Linux) oder virtuelle Maschine (QEMU mit UEFI).
- Name: Buchstaben, Ziffern und
-, beginnt mit einem Buchstaben, endet nicht mit-, höchstens 63 Zeichen; zugleich der Hostname.newist reserviert. - Quelle:
- Image von
images.linuxcontainers.org(Debian, Ubuntu, Alpine, Arch, Fedora, Rocky …). Die Liste wird alle 6 h neu geladen und zeigt nur Images, die es für die gewählte Art und die Architektur des Hosts gibt. Andere Image-Server sind nicht zugelassen. - ISO aus der Bibliothek (nur VMs): leere Platte, das ISO wird schreibgeschützt mit Startpriorität eingelegt. Die Installation läuft über die Textkonsole. Danach das ISO unter Einstellungen entfernen, sonst startet die VM wieder den Installer. UEFI Secure Boot lässt sich für ISOs ohne signierten Bootloader abschalten.
- Image von
- Ressourcen: vCPUs (höchstens die CPU-Threads des Hosts), Arbeitsspeicher und Platte in GiB. Leere Felder bedeuten bei Containern keine Grenze; VMs bekommen ohne Angabe die Vorgaben von Incus (1 vCPU, 1 GiB).
- Netzwerk: LAN-Bridge (eigene Adresse vom Router, im Heimnetz erreichbar), NAT-Netz (
incusbr0, nur ausgehend) oder Kein Netzwerk. - Nach dem Anlegen starten und Beim Booten automatisch starten (
boot.autostart).
Instanzen werden ohne Incus-Profile angelegt; Systemplatte (root), Netzwerkkarte (eth0) und ISO (install-iso) sind eigene Geräte der Instanz.
Einstellungen
Ressourcen, Netzwerk, Autostart, Beschreibung und bei VMs das eingelegte ISO lassen sich nachträglich ändern. Die Platte kann nur wachsen. Manche Änderungen wirken erst nach einem Neustart (z. B. Arbeitsspeicher einer laufenden VM); was Incus im Betrieb nicht ändern kann, meldet es als Fehler.
Freigabe-Verzeichnisse
Verzeichnisse auf dem Host werden als Incus-Gerät vom Typ disk in die Instanz eingebunden, wahlweise nur lesend.
- Erlaubt sind Verzeichnisse unterhalb einer Freigabe, eines eingehängten Datasets oder
/appdata. Ausgeschlossen sind/appdataselbst,/appdata/bunkerboxsowie das tatsächliche Installations- und Datenverzeichnis von Bunkerbox (Zugangsdaten, auch wennBUNKERBOX_HOMEoderBUNKERBOX_DATA_DIRwoanders hin zeigen) und die Datasets des Instanz-Pools. Der Pfad darf keinen symbolischen Link enthalten. - Als Ziel in der Instanz sind Systemverzeichnisse wie
/etc,/usr,/procund/varselbst gesperrt. - Container binden das Verzeichnis als idmapped Mount ein (
shift=true): Dateien zeigen in der Instanz ihre echten Besitzer, und root im Container darf darin schreiben wie root auf dem Host. Für fremde oder unsichere Container das Verzeichnis nur lesend einbinden. - VMs binden das Verzeichnis über virtiofs ein; der Incus-Agent in der VM hängt es automatisch ein (in den Images enthalten).
Snapshots
Snapshots sind ZFS-Snapshots der Instanz (Plattenstand ohne Arbeitsspeicher). Ohne Namen heißt ein Snapshot snap-<Datum>-<Uhrzeit>. Zurückspielen und Löschen verlangen den eingetippten Snapshot-Namen; beim Zurückspielen gehen alle Änderungen seit dem Snapshot verloren.
Konsole
Der Reiter Konsole öffnet ein Terminal im Browser (WebSocket-Kanal incus-console, dieselbe Technik wie das Terminal):
| Art | Befehl | Hinweis |
|---|---|---|
| Shell | incus exec <name> -- /bin/sh -c … | Root-Shell (bash, sonst sh). Bei VMs nur mit laufendem Incus-Agent. |
| Textkonsole | incus console <name> --type console | Serielle Konsole, z. B. für Startmeldungen und Text-Installer. |
Höchstens 8 Konsolen sind gleichzeitig offen. Jede Sitzung erscheint im Audit-Log (terminal.open/terminal.close mit Ziel incus-console:<name>). Eine grafische Konsole (VGA/SPICE) gibt es nicht; Installer mit grafischer Oberfläche lassen sich deshalb nicht bedienen. Debian und Ubuntu bieten einen Text- bzw. seriellen Installer.
ISO-Bibliothek
Die Karte ISO-Bibliothek zeigt die .iso-Dateien im Verzeichnis des ISO-Datasets und in welchen VMs sie eingelegt sind.
- ISO hochladen überträgt die Datei in Stücken zu 8 MiB, damit jede Anfrage unter der Größengrenze des Zugriffsschutzes bleibt. Die Datei entsteht als
.upload-<id>.part(600) und wird erst nach dem letzten Stück unter ihrem Namen sichtbar; vorhandene Dateien werden nie überschrieben. Ein abgebrochener Upload wird gelöscht, ein liegengebliebener nach einer Stunde ohne Daten. Höchstens 64 GiB pro Datei, der freie Platz wird vorher geprüft. Während eines Uploads verweigert Bunkerbox ein Update. - Dateinamen: Buchstaben, Ziffern,
.,_,+und-, Endung.iso. - ISOs lassen sich auch per SMB in das Verzeichnis kopieren, wenn es freigegeben ist.
- Löschen verlangt den eingetippten Dateinamen und ist gesperrt, solange eine VM das ISO eingelegt hat.
Backup
Das Appdata-Backup (Backup) kann Instanzen vor dem ZFS-Snapshot herunterfahren und danach wieder starten. Als Daten-Dataset meldet die Virtualisierung das Dataset des Speicherpools (z. B. apps/incus).
Fehlersuche
systemctl status incusundjournalctl -u incuszeigen den Zustand des Dienstes.incus list,incus info <name> --show-logundincus config show <name> --expandedzeigen, was Incus über eine Instanz weiß.- Startet eine VM nicht, fehlt oft die Hardware-Virtualisierung (
/dev/kvm), oder das ISO braucht Secure Boot aus.