Verschieben Sie die EFI-Systempartition auf ein anderes Laufwerk

13

Ich hatte eine Windows 8-Installation auf einer Festplatte mit UEFI als Boot. Die Festplatte verfügt über die folgende GPT-Tabelle:

DISKPART> list partition

Partizione ###   Tipo              Dim.     Offset
---------------  ----------------  -------  -------
Partizione 1     Ripristino         300 Mb  1024 Kb
Partizione 2     Sistema            100 Mb   301 Mb
Partizione 3     Riservato          128 Mb   401 Mb
Partizione 4     Primario           390 Gb   529 Mb
Partizione 5     Primario           540 Gb   390 Gb

(Ich entschuldige mich für die italienische Sprache, aber die Übersetzung ist recht unkompliziert).

Ich habe kürzlich ein SSD-Laufwerk gekauft, es angeschlossen und ein neues Windows 8 installiert. Jetzt läuft ein Dual-Boot, aber die UEFI-Partition befindet sich auf der Festplatte anstelle der SSD. Hier ist die Liste der SDD-Partitionen:

Partizione ###   Tipo              Dim.     Offset
---------------  ----------------  -------  -------
Partizione 1     Riservato          128 Mb  1024 Kb
Partizione 2     Primario           221 Gb   129 Mb

Ich denke, die beste Lösung wäre es, sie aus zwei Gründen auf der SSD zu haben:

die erste ist die Leistung (ich denke, es wäre ein bisschen schneller auf der SSD aufgrund der Hochlaufzeit für eine Festplatte, aber ich kann mich irren)

Der zweite Grund ist die Konsistenz. Da ich nur die Windows 8-Installation auf der SSD verwenden möchte und wahrscheinlich die Systempartition auf der Festplatte löschen werde, um sie als Datenspeichergerät zu verwenden, sollte sich die Startpartition auf derselben befinden Laufwerk als Betriebssystem.

Die Frage ist also, wie ich die EFI-Systempartition auf die SSD verschiebe.

Pincopallino
quelle

Antworten:

4

Meine Empfehlung ist, sich nicht darum zu kümmern. Die Leistungsverbesserung ist vernachlässigbar, da die vom ESP gelesenen Dateien winzig sind und nur beim Starten des Computers gelesen werden. Darüber hinaus ist die Partition selbst nach modernen Maßstäben winzig, sodass Sie nicht genügend Speicherplatz zur Verfügung haben, damit sich die Mühe lohnt. Darüber hinaus besteht bei dem Versuch, den ESP zu verschieben, die Gefahr, dass Startprobleme auftreten, deren Behebung wesentlich länger dauert, als Sie es möglicherweise bei einer kürzeren Startzeit von Beginn an sparen könnten.

Wenn Sie dies trotz meiner Empfehlung als Lernerfahrung durchführen möchten, müssen Sie Folgendes prüfen:

  • Erstellen eines ESP mit einer beliebigen Partitionierungssoftware. Ich bin nicht sicher, wie Sie dies mit den Standard-Windows-Tools tun würden. Mit gdisk, Sie würden eine Partition vom Typ EF00 erstellen, müssten dann aber ein FAT-Dateisystem darauf erstellen gdisk ist ein Partitionierungsprogramm (es verarbeitet keine Dateisysteme).
  • Mounten Sie beide ESPs gleichzeitig, um Dateien zu kopieren (oder nacheinander mithilfe des temporären Speichers). Ich bin mir nicht sicher, wie ich das unter Windows machen soll, obwohl es unter Linux oder mit einer EFI-Shell einfach wäre. (In einer EFI-Shell wäre dies in der Tat automatisch.)
  • Registrieren des Bootloaders in seinem neuen Zuhause. (Verwenden Sie den Fallback - Dateinamen von EFI\BOOT\bootx64.efi wäre wahrscheinlich eine einfachere Alternative, ist aber die weniger bevorzugte Methode zum Laden des Bootloaders.) Das Windows bcdedit Befehl und die EFI-Shell bcfg Tool kann beide Bootloader registrieren; jedoch, bcdedit ist unflexibel, da Windows nur ein ESP unterstützt, was Probleme beim Kopieren des ESP verursacht.
Rod Smith
quelle
Vielen Dank für Ihre Antwort. Nun, ich bevorzuge es tatsächlich, das ESP in der SSD zu haben, weil ich mich entscheiden könnte, die Festplatte zu entfernen. Daher denke ich, dass sich das ESP auf dem OS-Laufwerk befinden sollte. Wie wird der letzte Punkt gemacht?
Pincopallino
Egal, ich habe es geschafft, die Partition regelmäßig auf die SSD zu verschieben und Windows zu booten. Vielen Dank!
Pincopallino
Einige interessante Informationen hier, die wahrscheinlich SEHR wertvoll sind, um zu erklären, was in einem verallgemeinerten HOWTO passiert, aber nicht wirklich zu beantworten: "Die Frage ist also, wie ich die EFI-Systempartition auf die SSD verschiebe?" Ich habe Tage meines Lebens damit verbracht, mich vor ein paar Jahren von einer schlechten Entscheidung zu erholen, und es verfolgt mich immer noch, und kurz gesagt, es kommt darauf an, meine EFI-Partition zu verlagern, also würde ich gerne eine gute Antwort sehen.
rainabba
Es ist zu beachten, dass zwei EFI-Partitionen manchmal dazu führen, dass Windows-Aktualisierungen auf äußerst undurchsichtige Weise fehlschlagen. Löschen Sie daher die alte nach dem Verschieben.
Jack Wasey
6

Für Leute wie mich, die von Google kommen: Ja, dies ist mit Windows ohne Tools von Drittanbietern möglich. Getestet mit Windows 10 Pro x64. Ich habe dieses Verfahren verwendet, um sowohl die EFI-Systempartition als auch die System Reserved-Partition zu verschieben. Es sollte auch unter Windows 8 funktionieren.

Wenn auf Ihrem primären Laufwerk nicht genügend Speicherplatz vorhanden ist, müssen Sie zuerst Ihre C: -Partition (oder eine entsprechende Partition) verkleinern. In diesem Beispiel verwende ich 260 MB, da dies für neuere Laufwerke erforderlich ist, für ältere Laufwerke mit kleineren Sektoren jedoch nur 100 MB. Wenn Sie keinen Platz mehr benötigen, notieren Sie sich die Kommentare, aus denen hervorgeht, welche Schritte Sie überspringen sollten.

Wenn Sie schon dabei sind, möchten Sie wahrscheinlich Ihre System Reserved-Partition verschieben. Diese sind normalerweise 1000 MB groß und speichern nützliche Windows-Metadaten. Möglicherweise stellen Sie fest, dass einige Windows-Funktionen ohne eine System Reserved-Partition nicht funktionieren. Ich habe die Schritte zum Erstellen einer solchen Partition auf Ihrem primären Laufwerk angegeben und diese Schritte mit Kommentaren versehen. Es sollte einfach sein, diese Schritte auszuschließen, wenn Sie sie lieber überspringen möchten, aber Sie müssen die Zahlen beim Verkleinern ändern (z. B. 260 MB anstelle von 1260 MB).

Kommentare werden mit vorangestellt REM (für "Bemerkung"), da diese sowohl von cmd.exe als auch von diskpart.exe unterstützt werden.

Von cmd.exe, das als Administrator ausgeführt wird:

diskpart
list disk
REM Choose the appropriate disk number from the list.  If you're unsure, you can open diskmgmt.msc; the numbers will be the same.
sel disk 0
list part

REM Perform the following only if you need to shrink a partition to make space for the EFI partition.
REM Choose the appropriate partition from the list.  I used my C: partition.
sel part 2
shrink desired=260
REM End of shrinking operation.

REM Create a new EFI partition:
create part efi size=260
format quick fs=fat32
list vol
REM Find your newly created volume in the list.  If it's not already selected (marked with an asterisk), select it now with "sel vol #".
REM You'll need to give the volume a drive letter for later:
assign
list vol
REM Note the drive letter that the volume has been given.  Mine was F:, so I'll use that in the example.
REM Done creating new EFI partition.

REM Optionally create a new System Reserved partition:
create part msr size=1000
REM Done creating new System Reserved partition.

REM We're done with diskpart.exe:
exit
REM You should no longer see the DISKPART> prompt.

REM Note that you may need to change these drive letters, particularly F:.  F: should match the volume you created previously.
bcdboot C:\Windows /s F: /f UEFI

REM We no longer need a drive letter for the EFI partition, so we should remove it:
diskpart
list disk
REM Change disk number appropriately.
sel disk 0
list vol
REM Change volume number appropriately.
sel vol 2
REM Remove drive letter assignment:
remove
REM Exit diskpart.exe:
exit

REM Exit cmd.exe:
exit

Es ist Zeit, einen Neustart durchzuführen, um sicherzustellen, dass alles funktioniert. Möglicherweise müssen Sie die Einstellungen für die BIOS-Startreihenfolge aktualisieren, damit sie den Änderungen entsprechen. In meinem Fall waren die BIOS-Einstellungen bereits korrekt, sodass ich in einer Neustartschleife feststeckte. Jedes Mal, wenn ich meinen Computer starten wollte, musste ich das alte Laufwerk mit der falsch platzierten EFI-Partition manuell auswählen.

Wenn alles wie erwartet funktioniert hat, können Sie die alte EFI-Partition löschen. Wenn dies nicht funktioniert oder Ihr BIOS immer noch so konfiguriert ist, dass es von der alten Partition bootet, können Sie es von Windows nicht löschen, selbst wenn Sie das Überschreibungsflag in diskpart.exe verwenden. Da Sie diese alte Partition wahrscheinlich sowieso entfernen möchten, ist das Löschen eine gute Möglichkeit, um sicherzustellen, dass Sie von der neuen Partition booten.

diskpart
list disk
REM Change disk number appropriately.
sel disk 2
list part

REM You can repeat this next group of steps to delete as many "special" partitions as you like.  I had 4 reserved partitions from an old OEM installation.  Just make sure you don't delete your data!  The "override" flag is only necessary for partitions that can't normally be deleted.
REM Change partition number appropriately.
sel part 1
del part override

REM When you're done, exit diskpart.exe:
exit

REM Exit cmd.exe:
exit
Zenexer
quelle
1
Eine sehr ausführliche und gut erläuterte Antwort, die funktioniert! Vielen Dank!
kumar_harsh
2

Ich weiß, dass dies ein alter Beitrag ist, aber ich denke, dass viele immer noch nach einer guten Antwort suchen.

Dies gilt für Windows 7, 8, 10. Dies gilt auch für die Ereignis-ID: 12290 Befindet sich die EFI-Partition auf einer anderen Festplatte als der, die das aktive Betriebssystem ist und gesichert werden soll.

Trennen Sie zuerst alle anderen Laufwerke, die EFI-Partitionen enthalten, damit Sie diese nicht versehentlich ändern.

Dann müssen Sie eine neue Partition mit 100-300 MB auf der Festplatte erstellen, auf der sich die EFI-Partition befinden soll. Wenn das Laufwerk voll ist, müssen Sie zuerst eine der vorhandenen Partitionen verkleinern.

Booten Sie in meinem Fall xubuntu 13 (Ubuntu über 12.1, glaube ich) von einem USB-Stick, live. Installieren Sie es nicht.

Öffnen Sie Gparted, erstellen Sie die Partition und formatieren Sie sie in FAT32. Kennzeichnen Sie das Laufwerk als "boot" und deaktivieren Sie alle anderen Partitionen, die als "boot" gekennzeichnet sind. Weisen Sie der neuen Partition nach Möglichkeit auch einen Laufwerksbuchstaben zu. Wenn nicht, können Sie dies später mit diskpart tun.

Starten Sie neu und starten Sie jetzt mit Windows (RE) Recovery von der Windows-Installations-DVD. Gehen Sie zur Eingabeaufforderung. Starten Sie diskpart und weisen Sie der neuen Partition einen Laufwerksbuchstaben zu, falls dies in Gparted nicht möglich war. Beenden Sie diskpart, aber bleiben Sie in der Eingabeaufforderung.

Jetzt kopieren Sie die erforderlichen Dateien in die neue Partition.

{bcdboot / S: / f UEFI} HINWEIS die Leerzeichen!

Beispiel: {bcdboot c: \ Windows / s: / f UEFI}

Dieser Befehl gibt auch den EFI-Status der Partition an.

Erstellen Sie den BCD mit dem folgenden Befehl neu:

{bootrec / RebuildBcd}

Wenn Sie nun gefragt werden, welches Betriebssystem Sie zur EFI-Partition hinzufügen möchten, sagen Sie Ja zu denjenigen, die Sie einschließen möchten, und Nein zu denjenigen, die Sie nicht booten möchten. Wie in meinem Fall habe ich kürzlich ein Upgrade auf Windows 10 durchgeführt, und wie Sie vielleicht wissen, speichert Windows Ihr altes Windows 7/8 für eine Weile, wenn Sie es nicht selbst gelöscht haben. Diese Kopie Ihres alten Betriebssystems möchten Sie normalerweise nicht booten können. Es befindet sich normalerweise in Windows.old. Wählen Sie also nicht die Alternative Alle.

Ich weiß es nicht, aber ich denke, dass dieser Befehl nur nach Windows-Installationen sucht. Wenn Sie ein Linux-Betriebssystem zum Beispiel auf demselben Computer haben. Dann muss man hinterher so etwas wie bcdedit benutzen, um auch die Boot-Menus zu bekommen.

Es gibt einen letzten Befehl, den ich nicht benutzt habe.

{bootrec / fixboot}

Ich habe versucht, mehr über den Befehl zu erfahren, und ich denke, dass er nur das Boot-Flag auf der efi-Partition setzt und ihn bootfähig macht. Dies sollte dasselbe sein, als ich die efi-Partition in Gparted als boot markiert habe.

Wenn es eine andere efi-Partition gab, die Sie nicht mehr benötigen, ist es am einfachsten, Linux / gparted erneut zu starten und von dort zu löschen.

Joelbit
quelle
Für mich passiert alles perfekt, bis es dazu kommt bootrec /fixboot das wirft nur jedes Mal die gleiche Datei nicht gefunden Fehler.
kumar_harsh
Es sieht so aus, als ob Windows die Windows-Partition nicht automatisch mounten würde, wenn sie sich auf einem anderen Laufwerk befindet, was dazu führt, dass der Start immer fehlschlägt.
Jeroen Bollen
1

Ich habe eine Neuinstallation auf einer neuen SSD-Disk erstellt, indem ich die ISO (DVD) für die W10-Installation verwendet habe. Die Installation wurde auf MBR-Typ anstelle von GPT durchgeführt. Ich brauchte Secure Boot, also musste ich diese neue Installation (ohne Datenverlust) von MBR nach GPT konvertieren.

Dann habe ich freien Speicherplatz (260 MB) erstellt, indem ich die letzte NTFS-Partition am Ende der Disc verkleinert habe (ich habe Linux von SystemRecueCD vom USB-Stick gebootet und habe gparted verwendet, aber der Disc-Manager von Windows 10 könnte auch verwendet werden).

Dann habe ich diese neue kleine Partition in FAT32 formatiert (dies könnte auch unter Windows oder Linux geschehen). Ich habe Dateien von der ursprünglichen EFI auf diese neue Partition kopiert (ich habe es unter Linux gemacht, weil Windows zwei Disks mit dem Laufwerksbuchstaben C :) nicht mag.

Dann habe ich MBR zu GPT von gdisk in Linux geändert. Ich habe gdisk verwendet und dann muss diese kleine Partition in ef00 (EFI) geändert und als bootfähig markiert werden (sollte nur eine sein, daher sollte das bootfähige Flag vom ursprünglichen bootfähigen Laufwerk C entfernt werden :).

Dann habe ich den Boot-Typ im SETUP des Notebooks auf UEFI-only geändert, nur um sicherzugehen, dass es wirklich über EFI bootet. Windows bootete nicht, da eine Datei fehlte (mit 'efi' im Namen).

Dann habe ich von der Windows 10 Installations-DVD gebootet, "Rettungssystem" ausgewählt und dann so etwas wie "Bootprobleme beheben". Dann bootete Win10 ohne Probleme. Keine manuellen Eingriffe von bcdboot erforderlich.

Die EFI-Konfiguration kann mit dem Dienstprogramm efibootmgr unter Linux überprüft werden.

Milan Kerslager
quelle
0

Nun, fügen wir noch eine weitere Lösung hinzu. Mein Ziel war es nicht nur die EFI Partition zu kopieren, sondern auch die zu berücksichtigen andere versteckte. Ich bin nicht sicher, ob die Reihenfolge wichtig ist (ich persönlich hatte eine andere als die auf MSDN beschriebene), aber w / e.

Jedenfalls habe ich verwendet GParted Live für das Kunststück Wenn Sie es gebootet haben, verkleinern Sie die Windows - Hauptpartition (was sollte sein) C: ) der gleichen Menge an MB der Partitionen, die Sie auf der neuen Festplatte fehlen, und verschieben Sie sie an das Ende. Dies wird einige Zeit dauern.

Dann habe ich eine neue 16-MB-Partition erstellt, die genau unter der Partition liegt, deren Größe geändert wurde dd die von Microsoft reservierte Partition (für Gründe dafür es scheint so, als ob parted nicht in der Lage ist, unformatierte Dateien (FS) zu verarbeiten. Gehen Sie bei der Verwendung von dd wie immer äußerst vorsichtig mit Befehlen um.

Nachdem ich fertig war, kehrte ich zur GParted-Benutzeroberfläche zurück und stellte manuell die richtigen Flags und Namen für die neue MSR-Partition ein. Dann löschte ich die ursprüngliche Partition. Last but not least habe ich das endlich kopiert Wiederherstellung und EFI-Partition von der ursprünglichen Festplatte auf die SSD (und die Namen / Flag-Operation wiederholt) und ausführen sgdisk -s Partitionsreihenfolge zu beheben.

Starten Sie neu und profitieren Sie! Keine Notwendigkeit, mit efibootmgr oder zu basteln bcdboot Zumindest auf meinem Laptop hat es das neue ESP automatisch gefunden.

BEARBEITEN: Wenn Sie die erste Festplatte erweitern, konvertiert Windows Disk Manager sie aus irgendeinem Grund in ein dynamisches Volume. Überprüfen Sie dies diese Problemumgehung .

mirh
quelle