Windows trên MBR / GPT lai


7

Tôi nghĩ rằng cuối cùng tôi đã đưa Windows xuống đời với một máy ảo, nhưng than ôi , Tôi đã xem qua một số trò chơi tôi muốn chơi mà sẽ không làm trong thiết lập đó. Trong những ngày kể từ khi Windows chiếm phần lớn ổ đĩa được chỉ định của riêng tôi, tôi đã thực hiện rất nhiều lần với các bản phân phối OS và Linux khác nhau, và hóa ra là trong khi tôi có không gian trống, tôi đã hỗ trợ tối đa số phân vùng bởi Bảng phân vùng MBR . Vì vậy, tin rằng nó chỉ nên hoạt động ở đây trong thế kỷ 21 và đã thực hiện một bài kiểm tra về Google cho thấy nó sẽ hoạt động, tôi đã chuyển đổi sang Bảng phân vùng GUID (GPT) và đã cố gắng cài đặt Windows 7. Lo và kìa, Windows 7 chỉ hoạt động với GPT trên các hệ thống EFI và tôi sử dụng BIOS. tôi nên có nhận thấy điều này trong nghiên cứu trước đây của tôi, nhưng điều đó sẽ quá dễ dàng.

Vì vậy, tôi có quyền lựa chọn chuyển đổi trở lại MBR và cố gắng điều chỉnh bố cục phân vùng của mình xung quanh để tôi có thể tạo một cái cho Windows hoặc đi với một MBR lai . Cái sau nghe hấp dẫn hơn. Thật không may, có rất nhiều cảnh báo đáng sợ về MBR lai trên Internet, vì vậy tôi có một vài câu hỏi.

Windows sẽ làm điều gì đó xấu với bộ tải khởi động của tôi vì nó thực sự có trên GPT nhưng nó sẽ thấy MBR? Điều đó có yêu cầu sửa chữa nhiều hơn là khởi động từ LiveCD và chạy không grub-install? Có điều gì tôi cần tránh ngoài việc đảm bảo tôi không bao giờ chạm vào các công cụ phân vùng trên Windows không? Máy tính của tôi sẽ nổ tung? Sẽ có rất nhiều đau đầu được lưu lại nếu tôi vừa chuyển trở lại MBR? (Tôi hiểu rằng máy Mac sử dụng MBR lai với Boot Camp, vì vậy hy vọng điều này sẽ không khó như tôi nghĩ.)

Câu trả lời:


7

Không cần phải hồi quy cho sơ đồ phân vùng MBR, thậm chí không cần bất kỳ sơ đồ phân vùng "lai MBR" nào. (Tôi có như vậy trên một trong những máy của mình, và chứng thực rằng chúng không dành cho người yếu tim.)

Windows 7 có thể sử dụng đĩa được phân vùng EFI tốt. Nó chỉ không thể được bootstraged từ chúng trên các máy không phải EFI và (để bảo vệ bạn khỏi chính bạn, theo kiểu Microsoft) từ chối cài đặt chúng ngay từ đầu. Trong trường hợp của bạn, vấn đề của bạn là sự thiếu hụt cơ bản của chương trình cơ sở và không thực sự là các cửa sổ vấn đề nào cả. Của bạn phần sụn không hiểu bảng phân vùng EFI.

Sự hiểu biết như vậy là cần thiết nếu một người muốn chuyển đổi bootstrap của hệ điều hành sang đĩa được phân vùng EFI. Phần sụn của một người cần biết để hiển thị menu Trình quản lý khởi động EFI, sau đó tải chương trình trình tải hệ điều hành đã chọn từ Phân vùng hệ thống EFI . Của bạn phần sụn không thông minh lắm, tuy nhiên, và không biết làm gì nhiều hơn là tải "bản ghi khởi động chính" và chạy mã bootstrap của nó. Trên đĩa được phân vùng EFI, không có mã nào trong "bản ghi khởi động chính" để quay vòng qua phần còn lại của quá trình khởi động EFI.

Tốt nhất, ngay bây giờ, bạn có mã bootstrap MBR không kém gì sơ đồ bảng phân vùng EFI như phần sụn của bạn và điều đó hy vọng sẽ tìm và xử lý bảng phân vùng MBR. Những gì bạn cần là hai điều:

  • để có mã bootstrap MBR biết cách đọc bảng phân vùng EFI và tìm trình tải bootstrap giai đoạn hai cũng có khả năng phân vùng bảng EFI và sẽ cho phép bạn lần lượt tải và chạy bộ tải khởi động hệ điều hành
  • một số cách thuyết phục Windows 7 để cài đặt, dựng lên trên đĩa được phân vùng EFI

Đầu tiên là không thể. Có hai nguồn của bootstraps MBR nhận biết phân vùng EFI như vậy:

  • Tôi đã viết và xuất bản một (sau khi câu trả lời này được viết lần đầu tiên, trên thực tế).
  • Cái gọi là bootstrap "GPT" MBR trong SYSLINUX, được viết bởi H. Peter Anvin, là một cái khác.

Cả hai sẽ tìm kiếm phân vùng "hoạt động", tải và chạy VBR của nó, khởi động hiệu quả theo cách PC / AT và PC98 cũ nhưng với bảng phân vùng EFI. Thất bại cả hai, những lựa chọn thay thế tốt nhất mà bạn sẽ có ngay bây giờ là:

  • LỚP 2 : Thật không may, điều này vẫn phụ thuộc vào việc đưa các số cứng vào mã bootstrap MBR của nó để cho nó biết nơi tìm phần tiếp theo của trình tải. Nhưng giai đoạn thứ hai, khi đã tải và chạy, hoàn toàn có khả năng hiểu bảng phân vùng EFI và bộ tải khởi động hệ điều hành bootstrapping từ bên trong các phân vùng. Tuy nhiên, nó không biết cách chạy bộ tải khởi động hệ điều hành EFI, tuy nhiên, nó chỉ biết cách đối phó với VBR hoặc Linux và BSD.
  • NHIỆM VỤ UEFI: ( Rod Smith thảo luận chi tiết về điều này. ) Thật không may, mặc dù điều này cài đặt trong một tập và mang đến Trình quản lý khởi động EFI và EFI Shell có khả năng đầy đủ, nhưng nó vẫn cần một cái gì đó khác để tải và chạy VBR của nó ở vị trí đầu tiên. Và ngay bây giờ, một cái gì đó khác phải là một cái gì đó giống như GRUB2, vốn dựa vào các số khu vực được sử dụng trong mã MBR, hoặc SYSLINUX, hoặc bootstrap MBR nhận biết phân vùng EFI của tôi. Nhưng bạn sẽ có thể chạy các trình tải bootstrap của hệ điều hành EFI thích hợp.

Thứ hai (thuyết phục Windows 7 để cài đặt trên đĩa được phân vùng EFI) là có thể đạt được, với ít nhất là hương vị x86-64 của Windows 7. Nó phức tạp, không được Microsoft hỗ trợ chính thức và yêu cầu tạo ra đĩa cài đặt Windows của riêng bạn một cách hiệu quả với phiên bản EFI của Trình quản lý khởi động của Microsoft trên đó và bằng cách nào đó chạy trong môi trường khởi động EFI. . EFI phân vùng đĩa cứng.

Tất nhiên, có sự bổ sung, cuối cùng, phức tạp của, một khi được cài đặt, khởi động Windows 7 từ ngày này sang ngày khác; bởi vì trình cài đặt, biết rằng bạn có phần sụn EFI, sẽ cài đặt phiên bản EFI của Trình quản lý khởi động của Microsoft. Do đó, bạn sẽ cần:

  • để cài đặt phiên bản PC / AT của Microsoft Boot Manager và sắp xếp cho GRUB2 để biết nó ở đâu, nếu bạn đang sử dụng GRUB2; hoặc là
  • để luôn khởi động UEFI DUET và chạy phiên bản EFI của Microsoft Boot Manager từ đó.

Khá nhiều tất cả các điều vô lý này sẽ biến mất nếu người ta có firmware EFI ngay từ đầu. Windows 7 (x86-64) sẽ cài đặt vui vẻ và Trình quản lý khởi động EFI hiểu bảng phân vùng EFI và sẽ tải và chạy Trình quản lý khởi động của Microsoft (cũng như mọi hệ điều hành có thể khởi động EFI khác) từ tệp hình ảnh chương trình thông thường của nó trong Phân vùng hệ thống EFI, đi kèm với phần sụn .


Không quan tâm, Tại sao bạn lại gọi bố cục phân vùng là "Phân vùng EFI" thay vì GPT (Bảng phân vùng GUID) hoặc kiểu GPT? Vì bạn dường như khá đặc biệt về các thuật ngữ, tôi rất muốn biết lý do tại sao bạn tránh gọi nó là phân vùng GPT hoặc GUID.
Milind R

Vì vậy, bạn có nói rằng một khi được cài đặt ở chế độ UEFI, Windows có thể quay lại khởi động từ nó ở chế độ PC / AT không? Vậy thì tại sao đó không phải là lời khuyên tiêu chuẩn cho những ai muốn sử dụng Windows theo kiểu phân vùng hiện đại hơn nhưng không có phần mềm EFI?
Milind R

5

Có một số giải pháp có thể cho vấn đề này. Tóm lại, theo thứ tự ưu tiên của tôi ít nhiều:

  • Nâng cấp bo mạch chủ của bạn - Nếu bạn nhận được bo mạch chủ với các tính năng khởi động UEFI, bạn sẽ được đặt, vì sau đó bạn có thể cài đặt Windows ở chế độ UEFI. Hầu hết (có thể là tất cả) các bo mạch dựa trên Sandy Bridge của Intel đều có khả năng UEFI, mặc dù một số không quảng cáo thực tế này. Nhiều bo mạch AMD mới cũng có khả năng UEFI. Trên thực tế, có một cơ hội bạn đã có một bảng như vậy. Nhiều bo mạch thương hiệu Intel được bán trong vài năm qua có tùy chọn khởi động UEFI được chôn trong màn hình cài đặt CMOS của chúng. Bạn có thể thử tìm kiếm một tùy chọn như vậy. Tuy nhiên, bạn có thể cần sử dụng chế độ UEFI cho tất cả các hệ điều hành của mình. May mắn thay, Linux chuyển đổi khá dễ dàng và có thể chuyển đổi qua lại mà không cần cấu hình lại một khi nó được thiết lập để khởi động. Lưu ý rằng bạn sẽ cần phiên bản 64 bit của Vista hoặc 7 để cài đặt Windows ở chế độ UEFI.
  • Sử dụng đĩa cứng thứ hai - Bạn có thể cài đặt Windows vào đĩa MBR và giữ Linux trên đĩa GPT. Bạn thậm chí có thể đặt các phân vùng dữ liệu Windows trên đĩa GPT nếu muốn (miễn là bạn đang sử dụng Vista hoặc 7); chỉ có đĩa khởi động Windows phải có trên MBR. Ngay cả khi bạn đã có một ổ đĩa 20 GB cũ, có thể đủ để giữ phân vùng Windows C: và sau đó bạn có thể đặt các tệp chương trình Windows của mình lên phân vùng GPT, miễn là bạn đang sử dụng Vista hoặc 7.
  • Chuyển đổi sang MBR - Bạn có thể làm điều này với GPT fdisk (gdisk) , nhưng với một số cảnh báo nhất định. Đáng chú ý nhất, bạn sẽ phải có ít nhất một khu vực miễn phí trước mỗi phân vùng logic bạn muốn tạo và tất cả các phân vùng logic phải liền kề nhau. Nếu đĩa hiện tại của bạn không đáp ứng các thông số kỹ thuật đó, bạn sẽ mất các phân vùng trong chuyển đổi hoặc bạn sẽ cần thay đổi kích thước một số phân vùng để tạo các khoảng trống cần thiết. Cũng có một số rủi ro mất dữ liệu, đặc biệt nếu bạn phải thay đổi kích thước phân vùng.
  • Sử dụng UEFI DUET - Như JdeBP đã đề xuất (và liên kết với trang của tôi về chủ đề này ), UEFI DUET là một khả năng. IMHO, những hạn chế của phương pháp này không tuyệt vời như JdeBP gợi ý, NẾU UEFI DUET thậm chí khởi động trên hệ thống của bạn. (Các tỷ lệ rất tốt nếu bạn có CPU Intel 64 bit, kém hơn CPU AMD 64 bit và nó sẽ không hoạt động trên các CPU 32 bit.) Bạn phải cẩn thận và có một thứ tốt tâm trí cho sự cố kỹ thuật để thử điều này, mặc dù. Bạn có thể thực hiện một số khám phá sơ bộ với ổ flash USB; cài đặt UEFI DUET cho nó và xem bạn có thể khởi động nó không. Nếu nó khởi động, có lẽ bạn sẽ có thể cài đặt Windows và khởi động, thậm chí một cách thường xuyên, mặc dù có những cạm bẫy, như đã lưu ý trên trang của tôi về chủ đề này. Sau khi được thiết lập, về cơ bản, UEFI DUET trở thành trình tải khởi động GPT khá lớn cho Windows.
  • Sử dụng ảo hóa - Nó không hoàn toàn là những gì bạn yêu cầu, nhưng Windows có thể hiểu được sẽ hoạt động chấp nhận được trong một máy ảo. Mặc dù vậy, để chơi game, tôi hơi nghi ngờ rằng bạn sẽ có được hiệu suất bạn cần, nhưng nó có thể đáng để thử.
  • Lai MBR - Bạn có thể thiết lập điều này và cài đặt Windows vào một phân vùng lai. Windows sẽ xóa sạch bộ tải khởi động thường trú MBR hiện tại của bạn, vì vậy hãy chuẩn bị cài đặt lại nó. Cá nhân, tôi không đề xuất giải pháp này, vì MBR lai rất nguy hiểm. Tuy nhiên, nếu tất cả các tùy chọn khác rơi vào, có thể đây là từ bỏ trên Windows.

Tôi cũng muốn làm sáng tỏ một vài quan niệm sai lầm:

  • Windows không thể khởi động từ GPT trên máy tính chạy BIOS chắc chắn là giới hạn của Windows, không phải là giới hạn phần sụn (BIOS). Linux, FreeBSD và một số HĐH khác có thể khởi động tốt từ các đĩa GPT trên các máy tính chạy BIOS. Tôi không biết tại sao Microsoft không muốn hỗ trợ khởi động Windows từ GPT trên các máy tính chạy BIOS, nhưng họ chắc chắn có thể làm điều đó nếu họ muốn. Nếu không có gì khác, họ có thể thực hiện UEFI, tách nó thành các yếu tố cần thiết và sử dụng nó làm bộ tải khởi động.
  • Trình tải GPT của SYSLINUX không sử dụng các giá trị khu vực được mã hóa cứng; nó có đủ thông minh để đọc GPT và nhảy đến phân vùng với cờ Khởi động BIOS kế thừa được đặt trên nó. Không có gì sai với các giá trị ngành mã hóa cứng, như cách GRUB 2 làm; Hai giải pháp chỉ có những ưu điểm và nhược điểm khác nhau.

3
Tôi đã tìm hiểu về bootstrap MBR nhận biết SYSLINUX một thời gian sau Tôi đã tìm thấy đề xuất T13, đã viết một bootstrap MBR của riêng tôi từ đầu đọc bảng phân vùng EFI và xuất bản nó ra thế giới vào ngày 2011-06-26; tất cả lần lượt là sau khi tôi viết câu trả lời ở trên và nhận thấy một khoảng trống cần lấp đầy. Tôi thực sự nên cập nhật câu trả lời của mình ở đây để lưu ý rằng tôi là một trong hai người trên thế giới đã lấp đầy khoảng trống. ☺
JdeBP

Các giá trị của phần cứng mã hóa làm cho quá trình khởi động trở nên cực kỳ mong manh, dẫn đến lời nhắc giải cứu grub đáng sợ, ngay cả khi sửa đổi phân vùng nhỏ nhất. Tôi đã trải nghiệm nó nhiều lần và nó đưa tôi ra khỏi Linux một thời gian, cho đến khi UEFI làm cho nó mạnh mẽ.
Milind R

Syslinux không sử dụng các giá trị khu vực được mã hóa cứng, nhưng từ việc tôi đọc mã lắp ráp, nó dựa vào mã hóa phân vùng GUID . Điều này dường như không phải là trường hợp với mã MBR của @ JdeBP cho các đĩa GPT.
Milind R

0

Nếu bạn thậm chí có một nhỏ bé Ổ đĩa MBR, bạn có thể làm điều đó mà không cần hack. Nó sẽ hoạt động ngay cả với Windows 32 bit . Một thanh mềm hoặc USB sẽ làm.

Khởi động vào đĩa cài đặt / sửa chữa Windows. Tạo ổ đĩa hệ thống trên thanh và sử dụng bcdboot để đặt các tập tin khởi động của bạn trên thanh. Thêm một khởi động với bootsect. Thay đổi {bootmgr} device đến boot. Khởi động từ thanh.

Các bước được chi tiết đâ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.