Eine Windows 10 VM unter Proxmox aufsetzen

Es gibt verschiedene Gründe warum ich eine Windows 10 Instanz unter Proxmox aufsetzen möchte aber ein wichtiger lautet, dass ich einige Aufgaben habe, die einfach längere Zeit benötigen um fertig zu werden. Diese Aufgaben benötigen in der Regel nicht sehr viele Ressourcen, naja die sie bekommen können die nutzen sie auch, sondern einfach nur Zeit. Was liegt da näher, als diese Aufgaben auf den immer laufenden Server auszulagern.
Wir werden in diesem Artikel, unter Proxmox, eine neue VM erstellen und dort Windows 10 installieren. Hier gibt es einfach ein paar Kniffe, die man kenne sollte (Stichwort Treiber). Weiterhin werden wir Windows 10 soweit konfigurieren, dass wir es nutzen können.
Fangen wir an……
Als erstes müssen wir uns die notwendigen Installationsmedien beschaffen. Es wird euch sicherlich nicht wundern, dass wir für Proxmox ein Image benötigen. Um eine Image von Windows zu erhalten, gibt es mehrere Möglichkeiten. Ich empfehle an dieser Stelle, das Windows 10 Installationsmedium, mit dem Media Creation Tool zu erstellen. Wie das geht, habe ich im Artikel „Windows 10 Installationsmedium erstellen“ erklärt.
Weiterhin benötigen wir die VirtIO Treiber. Diese brauchen wir um z.B. Windows unser Netzwerk Device und die Festplatte durchzureichen. Das entsprechende ISO können wir uns unter, https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md, herunterladen. Hier können wir uns entscheiden, welchen Update Kanal wir möchten. Die Entscheidung liegt natürlich bei euch. Ich lade mir die Stable Version herunter. Bitte denkt daran, dass wir das ISO benötigen.
Wenn wir beides haben, dann müssen wir die ISO’s in Proxmox hochladen. Dazu gehen wir auf unseren „local“ Storage und klicken auf „ISO Images“ und dort auf „Upload“. Im sich öffnenden Fenster, belassen wir den Content auf „ISO image“ und suchen uns über „Select File…“ die beiden ISO’s (nacheinander) aus und laden diese durch einen finalen klick auf „Upload“ hoch.
Wenn wir fertig sind, sollten wir mindestens die beiden gerade hochgeladenen ISO Files sehen. Vermutlich habt ihr schon ein wenig mehr hochgeladen. Erfahrungsgemäß fängt man nicht mit der Virtualisierung von Windows an.
Jetzt können wir auch mit der Erstellung der VM beginnen. Klickt dazu bitte, im Baumverzeichnis auf der linken Seite, euren Knoten bzw. euer Node an. In der Regel heißt dieser „pve“, außer ihr habt diesen umbenannt. Dann drückt ihr bitte auf „Create VM“ oben rechts. Jetzt öffnet sich ein Fenster im Reiter General. Hier müssen wir der VM eine ID und einen Namen zuweisen. Ich belasse die ID bei mir fortlaufend und nenne die VM „win10“.
Im Reiter OS müssen wir natürlich das Windows Image aussuchen. Wichtig ist hier auch noch das Guest OS umzustellen. Dies startet immer mit Linux aber wir wollen ja ein Windows installieren. Die Version muss in unserem Fall auf 10 bleiben.
Im Reiter System aktivieren wir nur den Qemu Agent. Der Rest kann so bleiben.
Jetzt können wir unsere Festplatte konfigurieren. Hier hat Proxmox ein paar Empfehlungen ausgesprochen, welche wir einfach mal umsetzen. Es wir SCSI als Bus empfohlen und als Cache Methode, sollen wir „Write Back“ auswählen. Da Microsoft mindestens 32GB Speicherplatz für Windows 10 angibt belasse ich es dabei. Bitte beachtet aber die Auswahl des Storage. Solltet ihr mehrere Storage Devices angelegt haben, müsst ihr den für euch richtigen aussuchen.
Unter CPU müssen wir der VM die entsprechenden Kerne zuweisen. Da dies auch später noch geändert werden kann, könnt ihr ruhig erst mal kleiner anfangen und euch nachträglich anpassen falls nötig. Ich beginne mal mit 4 Kernen. Ich habe aber auch schon ein Windows 10 mit 2 Kernen betrieben und es ging gar nicht so schlecht.
Das gleiche gilt auch für Memory. Auch hier könnt ihr nachträglich noch anpassen. Ich empfehle aber das Ballooning zu nutzen. Ihr gebt also ein Minimum und ein Maximum an. Je nach Auslastung, kann die Maschine sich dazwischen den Speicher nehmen, den sie gerade benötigt.
Im letzten Konfigurationsreiter, passen wir den Netzwerkadapter an. Wir wollen der VM ja nicht die komplette Netzwerkkarte durchreichen. Daher wählen wir hier VirtIO.
Jetzt sind wir mit der VM Erstellung durch. Bitte startet die VM noch nicht, wir müssen noch etwas konfigurieren, sondern bestätigt einfach nur per Klick auf „Finish“. Jetzt seht ihr schon eine neue VM im Baumverzeichnis. Bevor wir diese starten, müssen wir aber noch die VirtIO Treiber in die VM durchreichen. Dazu wählen wir die VM auf der linken Seite aus und klicken dann auf Hardware. Dort klicken wir auf „Add“ und erstellen ein weiters CD Laufwerk. Im neuen Fenster, wählen wir IDE als Bus aus und ändern die Nummer, es muss eine andere Nummer sein als beim Windows CD Device. Dann suchen wir wieder über Storage das richtige ISO Image aus und drücken auf „Create“.
Jetzt können wir die VM starten. Dazu einfach per Rechtsklick auf die VM drücken und „Start“ auswählen. Wir wählen uns den Menüpunkt „Console“ auf der VM und sollten schon das Windows Logo sehen. Als nächstes müssen wir die Angaben zur Sprache, Uhrzeit und Währung und zur Tastatursprache machen. Ich belasse alles auf Deutsch und klicke weiter. Im nächsten Fenster „Jetzt installieren“ anwählen. Jetzt wird der Setup Vorgang gestartet.
Als nächstes müssen wir unseren Produkt Schlüssel für Windows eingeben. Dies kann auch vorläufig ausgelassen werden. Aber natürlich benötigt ihr eine gültige Lizenz. Danach müssen wir die Lizenzvereinbarung akzeptieren. Direkt danach sagen wir, wir wollen nur Windows installieren (Benutzerdefiniert).
Wie ihr seht haben wir aktuell noch keine Festplatten, auf welchen wir Windows überhaupt installieren können. Das liegt daran, dass wir nicht die richtigen Treiber geladen haben. Das holen wir jetzt nach. Wir klicken auf „Treiber laden“ und danach auf „Durchsuchen“. Wir öffnen die virtio_win CD und suchen den Ordner „vioscsi“. Innerhalb diesem Ordner, gehen wir zu Windows 10 (w10), amd64 und klicken „OK“.
Mit einem Klick auf „Weiter“ laden wir erst mal diesen Treiber. Jetzt sollten wir auch schon unsere Festplatte sehen. Wir laden aber noch ein paar mehr Treiber. Dies machen wir wie beim anderen Treiber. Ich verkürze das etwas und benenne nur den Pfad. Wir wollen den NetKVM Treiber laden, unter NetKVM → w10 → amd64. Das ist unser Netzwerk Treiber, damit wir auch direkt bei der Installation die neuesten Updates ziehen können. Und dann benötigen wir noch die Ballooning Treiber. Diese finden wir unter Balloon → w10 → amd64. Das langt uns um zu installieren. Wenn wir wieder in der Übersicht sind, starten wir die Installation mit einem beherzten Klick auf „Weiter“.
Das kann jetzt eine Weile dauern und ab und zu kann es auch zu einem Neustart kommen. Wenn es dann aber durch ist, starten wir bei der Auswahl der Region. Hier bestätigen wir, dass Deutschland richtig ist. Weiter geht es mit dem Tastaturlayout, welches wir auch bestätigen und wir wollen auch kein zweites hinzufügen. Wir wollen Windows persönlich verwenden! Und wir möchten ein „Offline Konto“ verwenden. Uns ist auch klar, dass wir so natürlich nur eine „Eingeschränkte Erfahrung“ haben werden. Wir wählen einen Benutzernamen aus und vergeben ein Kennwort, welches wir auch noch bestätigen. Leider können wir die Sicherheitsfragen nicht überspringen. Daher wählt bitte 3 aus und gebt die Antwort dazu.
Ihr merkt schon, dass dies eine normale Windows Installation ist. Daher möchte ich hierauf gar nicht zu genau eingehen. Ihr könnt natürlich euer Windows so konfigurieren, wie ihr es für richtig haltet. Ich habe spezielle Aufgaben damit vor und benötige daher weder Spracherkennung (Skip), noch möchte ich, dass Apps meinen Standort benutzen und ich werde dieses Gerät bestimmt niemals suchen! Ich möchte auch nur die erforderlichen Diagnosedaten an Microsoft sende und ich möchte auch meine Eingaben nicht zur Verfügung stellen. Ich brauche keine Tipps und ich will auch keine Werbe-ID bzw. soll die niemand nutzen um mir bessere Werbung zu zeigen. Final stelle ich noch schweren Herzens den wohl besten Sprachassistenten der Welt ab.
Jetzt sollten wir aber so langsam durch sein. Das Windows wird für mich eingerichtet. Das klingt gut. Leider müssen wir nochmal warten. Aber irgendwann sehen wir ein aktives Windows.
Als erstes gehen wir in den Gerätemanager und schauen ob dieser direkt noch fehlende Treiber anmerkt. Wie es scheint fehlt mir zumindest noch der Treiber für den PCI Controller. Das erkennt ihr am gelben Dreieck mit Ausrufezeichen. Wir klicken den Controller mit Rechtsklick an und wählen „Treiber aktualisieren“. Ich suche diese auf meinem Computer und klicke auf „Durchsuchen“. Jetzt wählen wir uns wieder die virtio-win CD aus und klicken direkt auf „OK“. Windows sucht sich jetzt selber den Treiber. Wenn es einen findet, installieren wir diesen und bestätigen die Aktualisierung.
Ansonsten scheinen alle Treiber verfügbar. Daher installieren wir jetzt noch den guest-agent direkt von der CD. Wir öffnen also ein Explorer Fenster und wählen die virtio-win CD aus. Dort gehen wir in den Ordner guest-agent und führen den Installer für qemu-ga-x86_64 aus.
Wenn das durch ist, fahren wir die VM einmal runter, am besten direkt über Start. Wenn die VM richtig aus ist, starten wir diese wieder. Jetzt loggen wir uns ein sind eigentlich fertig. Wir haben eine laufende Windows 10 Instanz auf unserer Virtualisierungsplattform! Für etwas bessere Performance, rate ich den Remotedesktop zu nutzen. Aber natürlich könnt ihr auch jetzt schon mit dem System arbeiten. Ihr könnt es so konfigurieren wie ihr es braucht.
Wie immer handelt es sich um mein Beispiel. Passt also alles an eure Voraussetzungen an.
Ich hoffe euch hat der Artikel gefallen. Solltet ihr Fehler gefunden haben, generelle Fragen haben, oder wollt ihr einfach noch zusätzliche Informationen, dann schreibt mir bitte in die Kommentare. Ich versuche diese zeitnah zu beantworten.
Danke fürs lesen…..
Euer cedigger

Dieser Beitrag hat 12 Kommentare

  1. Ben

    Super Anleitung! Funktioniert in 2022 immer noch genauso, bis auf die Maschine mit Proxmox 7.1. Da muss q35 ausgewählt werden (oder später geändert, nachdem die VM mit Windows 10 fertig läuft). Denn sonst hat man in der VM einen fehlerhaften Netzwerkadapter, weil der Treiber nicht korrekt geladen wurde. Sobald man auf q35 wechselt und wieder startet ist alles ok.

    Außerdem gut, RDP: https://www.heise.de/tipps-tricks/Remote-Desktop-unter-Windows-10-einrichten-4262226.html

    1. cedigger

      Hallo Ben, danke für das Lob und natürlich bin ich froh, dass die Anleitung „noch“ funktioniert. Dies ist ja leider öfter ein Problem, dass sich die Umstände ändern und dann doch etwas ein wenig anders geht als zum Zeitpunkt meiner Prüfung. Ich muss gestehen, dass ich immer noch nicht auf das 7er Major Release von Proxmox gewechselt bin. Sobald ich an der Front loslege, kommt mein dein Tipp sicher zu Gute. Daher auch danke für die geteilte Information und den Link. Bis bald.
      cedigger

      1. Ben

        Danke für die Antwort. Ich wende mich gleich mal mit einem Problem an dich. Deine Installation läuft ja sehr gut. Der Netzwerktreiber wird erkannt und man hat in der VM Netz. Allerdings hatte ich auch versucht ein PCI passthrough hinzubekommen. Dazu muss ich sagen, dass mein System alt ist: LG1150 mit i5 Haswell. Aber ich habe die Vt-d Option im BIOS, seitdem ich den i5 benutze (vorher mit i3 nicht).

        Es gibt nun verschiedene Anleitungen, wie man ein passthrough hinbekommt. Die einfachste ist diese hier: https://www.reddit.com/r/Proxmox/comments/lcnn5w/proxmox_pcie_passthrough_in_2_minutes/

        Im Unterschied zu deiner Anleitung muss man ein OVMF(UEFI) wählen und den CPU-Typ korrekt setzen. Bei dir ist das „host“. Hier wäre es jetzt in meinem Fall „Haswell-noTSX“. Wenn ich das mache und dann installiere (nach deiner Anleitung), habe ich einen Fehler am Ethernetadapter. Woran könnte das liegen? Ich vermute es hat mit dem UEFI zu tun.

        In Bezug auf die Grafikkarte habe ich sie schon gesehen im Guest. Also ich hatte meine (ebenfalls paar Jahre alte) Nvidia GTX 560 Ti angezeigt bekommen, aber mit Fehler 43. Das wäre okay gewesen, wenn ich danach per RDP verbinden könnte. Aber das geht eben nicht ohne Ethernet. 🙂

        Außerdem scheint Proxmox Probleme damit zu haben einen Windows guest herunterzufahren. Das klappt bei mir nur aus dem Guest heraus und nie über die Proxmox „shutdown“ option.

        1. Ben

          Ich hätte vielleicht meinen eigenen ersten Kommentar nochmal lesen sollen… Dieselbe Problematik hatte ich ja auch bei deinem Install. Allerdings lässt sich nun das Problem im Gegensatz zum ersten Mal nicht beheben.

          1. cedigger

            Hi Ben, ich versuche dir ehrlich gesagt noch zu folgen 🙂 Unter https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines genauer gesagt „Virtual Machines Settings“ steht das sowohl die Anpassung des BIOS als auch die Auswahl des Q35 Chipsatz eigentlich nur zur Übergabe einiger PCIe Hardware notwendig ist. Jetzt stellt sich mir die Frage, wieso du keinen Netzwerkadapter nutzen kannst, wenn du nicht q35 auswählst. Hast du eine zusätzliche PCI Netzwerkkarte? Du müsstest doch im Bridge Mode zumindest den Netzwerkport des Host mit nutzen können oder? Also so wie es in dem Artikel steht unter Netzwerk samt der nachträglichen Treiber Installation (NetKVM).

            Ich hatte mich vor einer langen Zeit auch einmal mit PCIe Passthrough beschäftigt. Meine damalige CPU, auch ein i3, hat aber die Virtualiserungstechnik nicht unterstützt. Ich bin mir nicht mehr ganz sicher aber ich glaube mein BIOS hat die Option trotzdem angeboten. Aber Intel hat ja recht gute Spezifikationsseiten für ihre Prozessoren. Ich habe in letzter Zeit einige Videos zu den Themen gesehen. Generell kann ich zwei Typen empfehlen, welche sich sehr mit Proxmox, oder Virtualisierung, beschäftigen und gute Guides machen. Beide sprechen zwar schlecht deutsch 🙂 aber beide haben sich auch mit dem Thema GPU Passthrough in Verbindung mit Proxmox beschäftigt und Videos raus gebracht. Kannst ja mal schauen ob du bei denen fündig wirst. Der eine Kanal ist von Craft Computing und der andere nennt sich Techno Tim. Sorry wenn ich dir bei dem Thema keine große Hilfe bin.

            Deine Beobachtung mit dem nicht immer oder nur sehr verzögertem shutdown ist korrekt. Das scheint aber ein generelles Thema bei VMs zu sein. Auch meine Linux VMs lassen sich nicht wirklich über den Host ausschalten. Bzw. teilweise geht es schon aber es dauert manchmal ewig. Daher schalte ich die VMs „händisch“ aus, bevor der Host runtergefahren wird. Kommt bei mir aber sehr selten vor, dass der Proxmox Host aus geht. Dann gibt es immer ärger mit der Frau, weil zu Hause nix mehr geht 🙂

    2. Ben

      Ich habe noch ein paar Tests gemacht und kann definitiv confirmen, dass bezüglich deiner Anleitung Netzwerk nur mit q35 funktioniert, bei mir. Nach der ersten Änderung der Maschine hatte ich beim Restart ein Bootproblem – Windows kaputt. Dann habe ich die Version noch von 6.1 auf 6.0 gesetzt und rebootet und alles okay. Danach wieder auf 6.1 gesetzt und auch alles okay. Vielleicht nur ein Schluckauf.

      1. cedigger

        Hallo Ben, ich glaube dir das aber der Grund wäre schon interessant. Evtl. liegt es an der von dir eingesetzten Hardware. Wie schon geschrieben, sollte es bei Onboard Ethernetports eigentlich nicht notwendig sein. Aber scheinbar hast du es ja hin bekommen und alles ist gut. Dann weiterhin viel Glück!
        cedigger

        1. Ben

          Es läuft jetzt (auch als Antwort auf deinen langen Kommentar oben). Das Netzwerkproblem ist ein Problem der deutschen Windows 10 ISO. Mit einer englischen geht es. Shutdown ging nicht, weil ich teilweise keinen Guest Agent installiert hatte. PCI passthrough geht tatsächlich nicht mit meinem i3, aber mit einem i5 für 37 Euro. Dann bietet das BIOS auch explizit die Option Vt-d an. Eine GTX 560 läuft noch nicht, aber eine GT710 für 30 Euro ohne Probleme, weil die eine neuere Treiberversion nutzen kann, in der Nvidia das Blocking aufhebt. Mein Android Studio kann sogar den Emulator laden. Leider alles sehr langsam, was ich nicht so richtig verstehe. Vielleicht finde ich den Grund da noch. Die CPU musste ich auf „host“ setzen. Mit der Option „Haswell“ oder „Haswell-noTSX“ war kein passthrough möglich. Danke, dass du noch dabei bist. 🙂 Aber ist ja sicher auch für dich interessant. Ich kriege übrigens keine Benachrichtigung, wenn du antwortest. Obwohl ich meine Mailadresse hinterlege.

          1. cedigger

            Hallo Ben,

            schön das es jetzt läuft. Es ist ja immer etwas gefummel und versuchen dabei um eine Lösung für die eigenen Bedürfnisse und Voraussetzungen zu finden. Ich hatte auch das Gefühl, dass meine Windows VM teilweise echt eingeschlafen ist. Eine Besserung hat sich erst nach dem Wechsel auf eine neuere CPU (natürlich mit allem drum und dran) eingestellt. Ich habe aber ehrlich keine Erklärung dafür. Ich hätte immer auf fehlende technische Unterstützungen des alten i5 getippt. Ja na klar ist es interessant für mich und danke nochmal das du mich (evtl. auch andere) an deinen Erkenntnissen teilhaben lässt.
            PS.: Die Mailadresse war/ist ein altes Sicherheitsfeature um Bots abzuhalten. Ich habe diese drinnen gelassen aber zusätzlich noch das Captcha eingeführt. Hat aber keine Funktion.

          2. Ben

            Schon wieder Neuigkeiten: Mit aktivem Hyper-V läuft es schon etwas flüssiger. Ja, vielleicht gibt es einfach auch Unterschiede zwischen Vt-d in einem alten i5 und Vt-d in einem neuen. Sprich, der alte hätte zwar die Power, kann es aber noch nicht umsetzen. Jedenfalls: Mit einem extra systemd Skript für Proxmox ist jetzt auch Wake-On-Lan für jede VM aus einem beliebigen WOL-Client (z.B. miniWOL) möglich. Ich versuche mich allerdings gerade an einer Windows Server Installation, um herauszufinden, ob es dann vielleicht noch etwas besser läuft. Und weil das nativ ja mehrere parallele RDP-User anbietet. Allerdings habe ich mit der Konfig eines Win Servers 0 Erfahrung und es bisher noch nichtmal geschafft mir einen User anzulegen, der als Enduser bezeichnet werden kann und eine entsprechende Oberfläche hat. Möglicherweise muss man dafür Active Directory aktivieren etc.

          3. cedigger

            Man du legst ja ein Tempo an den Tag! Nicht schlecht. Das mit dem WOL klingt cool. Ich habe ehrlich gesagt noch keine Anwendung dafür. Ich betreibe nur 2 VM’s welche dauerhaft laufen (müssen). Der Rest sind Container. Das was ich für Tests benutze kann ich per Hand über das Webfrontend oder die CLI starten. Windows ist generell nicht so meine Domaine. Bin eher der Linux Freund. Daher drücke ich dir die Daumen aber bin dann wohl raus 🙂

  2. Ben

    Das ist auch mein Problem, dass ich mich bisher nur mit Linux auskenne. 🙂 Bis dahin!

Schreibe einen Kommentar