Di chuyển phân vùng hệ thống EFI sang ổ đĩa khác


14

Tôi đã cài đặt Windows 8 trên ổ cứng, sử dụng UEFI làm boot. Ổ cứng có bảng GPT sau:

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

(Tôi xin lỗi bằng tiếng Ý, nhưng bản dịch khá đơn giản).

Gần đây tôi đã mua một ổ SSD, kết nối và cài đặt Windows 8. Bây giờ tôi có một khởi động kép hoạt động, nhưng phân vùng UEFI nằm trên ổ cứng thay vì SSD. Đây là danh sách phân vùng SSD:

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

Tôi nghĩ rằng giải pháp tốt nhất sẽ là có nó trên SSD vì hai lý do:

Đầu tiên là hiệu năng (tôi đoán nó sẽ nhanh hơn một chút trên SSD do thời gian quay của ổ cứng, nhưng tôi có thể sai về điều đó.)

lý do thứ hai là tính nhất quán. Vì tôi dự định chỉ sử dụng cài đặt Windows 8 nằm trên SSD và có lẽ tôi sẽ xóa phân vùng hệ thống trên ổ cứng để sử dụng nó làm thiết bị lưu trữ dữ liệu, tôi nghĩ rằng phân vùng khởi động nên giống nhau ổ đĩa như hệ điều hành.

Vì vậy, câu hỏi là làm thế nào để tôi di chuyển phân vùng hệ thống EFI sang SSD?

Câu trả lời:


4

Đề nghị của tôi là không bận tâm. Sự cải thiện hiệu suất sẽ không đáng kể, vì các tệp được đọc từ ESP rất nhỏ và chỉ được đọc khi máy tính khởi động. Hơn nữa, bản thân phân vùng rất nhỏ theo tiêu chuẩn hiện đại, vì vậy bạn sẽ không phục hồi đủ không gian để nỗ lực đáng giá. Hơn nữa, nỗ lực di chuyển ESP có nguy cơ tạo ra các sự cố khởi động sẽ mất nhiều thời gian hơn để khắc phục hơn bất kỳ lúc nào bạn có thể tiết kiệm được trong thời gian khởi động được cải thiện từ việc di chuyển.

Nếu bạn muốn tiếp tục và thực hiện điều này như một kinh nghiệm học tập bất chấp khuyến nghị của tôi, bạn sẽ cần xem xét:

  • Tạo một ESP với bất kỳ phần mềm phân vùng nào bạn thích. Tôi không chắc chắn cách bạn làm điều này với các công cụ Windows tiêu chuẩn. Với gdisk, bạn sẽ tạo một phân vùng kiểu EF00, nhưng sau đó bạn cần tạo một hệ thống tệp FAT trên đó, vì đây gdisklà một công cụ chỉ phân vùng (nó không xử lý các hệ thống tệp).
  • Gắn đồng thời cả hai ESP để sao chép tệp (hoặc theo trình tự sử dụng bộ nhớ tạm thời). Tôi không chắc chắn làm thế nào để làm điều này trong Windows, mặc dù nó sẽ dễ dàng trong Linux hoặc từ trình bao EFI. (Trên thực tế, nó sẽ tự động trong vỏ EFI.)
  • Đăng ký bộ tải khởi động trên ngôi nhà mới của nó. (Sử dụng tên tệp dự phòng EFI\BOOT\bootx64.eficó thể là một cách thay thế đơn giản hơn, nhưng là phương pháp tải bộ tải khởi động ít được ưa thích hơn.) Lệnh Windows bcdeditbcfgcông cụ của EFI shell có thể đăng ký cả bộ tải khởi động; tuy nhiên, bcdeditkhông linh hoạt vì Windows chỉ hỗ trợ một ESP, điều này tạo ra các vấn đề khi sao chép ESP.

Cảm ơn về câu trả lời của bạn. Vâng, tôi thực sự thích có ESP trong SSD vì tôi có thể quyết định loại bỏ ổ cứng. Vì vậy, tôi nghĩ rằng ESP nên có trên ổ đĩa hệ điều hành. Dù sao, điểm mới nhất được thực hiện như thế nào?
Pincopallino

Không sao, tôi quản lý để di chuyển phân vùng sang SSD và Windows khởi động thường xuyên. Cảm ơn rât nhiều!
Pincopallino

Một số thông tin thú vị ở đây có khả năng RẤT có giá trị trong việc giải thích những gì đang xảy ra trong một HOWTO tổng quát, nhưng không thực sự trả lời, "Vì vậy, câu hỏi là làm cách nào để tôi chuyển Phân vùng hệ thống EFI sang SSD?" Tôi đã dành nhiều ngày trong cuộc đời của mình để cố gắng phục hồi sau một quyết định tồi tệ vài năm trước và nó vẫn ám ảnh tôi và nói ngắn gọn, nó đã chuyển đến phân vùng EFI của tôi để tôi muốn thấy một câu trả lời hay.
rainabba

Lưu ý, việc có hai phân vùng EFI đôi khi khiến bản cập nhật Windows bị lỗi theo những cách cực kỳ khó hiểu, vì vậy hãy xóa cái cũ sau khi di chuyển.
Jack Wasey

14

Đối với những người như tôi đến từ Google: Có, có thể thực hiện việc này với Windows mà không cần bất kỳ công cụ của bên thứ ba nào. Đã thử nghiệm với Windows 10 Pro x64. Tôi đã sử dụng thủ tục này để di chuyển cả Phân vùng hệ thống EFI và phân vùng dành riêng cho hệ thống. Nó cũng hoạt động trên Windows 8.

Nếu ổ đĩa chính của bạn thiếu dung lượng, trước tiên bạn sẽ cần thu nhỏ phân vùng C: (hoặc tương đương). Tôi đang sử dụng 260 MB trong ví dụ này vì đó là những gì các ổ đĩa mới hơn yêu cầu, nhưng các ổ đĩa cũ hơn với các lĩnh vực nhỏ hơn chỉ yêu cầu 100 MB. Nếu bạn không cần tạo khoảng trống, hãy ghi lại các ý kiến ​​cho biết bước nào bạn nên bỏ qua.

Trong khi bạn đang ở đó, bạn có thể muốn di chuyển phân vùng dành riêng cho hệ thống của bạn. Chúng thường là 1000 MB và lưu trữ siêu dữ liệu Windows hữu ích. Bạn có thể thấy rằng một số tính năng của Windows không hoạt động nếu không có phân vùng dành riêng cho hệ thống. Tôi đã bao gồm các bước để tạo một phân vùng như vậy trên ổ đĩa chính của bạn và đánh dấu các bước đó bằng các bình luận. Sẽ dễ dàng loại trừ các bước đó nếu bạn muốn bỏ qua chúng, nhưng bạn sẽ cần thay đổi số khi thu nhỏ (ví dụ: 260 MB thay vì 1260 MB).

Nhận xét có tiền tố REM(đối với "nhận xét"), vì các nhận xét này được hỗ trợ bởi cả cmd.exe và đĩapart.exe.

Từ cmd.exe chạy với tư cách quản trị viên:

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

Đã đến lúc khởi động lại để đảm bảo rằng mọi thứ đều hoạt động. Bạn có thể cần cập nhật cài đặt thứ tự khởi động BIOS để phù hợp với các thay đổi. Trong trường hợp của tôi, các cài đặt BIOS đã chính xác, vì vậy tôi bị kẹt trong vòng lặp khởi động lại; Mỗi lần tôi muốn khởi động máy tính của mình, tôi phải chọn thủ công ổ đĩa cũ với phân vùng EFI bị đặt sai vị trí.

Nếu mọi thứ hoạt động như mong đợi, bạn sẽ có thể xóa phân vùng EFI cũ. Nếu nó không hoạt động hoặc BIOS của bạn vẫn được cấu hình để khởi động từ phân vùng cũ, Windows sẽ không cho phép bạn xóa nó, ngay cả khi bạn sử dụng cờ ghi đè trong đĩapart.exe. Vì dù sao bạn cũng có thể muốn thoát khỏi phân vùng cũ đó, xóa nó là một cách tuyệt vời để đảm bảo bạn đang khởi động từ phân vùng mới.

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

2
Một câu trả lời rất chi tiết và được giải thích tốt, mà hoạt động! Cảm ơn!
kumarharsh

2

Tôi biết đây là một bài viết cũ, nhưng tôi nghĩ rằng một câu trả lời tốt vẫn được nhiều người muốn.

Điều này có thể áp dụng cho Windows 7, 8, 10. Và cũng hợp lệ cho Id sự kiện: 12290 nếu phân vùng EFI nằm trên một đĩa khác, sau đó là hệ điều hành đang hoạt động và sẽ được sao lưu.

Trước tiên hãy ngắt kết nối bất kỳ ổ đĩa nào khác chứa phân vùng EFI, do đó bạn không vô tình thay đổi ổ đĩa đó.

Sau đó, bạn phải tạo một phân vùng mới với tốc độ 100-300 MB trên đĩa mà bạn muốn phân vùng EFI cư trú. Nếu ổ đĩa đầy, trước tiên bạn phải thu nhỏ một trong các phân vùng hiện có.

Khởi động, trong trường hợp của tôi, xubfox 13 (ubfox trên 12.1 tôi nghĩ) từ một thanh USB, trực tiếp. Đừng cài đặt nó.

Mở Gparted và tạo phân vùng và định dạng nó thành FAT32. Đánh dấu ổ đĩa là "boot" và bỏ qua bất kỳ phân vùng nào khác được đặt dưới dạng "boot". Cũng chỉ định phân vùng mới một ký tự ổ đĩa nếu có thể. Nếu không, bạn có thể làm điều đó với Diskpart sau này.

Khởi động lại và bây giờ khởi động với Windows (RE) Recovery từ DVD cài đặt Windows. Đi đến lệnh promt. Bắt đầu Diskpart và gán cho phân vùng mới một trình điều khiển nếu điều đó là không thể trong Gparted. Thoát đĩapart nhưng ở lại trong lệnh promt.

Bây giờ bạn sẽ sao chép các tập tin không cần thiết trong phân vùng mới.

{bcdboot / S: / f UEFI} LƯU Ý các khoảng trắng!

Ví dụ: {bcdboot c: \ Windows / s: / f UEFI}

Lệnh này cũng sẽ cung cấp cho phân vùng trạng thái EFI.

Xây dựng lại BCD bằng lệnh sau:

{bootrec / RebuildBcd}

Bây giờ khi bạn được hỏi bạn muốn thêm hệ điều hành nào vào phân vùng EFI, bạn nói Có với những hệ điều hành bạn muốn đưa vào và Không với những hệ điều hành bạn không muốn có thể khởi động. Như trong trường hợp của tôi, gần đây tôi đã nâng cấp lên Windows 10 và như bạn có thể biết, Windows sẽ lưu trữ Windows 7/8 cũ của bạn trong một thời gian nếu bạn không tự xóa nó. Bản sao hệ điều hành cũ này của bạn không phải là thứ bạn muốn có thể khởi động. Nó Normaly nằm trong Windows.old. Vì vậy, đừng chọn Tất cả thay thế.

Tôi không biết, nhưng tôi nghĩ rằng lệnh này chỉ tìm kiếm các cài đặt Windows. Nếu bạn có một hệ điều hành linux chẳng hạn trên cùng một máy tính. Sau đó, bạn phải sử dụng một cái gì đó như bcdedit sau đó để có được khởi động meny aswell.

Có một lệnh cuối cùng, phù thủy tôi đã không sử dụng.

{bootrec / fixboot}

Tôi đã cố gắng học thêm absout lệnh và tôi nghĩ rằng nó chỉ đặt cờ khởi động trên phân vùng efi và làm cho nó có khả năng khởi động. Điều này sẽ giống như khi tôi gắn cờ phân vùng efi là khởi động trong Gparted.

Nếu có một phân vùng efi khác mà bạn không còn muốn nữa, cách dễ nhất là khởi động lại vào linux / gparted và xóa nó từ đó.


Đối với tôi, mọi thứ diễn ra hoàn hảo cho đến khi nó xuất bootrec /fixboothiện cùng một tệp không tìm thấy lỗi mỗi lần.
kumarharsh

Có vẻ như Windows không tự động gắn kết phân vùng Windows khi nó ở trên một ổ đĩa khác, khiến cho việc khởi động luôn bị lỗi.
Jeroen

1

Tôi đã tạo một bản cài đặt mới trên đĩa SSD mới bằng cách sử dụng ISO (DVD) cài đặt W10 chính hãng. Việc cài đặt chuyển sang loại MBR thay vì GPT. Tôi cần Khởi động an toàn vì vậy tôi phải chuyển đổi cài đặt mới này (không mất dữ liệu) từ MBR sang GPT.

Sau đó, tôi đã tạo không gian trống (260 MB) bằng cách thu nhỏ partiton NTFS cuối ở cuối đĩa (Tôi đã khởi động Linux từ SystemRiruCD từ thanh USB và sử dụng gparted, nhưng cũng có thể sử dụng Trình quản lý đĩa từ Windows 10).

Sau đó, tôi đã tạo phân vùng nhỏ mới này thành FAT32 (nó cũng có thể được thực hiện trong Windows hoặc trong Linux). Tôi đã sao chép các tệp từ EFI gốc sang phân vùng mới này (Tôi đã làm nó trong Linux vì Windows không thích hai đĩa có ký tự ổ đĩa có tên C :).

Sau đó, tôi đã thay đổi MBR thành GPT bằng gdisk trong Linux. Tôi đã sử dụng gdisk và sau đó phân vùng nhỏ này phải được thay đổi thành loại ef00 (EFI) và được đánh dấu là có khả năng khởi động (chỉ nên là một, vì vậy nên xóa cờ khởi động khỏi ổ đĩa khởi động ban đầu C :).

Sau đó, tôi đã thay đổi kiểu khởi động trong CÀI ĐẶT của máy tính xách tay thành UEFI - chỉ để chắc chắn rằng nó thực sự khởi động bởi EFI. Windows đã không khởi động vì thiếu một số tệp (với 'efi' trong tên của nó).

Sau đó, tôi khởi động từ DVD cài đặt Windows 10, chọn "Hệ thống cứu hộ" và sau đó là "Khắc phục sự cố khởi động". Sau đó Win10 khởi động không có vấn đề. Không có ý định thủ công cần thiết bởi bcdboot.

Cấu hình EFI có thể được kiểm tra bởi tiện ích efibootmgr trong Linux.


0

Vâng, hãy thêm một giải pháp khác. Mục tiêu của tôi là không chỉ sao chép phân vùng EFI, nhưng thậm chí phải đưa vào tài khoản khác những ẩn. Tôi không chắc thứ tự có quan trọng không (cá nhân tôi có một cái khác so với mô tả trên msdn) nhưng w / e.

Dù sao, tôi đã sử dụng GParted Live cho chiến công. Khi bạn đã khởi động xong, hãy giảm phân vùng chính của Windows (cần phải có C:) cùng số lượng MiB của các phân vùng bạn đang thiếu trên đĩa mới và di chuyển đến cuối. Điều này sẽ mất một thời gian.

Sau đó, tôi đã tiến hành tạo một phân vùng 16MiB mới ngay bên dưới phân vùng mới được thay đổi kích thước nơi ddphân vùng dành riêng của Microsoft (vì lý do có vẻ như không thể xử lý FS không được định dạng). Như mọi khi, khi sử dụng dd, hãy cực kỳ cẩn thận với các lệnh.

Sau khi hoàn thành, tôi quay lại GUI GParted và tự đặt các cờ và tên đúng cho phân vùng MSR mới, sau đó xóa cái gốc. Cuối cùng nhưng không kém phần quan trọng, cuối cùng tôi đã sao chép phân vùng Recovery và EFI từ ổ cứng ban đầu sang SSD (và lặp lại thao tác tên / cờ) và chạy sgdisk -sđể sửa thứ tự phân vùng.

Khởi động lại, và lợi nhuận! Không cần phải sửa lại với efibootmgr hoặc bcdboot , ít nhất là trên máy tính xách tay của tôi, nó tự động tìm thấy ESP mới.

EDIT: nếu khi mở rộng đĩa đầu tiên, vì một số lý do, Windows Disk Manager chuyển đổi nó thành một ổ đĩa động .. Kiểm tra cách giải quyết này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.