Einführung
In diesem Tutorial geht es um die Installation eines Windows Betriebssystems auf dedizierter Hardware ohne den Gebrauch einer KVM Konsole.
Voraussetzungen
- Einen Dedizierten Server im Rescue System
- Mehr als 8 GB RAM im Server
Schritt 1 - Server Vorbereiten
Sobald sich der Server im Rescue System befindet (Linux x64), muss folgende Software installiert werden.
apt update && apt install qemu-kvm
Als nächstes muss eine Windows ISO auf den Server übertragen werden. Mögliche Optionen wären:
- Hochladen per sFTP
- Einbinden eines SMB / NFS Speichers (Storage Box)
- Das Herunterladen der ISO von Microsoft / Hetzner
Auf dem Hetzner Mirror befinden sich auch Windows ISOs (diese können nur vom Hetzner Netz aus heruntergeladen werden):
Windows Server 2022 (ENG): https://mirror.hetzner.de/bootimages/windows/SW_DVD9_Win_Server_STD_CORE_2022_2108.15_64Bit_English_DC_STD_MLF_X23-31801.ISO
Windows Server 2019 (ENG): https://mirror.hetzner.de/bootimages/windows/SW_DVD9_Win_Server_STD_CORE_2019_1809.11_64Bit_English_DC_STD_MLF_X22-51041.ISO
Windows Server 2016 (ENG): https://mirror.hetzner.de/bootimages/windows/SW_DVD9_Win_Server_STD_CORE_2016_64Bit_English_-4_DC_STD_MLF_X21-70526.ISO
Das Image kann mit wget oder curl heruntergeladen werden:
wget <image>
Anschließend muss die Systemfestplatte noch vorbereitet werden. Hier muss eine Partitionstabelle angelegt werden.
Achtung bei folgenden Schritten werden alle Daten der Festplatte gelöscht.
Wenn der Server eine Nvme Festplatte verbaut hat, kann der Name der Festplatte zum Beispiel /dev/nvme0n1
sein statt /dev/sda
. Der Name der Festplatte kann mit lsblk
geprüft werden.
Starten von parted
auf der gewünschten Festplatte:
parted /dev/sda
Erstellen der Partitionstabelle bei Festplatten kleiner 2 TB:
mklabel msdos
Erstellen der Partitionstabelle bei Festplatten größer 2 TB:
mklabel gpt
Das ganze sollte dann in etwa so aussehen:
root@rescue ~ # parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) [mklabel msdos]
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be
lost. Do you want to continue?
Yes/No? [yes]
(parted) [quit]
Information: You may need to update /etc/fstab.
Alle Eingaben sind mit
[ ]
umrandet
Schritt 2 - Herstellen eines SSH Tunnels
Um später die Installation per VNC durchzuführen, wird ein SSH Tunnel benötigt. Andernfalls ist die Installation frei im Internet aufrufbar.
Unter Linux und Windows mit installiertem OpenSSH genügt es den folgende Befehl lokal auszuführen und sich am Server anzumelden.
ssh -L 8888:127.0.0.1:5901 root@your_host
Schritt 3 - Starten der Windows Installation
Jetzt kann mit der eigentlichen Windows Installation gestartet werden.
Prüfe erst, ob der Server beim Booten UEFI oder BIOS verwendet:
[ -d "/sys/firmware/efi" ] && echo "UEFI" || echo "BIOS"
Führe nun einen der folgenden Befehle (entsprechend abgeändert) auf dem Server aus:
-
Mit BIOS:
qemu-system-x86_64 -enable-kvm -smp 4 -m 4096 -boot d -cdrom SW_DVD9_Win_Server_STD_CORE_2022_2108.15_64Bit_English_DC_STD_MLF_X23-31801.ISO -drive file=/dev/sda,format=raw,media=disk -vnc 127.0.0.1:1
-
Mit UEFI:
qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -enable-kvm -smp 48 -m 16g -boot d -cdrom SW_DVD9_Win_Server_STD_CORE_2022_2108.15_64Bit_English_DC_STD_MLF_X23-31801.ISO -drive file=/dev/sda,format=raw,media=disk -vnc 127.0.0.1:1
Optionen | |
---|---|
-smp | Anzahl der CPU Kerne |
-m | Größe des verwendeten RAMs |
-cdrom | Pfad zum ISO Image |
-drive | Festplatte auf der das System installiert werden soll |
-vnc | VNC Server Einstellungen |
Als nächstes kann die Installation per VNC gestartet werden. Dazu muss man sich mit einem VNC Viewer der Wahl zur folgenden Adresse verbinden.
127.0.0.1:8888
Schritt 4 - Automatische IP Konfiguration
Damit man die richtige Netzwerkkonfiguration bekommt, wenn der Server von der Windows Installation bootet, muss ein Scheduled Task angelegt werden, der das folgende PowerShell Script ausführt.
foreach($Adapter in Get-NetAdapter)
{
New-NetIPAddress –IPAddress [IPAdresse] -DefaultGateway [Gateway] -PrefixLength [CIDR] -InterfaceIndex $Adapter.InterfaceIndex
}
Die Werte in den Klammern müssen entsprechend angepasst werden und das Script sollte dann unter C:\script.ps1
abgelegt werden.
Die Einrichtung des Scheduled Tasks erfolgt anhand dieser Schritte:
-
Startoptionen festlegen.
-
Aktion Festlegen.
-
PowerShell Optionen eintragen
-ExecutionPolicy Bypass -File C:\script.ps1
. -
Task Optionen Übersicht.
-
In den Sicherheitsoptionen sollte eingestellt werden, dass das Script auch ohne eine Benutzeranmeldung startet.
Schritt 5 - Netzwerk Treiber installieren
Es kann die Möglichkeit bestehen, dass Windows nicht mit den erforderlichen Netzwerktreibern ausgeliefert wird, sodass der Server nach dem Booten nach wie vor kein Internet haben kann.
- Um dieses Problem zu umgehen, sollte man zunächst den Namen des Netzwerkadapters herausfinden: In diesem Fall heißt der Adapter 1 Gbit I219-LM von Intel. Anschließend muss das komplette Treiberpaket für alle Netzwerkadapter für Ethernet von der offiziellen Internetseite von Intel heruntergeladen und dieses Treiberpaket entpackt werden.
- Nun kann der Geräte-Manager geöffnet werden. Unter dem Reiter "Netzwerkadapter" befindet sich der aktuell genutzte Netzwerkadapter. Dieser kann von dem im Bild gezeigten Namen abweichen. Klicke mit der rechten Maustaste auf diesen Adapter, um das Kontextmenü zu öffnen. Wähle "Treiber aktualisieren" aus.
- Wähle nun "Auf meinem Computer nach Treibern suchen" aus.
- Wähle anschließend "Aus einer Liste verfügbarer Treiber auf meinem Computer auswählen" aus.
- Klicke auf "Datenträger" und wähle "Durchsuchen" aus.
- Navigiere zu dem Treiberpaket, das in Schritt 5.1 heruntergeladen und entpackt wurde.
- Gehe für Intel und einen 1-GBit-Netzwerkadapter zum Ordner "Pro1000", dann zum Unterordner "Winx64".
- In dem Ordner "Winx64" sind für die jeweiligen Windows-Versionen die einzelnen Treiber.
- Um den passenden Treiber für die entsprechende Windows-Version zu finden, öffne das heruntergeladene Treiberpaket in einem neuen Fenster und lese die
Readme.txt
-Datei. Darin steht die verwendete Windows-Version und ob für diese Windows-Version der Treiber für die Netzwerkadapter vorhanden ist. - Nimm gegebenenfalls den Haken für "Kompatible Hardware anzeigen" heraus.
- Finde die passenden Treiber für die Netzwerkkarte des dedizierten Servers.
- Drücke auf "Weiter", auch wenn Windows sagt, dass es nicht kompatibel ist. Diese Meldung kann ignoriert werden, da der aktuelle Adapter nur emuliert ist.
Schritt 6 - RDP Aktivieren & Firewall Deaktivieren
Um sich später per RDP mit dem Server zu verbinden, muss diese aktiviert werden:
Um weitere Fehlerquellen zu minimieren, macht es Sinn die Windows Firewall vor dem Neustart zu deaktivieren (dies ist aber optional).
Nun kann Windows heruntergefahren werden und im Anschluss der Server neugestartet werden. Nach ein paar Minuten sollte es möglich sein sich per RDP mit dem Server zu verbinden.
Schritt 7 - Script Deaktivieren
Nun sollte der Scheduled Task wieder Deaktiviert werden und die Firewall entsprechend überprüft und wieder eingeschaltet werden. In den Netzwerkeinstellungen sollten auch noch DNS Server hinterlegt werden, da diese mit dem Script nicht gesetzt wurden.
Ergebnis
In diesem Tutorial wurde die Installation eines Windows Betriebssystems ohne den Einsatz einer KVM Konsole behandelt.