Grundlagenartikel Eine Alternative: Windows 10 "bare metal" in VHDX installieren

Besterino

Urgestein
Mitglied seit
Jul 22, 2018
Beiträge
6.709
Bewertungspunkte
3.309
Punkte
112
So Ihr Lieben,

einfach weil ich es interessant und für bestimmte Einsatz-Szenarien total praktisch finde, hier einmal eine Idee für Eure zukünftige Windows-Neuinstallation: Anstatt Windows 10 ganz normal über ein Boot-Medium (USB-Stick, DVD o.ä.) zu installieren, bedienen wir uns hier einmal einiger "Profi"-Tools und umgehen das einfach elegant bzw. sparen dann in der Zukunft bei Neuinstallationen deutlich Zeit.

Und weil einfach nur auf eine Partition installieren zu einfach und langweilig ist, installieren wir Windows heute mal nicht direkt auf eine Partition, sondern in einer "virtuellen Festplatte" in der Microsoft-Geschmacksrichtung "VHDX".

Weiterführende Links & Quellen:
Boot to a virtual hard disk: Add a VHDX or VHD to the boot menu | Microsoft Docs
UEFI/GPT-based hard drive partitions | Microsoft Docs

Was wir dafür brauchen:

1.
Einen funktionierenden PC mit laufendem Windows 10

2.
Einen separaten Datenträger, der als Ziel-Medium und also zukünftig als Boot-Disk dienen soll.

3.
Den Inhalt eines Windows 10 Installationsmediums, also Boot-Stick oder ISO; ich mache das immer mit einer ISO-Datei (DVD-Abbild), da sich das so schön unter Windows einhängen lässt und man ohne Weiteres darauf zugreifen kann. Ihr bekommt das über das Microsoft Media Creation Tool.

Achtung: diese kleine Anleitung geht davon aus, dass der neue PC über ein UEFI verfügt und auch davon booten soll!

Vorbereitung:

Ich habe - aus verschiedenen Gründen - mich dieses Mal für etwas "exotischere" Hardware in Sachen Zieldatenträger (oben Nr. 2) entschieden, nämlich eine SATA m.2 SSD in einem USB-Gehäuse, konkret eine WD Blue 2TB im Silverstone MS09:

Teile.jpg

Fertig.jpg


Wenn Ihr eine normale SATA oder NVME SSD habt, müsst Ihr die natürlich mit dem Mainboard verbinden.

Dann ganz normal Windows starten und es kann losgehen:

Als erstes hängen wir unsere Windows-ISO (s.o. Nr. 3) ein. Einfacher Doppelclick darauf genügt, und dann könnt Ihr auf die Windows-ISO zugreifen:

WinISO.jpg

Für alles Weitere gehen wir mal davon aus, dass die Windows-ISO jetzt als Laufwerk E: verfügbar ist.

Wir öffnen also nun eine CMD mit Administratorenrechten: Start-->CMD eintippen-->klick "Als Administrator ausführen" und den Hinweis mit OK bestätigen:

CMD.jpg

Nun wird's spannend. Und auch etwas gefährlich, wenn man etwas verkehrt macht - nämlich bei einem der folgenden Befehle den falschen Datenträger erwischt!

Wir rufen diskpart (diskpart eintippen) auf und lassen uns die vorhandenen Datenträger anzeigen (list disk):

diskpart.jpg

...und weil man nur 5 Bilder pro Post anhängen darf, geht's gleich weiter...
 
Zuletzt bearbeitet :
Jetzt wählen wir mit "select disk #" den Datenträger aus, der als neue Boot-Disk dienen soll. In meinem Fall ist das "Datenträger 7". Und weil wir paranoid sind, machen wir danach noch einmal ein "list disk": der ausgewählte Datenträger hat ein Sternchen bekommen!

Datenträger.jpg

So weit, so richtig.

Nun bereiten wir den Datenträger vor. Damit Windows davon booten kann, benötigen wir 4 Partitionen, und zwar:

EFI
MSR
Daten
Recovery

Aber bevor wir damit anfangen, konvertieren wir den Datenträger ins GPT-Format mit "convert GPT" - falls der Datenträger nicht völlig leer war (und ggf. schon einmal als MBR initialisert wurde), hilft ein "clean" - empfiehlt sich eigentlich sowieso:

convert.jpg

Nun ist die Disk also für weitere Schandtaten bereit.

Wir bauen nun die nötigen Partitionen auf und formatieren sie auch gleich

1. EFI Partition
Ich empfehle MINDESTENS 400MB dafür - auch wenn Microsoft hier in dem Link unten nur 100MB vorsieht! Mit nur 100MB kann man später gerade bei größeren Upgrades (Releases) Probleme bekommen. Wenn ich mich richtig erinnere, empfiehlt Microsoft inzwischen auch mindestens 300MB. Weil viel viel hilft, geize ich nicht und nehme gleich 500MB. Who cares. Und dann formatieren wir diese Partition auch gleich mit FAT32.

Anmerkung: Diskpart wählt die zuletzt kreierte Partition automatisch als aktive Partition aus. Die aktive Partition - also die Partition, auf der entsprechende Kommandos angewendet werden - könnt Ihr Euch mit "list part" (wie zuvor list disk) anzeigen lassen.

Also legen wir mit der EFI-Paritition los:
create partition efi size=500
list part (auf Sternchen achten)
format quick fs=fat32 label="System"

EFI.jpg

Da wir gleich auf diese Partition zugreifen müssen, vergeben wir auch gleich einen Laufwerksbuchstaben (der bitte noch frei ist!) mit assign letter=S (wird also Laufwerk S:).

Können wir uns nun auch bestätigen lassen, mit dem Befehl "list vol" werden uns die vorhandenen Volumens angezeigt und eben auch die Laufwerksbuchstaben:
Buchstabe_S.jpg

2. MSR-Partition
Windows braucht sie, also bekommt es sie (muss min. 16MB groß sein). Kann man sich mit "list part" auch wieder anzeigen lassen. Also:

create partition msr size=16

MSR.jpg
 
Zuletzt bearbeitet :
3. Daten-Partition

Nun können wir uns der eigentlichen "Daten-Partition" widmen. Gibt jetzt zwei Möglichkeiten: entweder Ihr nehmt den gesamten Platz minus ein paar hundert MB für die Recovery Partition, oder ihr legt eine feste Größe fest. Da meine SSD recht groß ist und ich da noch andere Dinge draufpacken will außer Windows, lege ich eine feste Größe (250GB) fest. Außerdem formatiere ich die Partition mit NTFS und weise dieser Partition einen Laufwerksbuchstaben (W) zu. Um sie von meiner eigentlichen Boot-Disk im Rechner besser unterscheiden zu können, nenne ich diese Partition direkt "WinUSB".

create partition primary size=250000
format quick fs=ntfs label=WinUSB
assign letter=w

DatenPart.jpg

Exkurs: Solltet Ihr keine feste Größe festlegen und nur den Platz für die Recovery-Partition freilassen wollen, sieht das etwas anders aus: beim Anlegen legt ihr keine Größe fest, sondern verkleinert einfach die Partition um die gewünschte Größe (vor dem Formatieren). Also:

create partition primary
shrink minimum=650
format quick fs=ntfs label=WinUSB
assign letter=w

4. Recovery Partition

Zu guter Letzt legen wir nun noch die Recovery Partition an. Das einzige Besondere hier ist, dass diese Partition eine besondere ID und wohl feste Attribute bekommen muss, sonst lübbt das Ganze nicht.

Hier mach' ich's wieder etwas anders, da ich nicht den gesamten Rest der Disk als Recovery haben möchte, sondern eben nur 650MB. Wenn Ihr es oben wie in dem Exkurs gemacht habt, könnt Ihr den "size" Parameter einfach weglassen. Wieder formatieren, Buchstaben zuweisen, sowie ID und Attribute setzen.

create partition primary
format quick fs=ntfs label="Recovery tools"
assign letter=r
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001


recovery.jpg


5. VHDX-Datei erstellen

Geht netterweise auch mit Diskpart. Ich nehme die Version, die sich bis zu einer bestimmten Maximalgröße bei Bedarf vergrößert und wähle dafür 200GB. Ich erzeuge die VHDX gleich auf meinem neuen Datenträger, also Laufwerk W, und die wird dann auch gleich eingehängt, zu GPT konvertiert, mit einer Partition versehen und Laufwerksbuchstabe (V) zugewiesen.

Code :
create vdisk file=w:\WinUSB.vhdx maximum=200000 type=expandable
attach vdisk
convert gpt
create partition primary
format quick label=vhdx
assign letter=v

VHDX.jpg


Jetzt haben wir also einen frisch & fertig vorbereiteten Datenträger einschließlich VHDX-Datei, um Windows aufzunehmen! Diskpart benötigen wir nicht mehr und verlassen es mit "exit".

Bevor wir nun weiter machen, müssen wir erst einmal schauen, welche Windows-Version wir installieren wollen.

Dazu wechseln wir in das "Sources"-Verzeichnis unserer Windows-ISO (wir erinnern uns: ganz oben im ersten Post Nr. 3 und jetzt eingehängt als Laufwerk E). Darin sollte eine install.ESD Datei liegen, manchmal (früher?) ist das aber auch eine WIM-Datei. Macht am Ende keinen Unterschied, wir müssen's nur wissen. Wir schauen also nach:

Code :
e:
cd e:\sources
dir install.*

installESD.jpg

Nun kommt so ein Windows Installations-Medium mit mehreren Windows-Versionen daher - u.a. Pro, Home usw. - die alle in dieser einen Datei enthalten sind. Diese lassen wir uns nun anzeigen mit:

Code :
dism /get-wiminfo /wimfile:e:\sources\install.esd

Ich will Windows 10 Pro, also Index Nr. 5 (merken!).


DISM_WinVer.jpg
 
Zuletzt bearbeitet :
Teil 1 der Magie...

...ist jetzt nur noch ein schnöder Befehl, bestehend aus der Angabe der Installations-Datei als Quelle (=install.esd), dem richtigen Index-Eintrag (wir wollten Nr. 5 - siehe oben) und dem richtigen Ziellaufwerk, hier die VHDX mit dem Laufwerksbuchstaben V:

Code :
dism /apply-image /imagefile:e:\sources\install.esd /index:5 /applydir:v:\

Das kann jetzt etwas dauern. =)

Dann sollte das dann erfolgreich durch sein:

Installieren.jpg

Das Geniale: Wir haben jetzt eine VHDX mit einem quasi komplett installierten aber zugleich völlig jungfräulichem Windows 10 Pro! Und mit minimalem Platzverbrauch dank dynamisch wachsendem Datenträger. Und so eine VHDX lässt sich total einfach kopieren...

Einziger Haken: booten kann das Ganze leider noch nicht, aber dazu kommen wir jetzt.

Teil 2 der Magie...

...ist im Prinzip auch wieder nur ein simpler Befehl. Wir wechseln dazu jetzt "in" unsere VHDX-Datei, gehen dort in das Windows\system32 Verzeichnis und kreieren den "bootsektor". Wichtig: mit dem Parameter /s die Ziel-Partition angeben, das ist bei uns also die oben erstellte EFI-Partition mit dem Laufwerksbuchstaben S! Ansonsten wird u.U. euer ECHTER Bootsektor überschrieben und dann dürft Ihr den auch wieder manuell reparieren (immerhin: wie das ginge, müsstet Ihr nach diesem Tutorial eigentlich sogar wissen...).

Code :
v:
cd v:\windows\system32
bcdboot v:\windows /s S: /f UEFI

BCDBOOT.jpg

Tjo. Das wars eigentlich. Jetzt werfen wir nur noch die VHDX aus, entweder über DISKPART mit "detach vdisk" oder über den Explorer:

detach.jpg


==> ACHTUNG: JETZT IST DER RICHTIGE MOMENT, UM DIE VHDX EINMAL WOANDERS HIN ZU KOPIEREN <==
(...ist ja schließlich taufrisch, und da kann man ja alles Mögliche mit machen...;))

Und nun gehen wir an den anderen PC, stöpseln da den präparierten Datenträger an und booten...
 
Zuletzt bearbeitet :
...da ich das jetzt nicht auf einem anderen PC sondern am gleichen mache, muss ich den Boot-Datenträger auswählen. Auf Samsung ist mein "altes" System, auf der WD das soeben installierte:

01.jpg

...sieht gut aus... Geräte werden bereit gemacht, ein-, zweimal rebooten...

00.jpg

...tada! Operation erfolgreich!

02.jpg


Und jetzt kann man wie gewohnt mit der Einrichtung weitermachen.

Vor dem Einrichten war die VHDX ca. 10GB groß, nach dem Einrichten (Treiber usw.) schon satte 20GB:

vorher_Nachher.JPG


So - und warum jetzt das Ganze? Mit so einer VHDX lässt es sich einfach viel schön Rumspielen: Backup des ganzen Systems? VHDX kopieren. Vervielfältigung? VHDX kopieren. In eine VM einhängen? Einfach die VHDX als virtuelle Festplatte in der VM benutzen.

Mögliche Anwendungsbereiche = vielfältig und bequem. Und mit den gezeigten Werkzeugen / Befehlen lässt sich so einiges (wieder) hinbekommen, wenn Windows mal nicht so will wie man selbst. ;)
 
Zuletzt bearbeitet :
Coole Sache, die Vorteile sind wirklich groß.

Welche Nachteile gibt es deiner Meinung nach?
 
Was ich noch ausprobieren muss, ob man die VHDX einfach austauschen kann und der dann immer noch ohne Weiteres von der bootet. Dann könnte man echt locker verschiedene Systeme einfach durch Umbenennen durchwechseln. Alternativ kann man natürlich auch einfach mehrere VHDX „nebeneinander“ dem Windows Boot-Manager hinzufügen. Theoretisch ist sogar Linux in einer VHDX denkbar. :D


Nachteile sehe ich eigentlich aktuell keine. Performance in VHDX kommt normalerweise sehr nah an „bare metal“ heran.

ABER: Ich bin mal gespannt, ob ein großes Windows-Release-Upgrade ohne zicken durchläuft. Das fummelt bisweilen auch in der EFI, MSR oder Recovery Partition rum und ich durchschaue noch nicht abschließend, ob Microsoft mit solchen eher exotischen Setups umgehen kann.

Ich bin jedenfalls echt immer wieder überrascht, was für eine gigantische Weiterentwicklung es bei solchen Spielereien schon seit Win7 gegeben hat. Von WinXp oder gar 95/98 mal ganz zu schweigen.
 
Sowas. Gerade heute dachte ich mir, ich sollte mal eine Anleitung dafür schreiben, habs bei mir auch so am laufen und habe mir eine neue SSD gekauft - die wird so installiert werden.
Für mich zusätzlich ein großer Vorteil: Funktionsupdates werden nicht gemacht. Vor dem Installieren eines Funktionsupdates testet das Setup, ob es in einer VHD läuft - falls ja scheitert es. Das ist von Microsoft so gewollt, aber warum weiß ich leider nicht. Mir ist es recht.
Wie macht man dann ein Funktionsupdate? Man startet die VHD in einer virtuellen Maschine, dann gehts. Also kann ich die Funktionsupdates machen wann ich es möchte, und nicht wann es Microsoft will. Da kann ich immer erstmal abwarten, ob das Update wegen Fehlern nicht wieder zurückgezogen wird.
Nachteile? Das Updatedings kann man natürlich auch als Nachteil sehen. Ansonsten gibt es meines Wissens keine.

Ich habe bei mir eine VHD aufgesetzt und kopiert, umbenannt und kann von zwei Systemen starten. Eine Arbeitsumgebung, eine zum Zocken. Vorteil: Die Zockumbebung sieht die Arbeitsumgebung genau gar nicht - nur die VHD-Datei - und umgekehrt natürlich auch. Man kann nur, wenn man eine VHD gebootet hat, die andere nicht einfach mounten. Da die echt identisch sind, sind auch die IDs identisch, das mag das System nicht und bricht mit Fehlermeldung ab.
 
besonders cool ist natürlich auch die Option, die VHD(X) mal aus Spaß als virtuelle Maschine mit Snapshots und allem Zipp&Zapp anzuwerfen. Bin aber noch nicht sicher, ob das mit der von mir so angelegten VHDX geht oder ob ich dafür eine EFI- und MSR-Partition in der VHDX hätte anlegen müssen... Probier ich nachher mal... ;)
 
@Besterino
Ich habe noch ein paar Fragen:
  1. Kann man damit auch mehrere bootfähige Win10 Installationen mit mehreren VHDX-Dateien auf eine SSD bringen?
  2. Kann man das irgendwie mit Grub kombinieren?
  3. Kann man die Win10 Installation so einstellen, dass sie andere Laufwerke auf dem Rechner nicht erkennt?
 
1. Ja kann man. Die unterschiedlichen bootfähigen VHDX können einfach in den Bootmanager eingetragen werden.
2. Hm... Wenn Grub den Windows-Boot-Manager lädt, dann könnte das gehen. Ob das komfortabel ist?
3. Wenn man den Laufwerken den Laufwerksbuchstaben wegnimmt - reicht Dir das?
 
Zu 1. siehe @funkdas

zu 2. könnte(TM) - ich würde es aber wohl umgekehrt machen, also über den Windows-Bootmanager die VHDX mit „Linux drin“ ansprechen lassen. Mit der VHDX dürfte Grub wohl nichts anfangen können. Spannend dürfte es auch werden, das Linux da erstmal „in die VHDX“ zu bekommen. Sollte aber alles grds gehen, siehe Post Nr. 23 hier: https://superuser.com/questions/33535/can-i-boot-linux-from-a-vhd

3. Ich würde die Disks auf „offline“ setzen. Die anderen VHDX-„Systeme“ sehen sich wechselseitig ja nicht, nur als Datei und halt das Laufwerk auf dem sie sich befinden.

Ansonsten: für mich ist das auch gerade alles Neuland. Hab mir das primär zusammengeschustert weil ich mal wissen wollte, wie meine Hardware mit einem frischen Windows performed ohne direkt das Ist-System plattmachen zu müssen. Und als ich da einmal dran war plus keine Lust hatte, wieder an meinem Tisch herumzuschrauben und also was externes zum Booten brauchte, kam irgendwie eins zum anderen... :p
 
Danke für die Antworten. Wie kann ich das in den Bootmanager eintragen? Zu Linux komme ich später nochmal zurück.

Ich habe gerade ein sehr interessantes Tool entdeckt, mit dem man ein bestehendes Windows in eine VHDX-Datei umwandeln kann: Disk2vhd

Hier der Link: https://docs.microsoft.com/en-us/sysinternals/downloads/disk2vhd Allerdings ist das schon ziemlich alt, mal sehen, ob es mit Windows 10 funktioniert.
 
Kleine Ergänzung, die manchmal ganz praktisch ist:
mit disk2vhd kann man bestehende physische Installationen in eine VHD umwandeln.
Vielleicht gibts sowas auch für linux?
Bin davon ausgegangen, dass die Linuxinstallation schon läuft. Andererseits ist Linux ja auch recht flott neuinstalliert.
 
Ey @HerrRossi - disk2vhd hab ich bestimmt schon 78x erwähnt in verschiedenen Posts. :p

So hörst du mir zu...

Das funzt immer noch super. Hab erst kürzlich damit mein aktuelles System weggesichert.
 
Mit disk2vhd kannst du auch (physisch installierte) Linux-Platten virtualisieren. Ich hab das damals (2015?) mit meinem damaligen Linux-NAS gemacht. :)

EDIT: und dann irgendwann die VHD in eine VDMK für VMware umgewandelt und so lief die Kiste dann noch einige Zeit unter ESXi als VPN-Server - bis ich den dann irgendwann auch mal neu aufgesetzt hab.
 
echt schnicke, werde ich mal ausprobieren in wenn ich meinen einen PC in ein andere Gehäuse verpflanzt habe.
Wenn das dann alles glatt geht wäre super und spart enorm Zeit:) vorallem für die Kids, welche leider nur Win in der Schule kennenlernen :( einfach mal ein Linux statt Windos draufzaubern (vllt teste ich auch mal ob man eine VHD von einem Mac bekommt)
 
Oben Unten