Przenieś partycję systemową EFI na inny dysk

14

Miałem instalację systemu Windows 8 na dysku twardym, używając UEFI jako rozruchu. Dysk twardy ma następującą tabelę GPT:

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

(Przepraszam, to po włosku, ale tłumaczenie jest dość proste).

Niedawno kupiłem dysk SSD, podłączyłem go i zainstalowałem nowy system Windows 8. Teraz mam działający podwójny rozruch, ale partycja UEFI znajduje się na dysku twardym zamiast dysku SSD. Oto lista partycji SSD:

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

Myślę, że najlepszym rozwiązaniem byłoby umieszczenie go na dysku SSD z dwóch powodów:

Pierwszym z nich jest wydajność (wydaje mi się, że byłoby trochę szybciej na SSD ze względu na czas uruchamiania HDD, ale mogę się mylić.)

drugim powodem jest konsekwencja. Ponieważ planuję używać tylko instalacji systemu Windows 8 znajdującej się na dysku SSD i prawdopodobnie zamierzam usunąć partycję systemową na dysku twardym, aby użyć jej jako urządzenia do przechowywania danych, myślę, że partycja rozruchowa powinna znajdować się na tej samej dysk jako system operacyjny.

Pytanie brzmi: jak przenieść partycję systemową EFI na dysk SSD?

Pincopallino
źródło

Odpowiedzi:

4

Radzę nie zawracać sobie głowy. Poprawa wydajności będzie nieznaczna, ponieważ pliki odczytywane z ESP są małe i są odczytywane tylko podczas uruchamiania komputera. Co więcej, sama partycja jest niewielka według współczesnych standardów, więc nie odzyskasz wystarczającej ilości miejsca, aby wysiłek był opłacalny. Ponadto próba przeniesienia ESP wiąże się z ryzykiem powstania problemów z uruchamianiem, których naprawienie zajmie znacznie więcej czasu niż kiedykolwiek można by zaoszczędzić na skróconym czasie uruchamiania z przeniesienia.

Jeśli mimo mojej rekomendacji chcesz iść dalej i zrobić to jako naukę, musisz przyjrzeć się:

  • Tworzenie ESP za pomocą dowolnego oprogramowania do partycjonowania. Nie jestem pewien, jak byś to zrobił za pomocą standardowych narzędzi systemu Windows. Z gdisk, chcesz utworzyć partycję typu EF00, ale którą następnie należy utworzyć system plików FAT na nim, ponieważ gdiskjest to narzędzie do partycjonowania tylko (nie obsługuje systemów plików).
  • Montowanie obu ESP jednocześnie w celu kopiowania plików (lub w kolejności za pomocą tymczasowego przechowywania). Nie jestem pewien, jak to zrobić w systemie Windows, chociaż byłoby to łatwe w systemie Linux lub z powłoki EFI. (W rzeczywistości byłby automatyczny w powłoce EFI.)
  • Rejestracja modułu ładującego w nowym domu. (Użycie zastępczej nazwy pliku EFI\BOOT\bootx64.efibyłoby prawdopodobnie prostszą alternatywą, ale jest mniej preferowaną metodą ładowania programu ładującego). bcdeditPolecenie Windows i bcfgnarzędzie powłoki EFI mogą rejestrować programy ładujące; jest jednak bcdeditnieelastyczny, ponieważ system Windows obsługuje tylko jedną ESP, co stwarza problemy podczas kopiowania ESP.
Rod Smith
źródło
Dziękuję za Twoją odpowiedź. Właściwie wolę mieć ESP na dysku SSD, ponieważ mogę zdecydować o usunięciu dysku twardego. Myślę więc, że ESP powinien znajdować się na dysku systemu operacyjnego. W każdym razie, jak to się robi ostatni punkt?
Pincopallino
Nieważne, udało mi się regularnie przenosić partycję na dysk SSD i system Windows. Dziękuję Ci bardzo!
Pincopallino
Kilka interesujących informacji, które prawdopodobnie byłyby BARDZO cenne w wyjaśnieniu tego, co dzieje się w uogólnionym HOWTO, ale tak naprawdę nie odpowiadało: „Więc pytanie brzmi, jak przenieść partycję systemową EFI na dysk SSD?” Kilka lat temu spędziłem kilka dni życia próbując dojść do siebie po złej decyzji, która wciąż mnie prześladuje. Krótko mówiąc, sprowadza się do przeniesienia partycji EFI, więc chciałbym zobaczyć dobrą odpowiedź.
rainabba
Warto zauważyć, że posiadanie dwóch partycji EFI czasami powoduje awarię aktualizacji systemu Windows w bardzo niejasny sposób, więc usuń starą po przeniesieniu.
Jack Wasey,
14

Dla osób takich jak ja pochodzących z Google: Tak, można to zrobić w systemie Windows, bez żadnych narzędzi innych firm. Testowane z Windows 10 Pro x64. Użyłem tej procedury do przeniesienia zarówno partycji systemowej EFI, jak i partycji zarezerwowanej przez system. Powinien również działać w systemie Windows 8.

Jeśli na dysku podstawowym brakuje miejsca, najpierw musisz zmniejszyć partycję C: (lub równoważną). Korzystam z 260 MB w tym przykładzie, ponieważ tego właśnie wymagają nowsze dyski, ale starsze dyski z mniejszymi sektorami wymagają tylko 100 MB. Jeśli nie musisz robić miejsca, zwróć uwagę na komentarze wskazujące kroki, które należy pominąć.

W tym momencie prawdopodobnie chcesz przenieść partycję zarezerwowaną przez system. Zazwyczaj są to 1000 MB i przechowują przydatne metadane systemu Windows. Może się okazać, że niektóre funkcje systemu Windows nie działają bez partycji zarezerwowanej przez system. Podałem kroki tworzenia takiej partycji na twoim dysku podstawowym i oznaczyłem te kroki komentarzami. Łatwo jest wykluczyć te kroki, jeśli wolisz je pominąć, ale musisz zmniejszyć liczby podczas zmniejszania (np. 260 MB zamiast 1260 MB).

Komentarze są poprzedzone REM(dla „uwagi”), ponieważ są one obsługiwane zarówno przez cmd.exe, jak i diskpart.exe.

Z cmd.exe uruchomionego jako administrator:

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

Czas ponownie uruchomić komputer, aby upewnić się, że wszystko działa. Konieczne może być zaktualizowanie ustawień kolejności rozruchu systemu BIOS w celu dopasowania do zmian. W moim przypadku ustawienia BIOS były już prawidłowe, więc utknąłem w pętli restartu; za każdym razem, gdy chciałem uruchomić komputer, musiałem ręcznie wybrać stary dysk ze źle umieszczoną partycją EFI.

Jeśli wszystko działało zgodnie z oczekiwaniami, będziesz mógł usunąć starą partycję EFI. Jeśli to nie zadziała, lub twój BIOS nadal jest skonfigurowany do uruchamiania ze starej partycji, Windows nie pozwoli ci go usunąć, nawet jeśli użyjesz flagi zastępowania w diskpart.exe. Ponieważ prawdopodobnie i tak chcesz pozbyć się tej starej partycji, usunięcie jej jest świetnym sposobem na upewnienie się, że uruchamiasz się z nowej partycji.

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
źródło
2
Bardzo szczegółowa i dobrze wyjaśniona odpowiedź, która działa! Dzięki!
kumarharsh
3

Wiem, że to stary post, ale myślę, że wielu nadal chce dobrej odpowiedzi.

Dotyczy to Windows 7, 8, 10. Jest także ważne dla Identyfikatora zdarzenia: 12290, jeśli partycja ESP znajduje się na dysku innym niż ten, który jest aktywnym systemem operacyjnym i ma zostać utworzona kopia zapasowa.

Najpierw odłącz inny dysk zawierający partycje ESP, aby przypadkowo go nie zmienić.

Następnie musisz utworzyć nową partycję o wielkości 100–300 MB na dysku, na którym ma znajdować się partycja ESP. Jeśli dysk jest pełny, najpierw musisz zmniejszyć jedną z istniejących partycji.

Uruchom, w moim przypadku, Xubuntu 13 (myślę, że Ubuntu powyżej 12.1) z pamięci USB, na żywo. Nie instaluj go.

Otwórz Gparted i utwórz partycję i sformatuj ją do FAT32. Oznacz dysk jako „boot” i usuń flagę dowolnej innej partycji oznaczonej jako „boot”. Jeśli to możliwe, przypisz także nową partycję do litery dysku. Jeśli nie, możesz to zrobić później za pomocą diskpart.

Uruchom ponownie i uruchom ponownie za pomocą narzędzia Windows (RE) Recovery z instalacyjnego dysku DVD systemu Windows. Przejdź do wiersza polecenia. Uruchom diskpart i przypisz nowej partycji literę dysku, jeśli nie było to możliwe w Gparted. Wyjdź z diskpart, ale pozostań w wierszu poleceń.

Teraz skopiujesz niezbędne pliki na nową partycję.

bcdboot <source> /S <ESP drive letter>: /f UEFI

UWAGA spacje! Przykład:bcdboot c:\Windows /s x: /f UEFI

To polecenie nadaje również status ESP partycji.

Odbuduj BCD za pomocą następującego polecenia:

bootrec /RebuildBcd

Teraz, gdy zostaniesz zapytany, jaki system operacyjny chcesz dodać do partycji ESP, odpowiesz Tak dla tych, które chcesz dołączyć, i Nie dla tych, których nie chcesz mieć możliwości rozruchu. Tak jak w moim przypadku niedawno zaktualizowałem system do wersji Windows 10 i, jak zapewne wiesz, Windows będzie przechowywał twój stary Windows 7/8 przez jakiś czas, jeśli sam go nie usunąłeś. Ta kopia twojego starego systemu operacyjnego nie jest czymś, co zwykle lubisz mieć możliwość rozruchu. Zwykle znajduje się w Windows.old. Więc nie wybieraj opcji Wszystkie .

Nie wiem, ale myślę, że to polecenie wyszukuje tylko instalacje Windows. Jeśli masz system operacyjny Linux na przykład na tym samym komputerze. Następnie musisz użyć czegoś takiego jak bcdedit, aby dostać się do meny również.

Jest ostatnie polecenie, którego nie użyłem.

bootrec /fixboot

Próbowałem dowiedzieć się więcej o tym poleceniu i myślę, że po prostu ustawia flagę rozruchową na partycji ESP i sprawia, że ​​można ją uruchomić. Powinno to być takie samo, jak gdy oznaczyłem partycję ESP jako boot w Gparted.

Jeśli istniała inna partycja ESP, której już nie potrzebujesz, najprościej jest ponownie uruchomić system Linux / Gparted i usunąć ją.

Joelbit
źródło
Dla mnie wszystko dzieje się idealnie, dopóki nie dojdzie do bootrec /fixboottego, że za każdym razem pojawia się ten sam błąd, który nie został znaleziony.
kumarharsh
Wygląda na to, że system Windows nie instaluje automatycznie partycji Windows, gdy jest ona na innym dysku, co powoduje, że rozruch zawsze kończy się niepowodzeniem.
Jeroen
1

Stworzyłem świeżą instalację na nowym dysku SSD przy użyciu oryginalnej instalacji ISO W10 (DVD). Instalacja przeszła na typ MBR zamiast GPT. Potrzebowałem Bezpiecznego rozruchu, więc musiałem przekonwertować tę nową instalację (bez utraty danych) z MBR na GPT.

Następnie utworzyłem wolne miejsce (260 MB), zmniejszając ostatnią partycję NTFS na końcu dysku (uruchomiłem Linuxa z SystemRecueCD z pamięci USB i użyłem gparted, ale mogłem również użyć Menedżera dysków z Windows 10).

Następnie sformatowałem tę nową małą partycję do FAT32 (można to zrobić w systemie Windows lub Linux). Skopiowałem pliki z oryginalnego EFI na tę nową partycję (zrobiłem to w systemie Linux, ponieważ Windows nie lubi dwóch dysków z literą napędu o nazwie C :).

Potem zmieniłem MBR na GPT przez gdisk w Linuksie. Użyłem gdisk, a następnie tę małą partycję należy zmienić na typ ef00 (EFI) i oznaczyć jako rozruchową (powinna być tylko jedna, więc flagę rozruchową należy usunąć z oryginalnego dysku rozruchowego C :).

Następnie zmieniłem typ uruchamiania w USTAWIENIU notebooka na UEFI-tylko po to, aby mieć pewność, że naprawdę uruchamia się przez EFI. System Windows nie uruchomił się, ponieważ brakowało jakiegoś pliku (z nazwą „efi”).

Następnie uruchomiłem z instalacyjnego dysku DVD systemu Windows 10, wybrałem „System ratunkowy”, a następnie coś w rodzaju „Napraw problemy z uruchamianiem”. Następnie Win10 uruchomił się bez problemu. Bcdboot nie wymaga ręcznej interwencji.

Konfigurację EFI można sprawdzić za pomocą narzędzia efibootmgr w systemie Linux.

Milan Kerslager
źródło
0

Dodajmy jeszcze jedno rozwiązanie. Moim celem było nie tylko skopiowanie partycji EFI, ale nawet wzięcie pod uwagę innych ukrytych. Nie jestem pewien, czy kolejność ma znaczenie (osobiście miałem inną niż opisana na msdn), ale w / e.

W każdym razie użyłem GParted Live dla wyczynu. Po uruchomieniu systemu zmniejsz główną partycję systemu Windows (która powinna być C:) tej samej ilości MiB partycji, których brakuje na nowym dysku i przenieś ją na koniec. To zajmie trochę czasu.

Następnie przystąpiłem do tworzenia nowej partycji 16 MB tuż pod nowo zmienioną partycją, na której znajduje się ddpartycja zastrzeżona Microsoft (z powodów , jak się wydaje, że parted nie jest w stanie obsłużyć niesformatowanego FS). Jak zawsze, używając dd, zachowaj szczególną ostrożność przy poleceniach.

Po zakończeniu wróciłem do GUI GParted i ręcznie ustawiłem odpowiednie flagi i nazwę dla nowej partycji MSR, a następnie usunąłem oryginalną. Wreszcie skopiowałem partycję Recovery i EFI z oryginalnego dysku twardego na dysk SSD (i powtórzyłem operację name / flag) i uruchomiłem, sgdisk -saby naprawić kolejność partycji.

Uruchom ponownie i zyskaj! Nie trzeba majstrować przy efibootmgr lub bcdboot , przynajmniej na moim laptopie automatycznie znalazł nowy ESP.

EDYCJA: jeśli przy rozszerzaniu pierwszego dysku z jakiegoś powodu Menedżer dysków systemu Windows konwertuje go na wolumin dynamiczny. Sprawdź to obejście .

mirh
źródło