Geroutete IPv4-Adressen ab 0,70 € pro IP und Monat, keine Mindestabnahme, keine Vertragsbindung. Preise anzeigen

Erstellen Sie die virtuelle Maschine

Im vorherigen Leitfaden haben Sie diesen einzelnen Proxmox-Knoten abgesichert, und zwar durch ein Nicht-Root-Konto mit Zwei-Faktor-Authentifizierung, eine Firewall und ein API-Token mit eingeschränktem Zugriffsbereich für die Automatisierung. In diesem Leitfaden werden alle drei Elemente genutzt, um die erste virtuelle Maschine zu erstellen, die die Plattform tatsächlich hosten wird – vom Abrufen eines Installations-Images bis hin zu einem laufenden Gast mit einem Betriebssystem.

Installationsimage abrufen

Eine neue Proxmox-Installation wird ohne Installationsmedien ausgeliefert. Bevor also eine virtuelle Maschine auf ein Betriebssystem verweisen kann, muss das Installationsprogramm dieses Betriebssystems an einem Ort vorhanden sein, auf den Proxmox zugreifen kann. Der Bereich „ISO-Images“ auf der Seite des jeweiligen Speichers dient als Speicherort für diese Medien und ist anfangs komplett leer.

Das Fenster „ISO-Images“ für den lokalen Speicher auf dem Knoten „pve“ zeigt eine leere Liste mit den Schaltflächen „Hochladen“, „Von URL herunterladen“ und „Entfernen“ an.
Auf einem neuen Knoten sind noch keine Installationsmedien vorhanden, daher ist die Liste der ISO-Images zunächst leer.

Proxmox kann diese Medien selbst direkt auf dem Knoten abrufen, anstatt eine Datei von einem lokalen Rechner über eine langsame Verbindung hochzuladen. Die Schaltfläche „Von URL herunterladen“ im selben Fenster öffnet einen kleinen Dialog, in dem lediglich die Eingabe einer URL erforderlich ist.

Dialogfeld „Von URL herunterladen“ mit leeren Feldern für URL und Dateiname, einer Schaltfläche „URL abfragen“ sowie den Feldern „Dateigröße“ und „MIME-Typ“, die beide einen Bindestrich anzeigen
Das Dialogfeld „Von URL herunterladen“, bevor etwas eingegeben wurde.

In dieser Anleitung wird Debian in der VM installiert – dieselbe Distribution, auf der auch Proxmox selbst läuft –, wobei anstelle einer vollständigen DVD das kleine Netinst-Image verwendet wird: ein paar hundert Megabyte, die den Rest der Pakete, die für die Installation tatsächlich benötigt werden, während des Installationsvorgangs über das Netzwerk herunterladen.

Warum klont man nicht stattdessen einfach das Betriebssystem des Proxmox-Hosts in die VM?

Denn das Betriebssystem des Hypervisors und das, was in dessen virtuellen Maschinen läuft, sind zwei völlig getrennte Bereiche. Die Debian-Basis von Proxmox dient ausschließlich dazu, den Hypervisor-Stack auszuführen, während eine Gast-VM frei wählen kann, was auch immer eine bestimmte Arbeitslast tatsächlich benötigt – und auf einer realen Plattform ist das selten zweimal dieselbe Distribution.

Wenn man die echte Debian-Netinst-URL einfügt und auf „URL abfragen“ klickt, wird die Datei vor dem Herunterladen aufgelöst, wodurch sowohl die tatsächliche Größe als auch der tatsächliche Inhaltstyp bestätigt werden.

Dialogfeld „Von URL herunterladen“ mit bereits eingegebener URL, Dateiname „debian-13.7.0-amd64-netinst.iso“, Dateigröße 756,00 MiB und MIME-Typ „application/x-iso9660-image“
Ein echtes 756-MiB-ISO-Image, das bereits ermittelt wurde, bevor auch nur ein einziges Byte tatsächlich heruntergeladen wurde.

Wenn Sie auf „Herunterladen“ klicken, wird der Download auf dem Knoten selbst im Hintergrund ausgeführt – mit einem eigenen Echtzeit-Aufgabenprotokoll anstelle eines Browser-Fortschrittsbalkens, der an diesen einen Tab gebunden ist.

Aufgabenanzeige für den ISO-Download mit Ausgabe im wget-Stil: eine 302-Weiterleitung von cdimage.debian.org zu einem Mirror unter saimei.ftp.acc.umu.se, anschließend eine 200-OK-Antwort und eine Datenlänge von 792723456
Das echte Download-Protokoll: Debians eigenes Umleitungsnetzwerk hat diesen Abruf an einen Universitäts-Mirror in Schweden weitergeleitet.

Diese Weiterleitung sollte man sich genauer ansehen, anstatt sie einfach zu überspringen: cdimage.debian.org Proxmox selbst stellt die Datei nie bereit, sondern entscheidet lediglich bei jeder einzelnen Anfrage, welcher echte Mirror am nächsten liegt oder am wenigsten ausgelastet ist, und leitet den Download dorthin weiter. Ein weiterer Versuch aus einem anderen Netzwerk kann auf einem völlig anderen Mirror landen, ohne dass sich auf der Proxmox-Seite etwas ändert.

Sobald der Vorgang abgeschlossen ist, zeigt dieselbe Liste der ISO-Images wie zuvor nun genau eine Datei an, mit einer tatsächlichen Größe und einem tatsächlichen Zeitstempel anstelle eines Platzhalters.

In der Liste der ISO-Images wird nun „debian-13.7.0-amd64-netinst.iso“ angezeigt, datiert von vor wenigen Augenblicken, Format: ISO, Größe: 756,00 MiB
Das Installations-Image, bereit zum Einbinden in eine virtuelle Maschine.

Die Schaltfläche „Von URL herunterladen“ ist im Grunde ein schlanker Wrapper für einen einzigen API-Aufruf. Dies sollte man direkt wissen, sobald dieser Schritt im Rahmen der Bereitstellung einer gesamten Plattform unbeaufsichtigt ausgeführt werden muss, anstatt dass eine Person jedes Mal durch einen Dialog klicken muss:

curl -k -X POST "https://pve.example.com:8006/api2/json/nodes/pve/storage/local/download-url" \
  -H "Authorization: PVEAPIToken=opsadmin@pve!automation=<token-secret>" \
  --data-urlencode "content=iso" \
  --data-urlencode "filename=debian-13.7.0-amd64-netinst.iso" \
  --data-urlencode "url=https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.7.0-amd64-netinst.iso"

Das Token ist hier dasselbe opsadmin@pve!automation Das im vorherigen Leitfaden erstellte Token, dessen Geltungsbereich nach wie vor auf die tatsächlich benötigten Berechtigungen beschränkt ist.

Führen Sie den Assistenten zum Erstellen einer VM durch

Über „VM erstellen“ in der oberen rechten Ecke einer beliebigen Proxmox-Seite wird ein Assistent mit acht Registerkarten geöffnet. Dahinter verbirgt sich keine Geheimnisvolle Magie: Alle Felder auf allen acht Registerkarten werden zu einem einzigen Parametersatz zusammengefasst, der am Ende in einem einzigen API-Aufruf übermittelt wird. Wenn man beobachtet, wie jede Registerkarte diesen Aufruf Stück für Stück zusammenstellt, erscheint die API selbst weitaus weniger geheimnisvoll, sobald sie auf der letzten Registerkarte angezeigt wird.

Geben Sie einen Namen für die VM ein und wählen Sie eine VM-ID aus

Auf der Registerkarte „Allgemein“ werden zunächst die am wenigsten interessanten Angaben abgefragt: eine VM-ID, die Proxmox bereits mit der nächsten freien Nummer auf diesem Knoten vorbelegt, und ein Name, der rein kosmetischer Natur ist und das eigentliche Gastbetriebssystem nicht beeinflusst, es sei denn, er wird später manuell übernommen.

Assistent zum Erstellen einer virtuellen Maschine, Registerkarte „Allgemein“, wobei „Knoten“ auf „pve“ gesetzt ist, VM-ID 100, Name „web01“ und das Kontrollkästchen „Zu HA hinzufügen“ deaktiviert ist
VM-ID 100: Die erste freie Nummer auf einem Knoten, auf dem zuvor noch nie eine VM erstellt worden war.

Richte es auf das Installationsimage

Auf der Registerkarte „Betriebssystem“ wird das zuvor heruntergeladene ISO-Image tatsächlich verwendet. Wenn man das Feld für das ISO-Image leer lässt und versucht, fortzufahren, wird ein echter Validierungsfehler angezeigt, anstatt dass der Assistent stillschweigend fortfährt.

Assistent zum Erstellen einer virtuellen Maschine, Registerkarte „Betriebssystem“, Dropdown-Menü „ISO-Image“ geöffnet und rot umrandet, mit dem Tooltip „Dieses Feld ist ein Pflichtfeld“, wobei „debian-13.7.0-amd64-netinst.iso“ als einzige Option aufgeführt ist
In der Auswahlliste werden ausschließlich die Einträge angezeigt, die sich bereits im Ordner „ISO-Images“ befinden – das ist derzeit genau eine Datei.

Durch die Auswahl dieser Datei wird außerdem der „Gastbetriebssystemtyp“ auf „Linux“ gesetzt und die „Version“ auf eine Auswahlliste, die kleiner ist, als sie aussieht: Proxmox unterscheidet hier tatsächlich nur zwischen zwei Linux-Generationen.

Assistent zum Erstellen einer virtuellen Maschine, Registerkarte „Betriebssystem“, Dropdown-Menü „Version“ geöffnet, das genau zwei Optionen anzeigt: 7.x – 2.6-Kernel und 2.4-Kernel
Hier gibt es nur zwei echte Optionen, ganz gleich, wie viele Linux-Distributionen Proxmox ansonsten unterstützt.

Spielt die genaue Zahl in „7.x“ für einen Debian-13-Gast eigentlich eine Rolle?

Das hat keinerlei Auswirkungen auf das Verhalten. „7.x – 2.6-Kernel“ ist Proxmox’ eigene Kurzbezeichnung für jeden modernen Linux-Kernel ab der 2.6-Serie, was mittlerweile im Wesentlichen jede Distribution umfasst, die noch Updates erhält; „2.4-Kernel“ existiert ausschließlich für wirklich veraltete Gast-Systeme, die noch aus der Zeit vor dieser Version stammen. Debian 13 fällt eindeutig in die erste Kategorie, ungeachtet der Zahl „7“ in der Bezeichnung.

Behalten Sie die Systemstandardwerte bei und aktivieren Sie ein Kontrollkästchen

Die Standardeinstellungen auf der Registerkarte „System“ sind für eine erste VM bereits sinnvoll: „VirtIO SCSI single“ als Festplattencontroller, „Default (i440fx)“ als Maschinentyp und „SeaBIOS“ anstelle von UEFI. Das einzige Kontrollkästchen, das bewusst angekreuzt werden sollte, ist „Qemu Agent“, das standardmäßig nicht markiert ist.

Assistent zum Erstellen einer virtuellen Maschine, Registerkarte „System“, Kontrollkästchen „Qemu Agent“ aktiviert, SCSI-Controller auf „VirtIO SCSI single“ eingestellt, BIOS-Standard (SeaBIOS)
Wenn man den Qemu-Agent hier aktiviert, wird Proxmox lediglich darauf hingewiesen, dass er vorhanden sein soll; der Gast muss ihn jedoch noch tatsächlich ausführen.

Das Aktivieren dieses Kontrollkästchens führt an sich zu keiner Installation, sondern weist Proxmox lediglich an, mit einem Gast-Agenten zu rechnen, der über einen virtuellen seriellen Kanal kommuniziert. Ob dieser Agent tatsächlich im Gast läuft, ist eine andere Frage, auf die diese Anleitung zurückkommt, sobald das Betriebssystem selbst installiert ist.

Größe der virtuellen Festplatte festlegen

Auf der Registerkarte „Disks“ ist standardmäßig eine 32-GiB-Festplatte auf „local-lvm“ voreingestellt – mehr, als diese erste VM benötigt, und mehr, als der im vorherigen Leitfaden festgelegte Thin-Pool allein bewältigen müsste. Wenn man die Größe auf 16 GiB reduziert, bleibt reichlich Platz für eine Debian-Basisinstallation und deren Protokolle, ohne mehr von diesem Pool zu beanspruchen, als eine erste Test-VM rechtfertigt.

Assistent zum Erstellen einer virtuellen Maschine, Registerkarte „Festplatten“, scsi0 auf „local-lvm“ mit einer Festplattengröße (GiB) von 16, Option „IO-Thread“ aktiviert, Option „Discard“ deaktiviert
16 GiB auf scsi0, IO-Thread standardmäßig aktiviert, um die Warteschlangenverwaltung unter Last zu verbessern.

CPU-Kerne zuweisen

Auf der Registerkarte „CPU“ sind standardmäßig ein Sockel, ein Kern und der CPU-Typ „x86-64-v2-AES“ eingestellt, anstatt des genauen Modells des Hosts. Durch die Erhöhung der Kernanzahl auf 2 verfügt diese VM über genügend Leistung, um tatsächlich parallele Aufgaben auszuführen.

Assistent zum Erstellen einer virtuellen Maschine, Registerkarte „CPU“, Sockel: 1, Kerne: 1, Typ: Standard (x86-64-v2-AES), Gesamtzahl der Kerne: 1
Standardmäßig ein portabler virtueller CPU-Typ anstelle des genauen Modells des Hosts.

Diese Voreinstellung steht in bewusstem Kontrast zu der Wahl in dem früheren Leitfaden, -cpu host Für den Betrieb von Proxmox selbst in einer Testumgebung: Eine Gast-VM auf einer realen Plattform muss möglicherweise eines Tages auf eine andere physische Hardware migriert werden, und ein CPU-Typ, der an den genauen Funktionsumfang dieses einen Hosts gebunden ist, würde dazu führen, dass diese Migration von vornherein fehlschlägt. Ein portabler Basistyp opfert einen geringen Teil der reinen Leistung zugunsten der Portabilität – was in der Regel der richtige Kompromiss für alles ist, was tatsächlich für Kunden eingesetzt wird.

Speicherobergrenze festlegen

Auf der Registerkarte „Speicher“ ist standardmäßig ein Wert von 2048 MiB voreingestellt. Wenn Sie „Erweitert“ aktivieren, werden dieselben Optionen „Ballooning-Gerät“ und „KSM zulassen“ angezeigt, die bereits im vorherigen Leitfaden behandelt wurden; beide sind standardmäßig bei jeder neuen VM aktiviert.

Assistent zum Erstellen einer virtuellen Maschine, Registerkarte „Arbeitsspeicher“, Ansicht „Erweitert“, Arbeitsspeicher 2048 MiB, Mindestarbeitsspeicher 2048 MiB, Option „Ballooning-Gerät“ aktiviert, Option „KSM zulassen“ aktiviert
Sowohl „Ballooning“ als auch „KSM“ sind von Anfang an aktiviert – dieselben beiden Hebel, die im vorherigen Leitfaden systemweit angepasst wurden.

Der anfängliche Mindestspeicher entspricht zunächst dem Gesamtspeicher, was bedeutet, dass noch kein tatsächlicher Ballooning-Bereich vorhanden ist; dieser wird erst dann sinnvoll, wenn dieser Mindestwert gesenkt wird, sodass Proxmox die Differenz bei echtem Speicherbedarf von einer inaktivierten VM zurückgewinnen kann.

Befestige es an der Brücke

Auf der Registerkarte „Netzwerk“ wird die VM an vmbr0 angebunden – dieselbe Bridge, die bereits im vorherigen Leitfaden behandelt wurde –, wobei das VirtIO-Modell verwendet wird, um die bestmögliche Leistung zu erzielen, die ein paravirtualisierter Treiber bieten kann. Die Firewall ist standardmäßig auf der Netzwerkschnittstelle selbst aktiviert.

Assistent zum Erstellen einer virtuellen Maschine, Registerkarte „Netzwerk“, Brücke vmbr0, Modell VirtIO (paravirtualisiert), MAC-Adresse automatisch, Firewall aktiviert
Die Firewall-Option pro VM, die standardmäßig aktiviert ist, unterscheidet sich von der datacenterweiten Einstellung aus der vorherigen Anleitung.

Dieses Kontrollkästchen ist ein anderer Schalter als die zuvor besprochene Aktivierung der Firewall auf Rechenzentrumsebene, die auf diesem Knoten nach wie vor deaktiviert ist. Das Aktivieren dieses Kontrollkästchens hat hier zwar noch keine sichtbaren Auswirkungen, bedeutet aber, dass der Datenverkehr dieser VM, sobald der Master-Switch später aktiviert wird, bereits durch die für sie geltenden Regeln abgedeckt ist, anstatt dass jede Schnittstelle einzeln neu überprüft werden muss.

Überprüfen und erstellen

Auf der Registerkarte „Bestätigen“ werden alle Werte aus den vorherigen Registerkarten als einfache Schlüssel-Wert-Tabelle dargestellt. Diese Tabelle ist keine für Menschen verständliche Zusammenfassung, sondern der tatsächliche Request-Body, den der Assistent gleich absenden wird.

Assistent zum Erstellen einer virtuellen Maschine, Registerkarte „Bestätigen“, eine Tabelle mit folgenden Angaben: Agent 1, Kerne 2, CPU x86-64-v2-AES, ide2 (Debian-ISO als CD-ROM), Arbeitsspeicher 2048, Name web01, net0: Virtio-Bridge vmbr0, Firewall: 1, Knotenname: pve, NUMA: 0, OSTyp: l26, scsi0: local-LVM 16, iothread aktiviert, SCSI-Hardware: virtio-scsi-single, Sockets: 1, VMID: 100 sowie ein Kontrollkästchen „Nach der Erstellung starten“
Jede vorherige Registerkarte, reduziert auf genau die Parameter, die der API-Aufruf gleich senden wird.

Wenn man nach der Erstellung „Start“ markiert und auf „Fertigstellen“ klickt, wird genau diese Tabelle als einzelne echte API-Anfrage gesendet, die hier vollständig wiedergegeben und nicht nur vermutet wird:

curl -k -X POST "https://pve.example.com:8006/api2/json/nodes/pve/qemu" \
  -H "Authorization: PVEAPIToken=opsadmin@pve!automation=<token-secret>" \
  --data-urlencode "vmid=100" \
  --data-urlencode "name=web01" \
  --data-urlencode "ostype=l26" \
  --data-urlencode "ide2=local:iso/debian-13.7.0-amd64-netinst.iso,media=cdrom" \
  --data-urlencode "scsihw=virtio-scsi-single" \
  --data-urlencode "scsi0=local-lvm:16,iothread=on" \
  --data-urlencode "agent=1" \
  --data-urlencode "sockets=1" \
  --data-urlencode "cores=2" \
  --data-urlencode "cpu=x86-64-v2-AES" \
  --data-urlencode "memory=2048" \
  --data-urlencode "net0=virtio,bridge=vmbr0,firewall=1" \
  --data-urlencode "start=1"

Dieser einzelne Aufruf erstellt und startet die VM zugleich, was durch zwei separate, tatsächliche Vorgänge im Protokoll anstelle von nur einem bestätigt wird: „VM 100 – Create“, unmittelbar gefolgt von „VM 100 – Start“.

Übersichtsseite der virtuellen Maschine 100 „web01“, Status: läuft, CPU-Auslastung 0 Prozent von 2 CPUs, Speicherauslastung unter 2 Prozent, Größe der Startfestplatte 16 GiB, IP-Adressen leer, Aufgabenprotokoll zeigt „VM 100 – Start“ und „VM 100 – Erstellen“ an, beide mit dem Status „OK“
Status: läuft, Sekunden nach einem einzelnen API-Aufruf, wobei das Feld „IPs“ noch leer ist, da noch kein Gastbetriebssystem hochgefahren wurde.

Vom Installationsprogramm booten

Wenn Sie die Registerkarte „Konsole“ dieser VM öffnen, gelangen Sie direkt in dasselbe Debian-Installations-Bootmenü, das bereits in der vorherigen Anleitung auf dem physischen Host ausführlich beschrieben wurde – nur dass es diesmal in der Konsole einer VM statt auf einem physischen Rechner ausgeführt wird. Die folgenden Bildschirme sind in beiden Fällen identisch, daher geht diese Anleitung beim zweiten Mal schneller durch die einzelnen Schritte und geht nur auf die Punkte ein, die bei einer Gastinstallation wirklich neu oder anders sind.

Debian GNU/Linux-Installationsmenü im BIOS-Modus, „Grafische Installation“ ist markiert, mit dem Text „Drücken Sie eine Taste, andernfalls wird die Sprachsynthese in 27 Sekunden gestartet“
Das gleiche Installations-Bootmenü wie zuvor, diesmal in der eigenen Konsole der VM.

Der Countdown unten ist es wert, gelesen statt ignoriert zu werden: Wenn man das Menü unverändert lässt, wird nicht einfach die markierte Standardeinstellung ausgewählt, sondern schließlich der Installationspfad für die Sprachausgabe aufgerufen – ein deutlich anderer Ablauf, der auf Audioansagen statt auf den üblichen Dialogfenstern basiert. Durch Drücken einer beliebigen Pfeiltaste wird der Countdown abgebrochen, sodass der normale Eintrag „Installieren“ bewusst ausgewählt werden kann.

Das Gastbetriebssystem installieren

Sprache, Standort und Tastaturlayout entsprechen den Einstellungen, die bereits bei der Proxmox-Installation selbst vorgenommen wurden. Die erste wirklich neue Abfrage betrifft den Hostnamen. Es empfiehlt sich, diesen so festzulegen, dass er mit dem Namen der VM in Proxmox übereinstimmt, anstatt den von Debian vorgegebenen Platzhalter zu übernehmen.

Debian-Installationsprogramm, Bildschirm „Netzwerk konfigurieren“, Feld „Hostname“ mit dem Eintrag „web01“
Den eigenen Hostnamen des Gastes mit dem VM-Namen abgleichen, den er bereits in Proxmox hat.

Beim Einrichten eines Nicht-Root-Benutzerkontos tritt ein echter, realer Validierungsfehler auf, über den man im Voraus Bescheid wissen sollte: Einige Benutzernamen sind vom System selbst reserviert und werden sofort abgelehnt, egal wie sinnvoll sie auch klingen mögen.

Fehlermeldung des Debian-Installationsprogramms: „Reservierter Benutzername. Der von Ihnen eingegebene Benutzername (operator) ist für die Verwendung durch das System reserviert. Bitte wählen Sie einen anderen aus.“
„operator“ ist unter Debian ein reservierter Systemkontoname; bei der Auswahl eines Namens für diese Anleitung ist tatsächlich ein Fehler aufgetreten.

„operator“ kollidiert mit einem tatsächlichen Unix-Konto, das historisch für Systemoperationen verwendet wurde, auch wenn es wie ein durchaus sinnvoller Name für den Administrator-Benutzer einer Plattform erscheint. „opsadmin“, derselbe Name, der bereits im vorherigen Leitfaden für das Proxmox-Admin-Konto verwendet wurde, funktioniert ohne Konflikte und sorgt für eine einheitliche Namensgebung zwischen dem Hypervisor und den darauf laufenden VMs.

Die geführte Partitionierung unter Verwendung der gesamten virtuellen Festplatte erzeugt eine echte, funktionsfähige Partitionstabelle, ohne dass manuelle Berechnungen zur Festplattengröße erforderlich sind: ein ext4-Root-Dateisystem, dessen Größe den größten Teil der Festplatte einnimmt, und eine Swap-Partition, deren Größe sich nach dem Arbeitsspeicher der VM richtet.

Übersicht über die Partitionen des Debian-Installationsprogramms: SCSI1 (0,0,0) sda 17,2 GB, Partition 1 (primär) 16,2 GB ext4, unter „root“ eingebunden, Partition 5 (logisch) 937,4 MB swap; die Option „Partitionierung abschließen und Änderungen auf die Festplatte schreiben“ ist markiert
Eine echte virtuelle Festplatte mit einer Größe von 17,2 GB, aufgeteilt in eine ext4-Root-Partition mit 16,2 GB und eine Swap-Partition mit 937,4 MB.

Bevor Sie diesen Bildschirm bestätigen: Vergewissern Sie sich, dass sich auf der VM noch keine Daten befinden, die Sie behalten möchten, da bei der geführten Partitionierung die gesamte virtuelle Festplatte gelöscht wird. Um zu überprüfen, was tatsächlich formatiert werden soll, listet der Übersichtsbildschirm alle Partitionen nach Gerät und Größe auf, bevor Daten geschrieben werden.

Wiederherstellung nach einem fehlerhaften Archiv-Mirror

Unmittelbar nach Abschluss der Installation des Basissystems versucht das Installationsprogramm, über das Netzwerk einen Debian-Paket-Mirror zu erreichen, um apt für den weiteren Verlauf der Installation zu konfigurieren. Diese Überprüfung kann tatsächlich fehlschlagen, und es lohnt sich, zu wissen, wie der Fehler konkret aussieht, anstatt einfach anzunehmen, dass etwas irreparabel kaputt ist.

Fehlermeldung des Debian-Installationsprogramms: „Fehlerhafter Archiv-Mirror. Beim Versuch, den angegebenen Debian-Archiv-Mirror zu verwenden, wurde ein Fehler festgestellt.“ Auflistung möglicher Ursachen, darunter eine unzuverlässige Netzwerkverbindung
Der Fehlerbildschirm des Spiegel-Checks selbst, auf dem die Gründe für eine fehlgeschlagene Verbindung aufgeführt sind.

Auf echter Hardware deutet dies in der Regel auf ein Problem hin, das spezifisch mit dem Internetzugang dieser VM zusammenhängt: einen DNS-Server, der vom Gast aus noch nicht erreichbar ist, eine Firewall-Regel, die ausgehenden HTTPS-Verkehr blockiert, oder einfach einen Mirror, der vorübergehend überlastet ist und bei dem es sich lohnt, es einen Moment später erneut zu versuchen. Aus genau diesem Grund gelingt es manchmal, wenn man zurückgeht und denselben Mirror erneut auswählt, beim zweiten Versuch eine Verbindung herzustellen.

Wenn es immer wieder fehlschlägt, bietet das Installationsprogramm selbst einen echten Ausweg statt einer Sackgasse: die Installation ganz ohne Netzwerk-Mirror abzuschließen.

Dialogfeld des Debian-Installationsprogramms mit dem Hinweis: „Es wurde kein Netzwerk-Mirror ausgewählt. Wenn Sie die Installation von einem Netinst-CD-Image durchführen und keinen Mirror verwenden möchten, erhalten Sie am Ende nur ein sehr minimales Basissystem. Möchten Sie ohne Netzwerk-Mirror fortfahren?“
Der einzige Weg, um das Problem eines dauerhaft fehlerhaften Spiegels zu lösen: Beginnen Sie zunächst nur mit dem Basissystem und reparieren Sie „apt“ anschließend.

Wenn Sie hier „Ja“ wählen, wird eine Installation mit vollem Funktionsumfang zugunsten einer funktionsfähigen Installation aufgegeben: Bei der späteren Softwareauswahl stehen nur die Komponenten zur Verfügung, die bereits auf dem Netinst-Image selbst enthalten sind, wobei ein SSH-Server oder der Gast-Agent nicht zur Auswahl stehen. Sobald das installierte System mit echtem, funktionierendem Netzwerkzugang hochfährt, erfolgt eine normale apt update vor einem richtigen Spiegel in /etc/apt/sources.list erfasst alles, was der Installateur überspringen musste.

Installation abschließen und neu starten

Ohne Spiegel werden bei der Aufgabenauswahl nur die bereits auf der ISO vorhandenen Standard-Systemdienstprogramme installiert, und das Installationsprogramm schreibt GRUB direkt auf die Festplatte, auf der es tatsächlich installiert wurde, anstatt zu raten.

Debian-Installationsprogramm: Konfigurieren Sie den Schritt „Configuring grub-pc“ im Paketmanager, wählen Sie „Gerät manuell eingeben“ und geben Sie als Geräteoptionen für den Bootloader „/dev/sda scsi-0QEMU_QEMU_HARDDISK drive-scsi0“ ein.
Die echte virtuelle Festplatte, die nicht über eine generische Bezeichnung, sondern über ihre tatsächliche QEMU-Gerätekennung angegeben wird.

Wenn der Installer kurz vor dem Abschluss – beim initramfs oder beim abschließenden Bereinigungsschritt – scheinbar nicht mehr reagiert, ist es in der Regel unbedenklich, die Proxmox-eigene „Reset“-Schaltfläche zu verwenden, sobald die Festplatte bereits partitioniert und der Bootloader geschrieben wurde. Da das Kernel-Paket bereits zu einem früheren Zeitpunkt im Prozess ein funktionsfähiges initramfs geschrieben hat, führt ein Reset in dieser späten Phase immer noch zum Start eines funktionsfähigen Systems und nicht zu einem nicht mehr wiederherstellbaren.

Ein anschließender Neustart führt dann zum eigentlichen, installierten System und nicht mehr zum Installationsprogramm, wobei eine Anmeldeaufforderung als Beweis dafür dient, dass der gesamte Vorgang tatsächlich einen funktionsfähigen Gast-Rechner erzeugt hat.

Konsole mit der Anzeige „Debian GNU/Linux 13 web01 tty1“, gefolgt von einer web01-Anmeldeaufforderung
Eine echte Anmeldeaufforderung: Auf der zuvor mit einem einzigen API-Aufruf erstellten VM läuft nun ein funktionsfähiges Gastbetriebssystem.

Überprüfen Sie, ob der Guest Agent ausgeführt wird

Das erneute Aktivieren des Qemu-Agenten auf der Registerkarte „System“ hat Proxmox lediglich darauf hingewiesen, dass ein Agent erwartet wird; da während der Installation kein Netzwerk-Mirror vorhanden war, wurde dieser Agent im Gastbetriebssystem nie tatsächlich installiert, ebenso wenig wie ein SSH-Server. Beides lässt sich mit einem einzigen Befehl erledigen, sobald der Gast selbst über einen echten Internetzugang verfügt, sei es nun ein korrigierter /etc/apt/sources.list nach einem Spiegelausfall oder einer normalen Installation, bei der von Anfang an ein funktionierender Netzwerkzugang bestand:

apt update
apt install -y qemu-guest-agent openssh-server

Sobald dieser Agent gestartet ist und sich meldet, wird auf der Proxmox-Registerkarte „Zusammenfassung“ nicht mehr ein leeres IP-Feld angezeigt, sondern eine tatsächliche Adresse, die aus dem Gastbetriebssystem selbst abgerufen wird und nicht mehr auf der Grundlage der Netzwerkebene außerhalb des Gastbetriebssystems geschätzt wird.

Die gleichen Informationen sind über die API verfügbar. Ein Provisioning-Skript würde also tatsächlich diese Daten abfragen, anstatt darauf zu warten, dass jemand die Registerkarte „Zusammenfassung“ aufruft:

curl -k "https://pve.example.com:8006/api2/json/nodes/pve/qemu/100/agent/network-get-interfaces" \
  -H "Authorization: PVEAPIToken=opsadmin@pve!automation=<token-secret>"

Zusammenfassend lässt sich sagen

  • Proxmox kann Installationsimages selbst über das Netzwerk abrufen, ein lokaler Upload ist nicht erforderlich.
  • Die acht Registerkarten des Assistenten zum Erstellen einer VM lassen sich in einem einzigen API-Aufruf zusammenfassen, der auf der Registerkarte „Bestätigen“ vollständig angezeigt wird.
  • Eine fehlgeschlagene Spiegelprüfung muss die Installation nicht unbedingt unterbrechen, sondern verschiebt lediglich die apt-Konfiguration auf nach dem Neustart.
  • Der Gastagent und der SSH-Server müssen separat installiert werden, sobald die VM über einen echten Netzwerkzugang verfügt.

Im nächsten Leitfaden werden Sie dieser VM eine geroutete IPv4-Adresse zuweisen und überprüfen, ob sie über das Internet erreichbar ist.