MBR: Làm thế nào để BIOS quyết định xem một ổ đĩa có khả năng khởi động hay không?


12

Trong khi cố gắng để trả lời câu hỏi này trên askubuntu: Làm thế nào để Gỡ bỏ GRUB Tôi đọc bài viết trên Wikipedia trên MBR và cũng là câu trả lời hoàn hảo về một câu hỏi nào liên quan ở đây trên superuser, tuy nhiên, có một điều vẫn còn chưa rõ ràng với tôi:

Chính xác thì điều gì khiến BIOS quyết định xem một ổ đĩa có khả năng khởi động hay không? Làm thế nào để trình tự khởi động bỏ qua ổ đĩa số 1 và tiến hành thử khởi động từ ổ đĩa số 2 nếu có nhiều hơn một ổ đĩa được cài đặt trong hệ thống?

Tôi hiểu rằng điều duy nhất mà BIOS thường kiểm tra trên MBR là chữ ký của nó ở cuối phần 512 byte, và sau đó nó chỉ chuyển điều khiển sang bộ tải khởi động ban đầu nằm trong 446 byte đầu tiên của khu vực khởi động.

Liệu nó có ngụ ý rằng 446 byte đầu tiên của khu vực khởi động PHẢI chứa một số mã bộ nạp khởi động có ý nghĩa ngay cả khi đĩa không có khả năng khởi động?

Sau khi BIOS chuyển điều khiển sang bộ tải khởi động trên ổ đĩa số 1 mà không có phân vùng "có khả năng khởi động" - chính xác thì bộ nạp khởi động trên ổ đĩa thứ hai được gọi như thế nào?

Xin lỗi nếu điều này quá kỹ thuật :) Câu hỏi ngắn là: "Chính xác thì BIOS bỏ qua một ổ đĩa và tiến hành thử khởi động từ ổ đĩa tiếp theo như thế nào?"

Câu trả lời:


16

Chính xác thì điều gì khiến BIOS quyết định xem một ổ đĩa có khả năng khởi động hay không?

BIOS quyết định xem một ổ đĩa có khả năng khởi động hay không dựa trên bản ghi phân vùng 16 byte, xuất hiện sau vùng mã MBR (được giữ trong một bảng bắt đầu từ byte thứ 4 ). Byte đầu tiên trong mỗi bản ghi phân vùng biểu thị trạng thái khởi động của ổ đĩa (và được đặt thành 0x80nếu có khả năng khởi động hoặc 0x00nếu không). Một số BIOS có thể kiểm tra các phần khác của MBR (ví dụ: các loại phân vùng, tổng kiểm), nhưng yêu cầu cơ bản là cờ khởi động.

Làm thế nào để trình tự khởi động bỏ qua ổ đĩa số 1 và tiến hành thử khởi động từ ổ đĩa số 2 nếu có nhiều hơn một ổ đĩa được cài đặt trong hệ thống?

Điều này phụ thuộc vào việc triển khai và là lý do tại sao bạn cần chọn đúng thứ tự khởi động. Trong hầu hết các trường hợp, BIOS sẽ xem xét từng phương tiện lưu trữ theo thứ tự bạn đặt và xác định xem nó có thể khởi động từ thiết bị đó hay không (thông qua dữ liệu MBR). Nếu có thể, nó sẽ - nếu không, nó tiếp tục lặp qua các thiết bị khác (một lần nữa, theo thứ tự bạn đã chọn).

Sau khi BIOS chuyển điều khiển sang bộ tải khởi động trên ổ đĩa số 1 mà không có phân vùng "có khả năng khởi động" - chính xác thì bộ nạp khởi động trên ổ đĩa thứ hai được gọi như thế nào?

Khi tìm thấy thiết bị khởi động hợp lệ (nghĩa là cờ có thể khởi động được đặt và các kiểm tra bổ sung khác sẽ vượt qua), BIOS sẽ sao chép cung MBR vào RAM. Sau đó, BIOS sẽ di chuyển con trỏ lệnh đến đầu vị trí này (sử dụng một JUMPlệnh), nơi đặt đoạn mã MBR và sau đó máy tính sẽ khởi động.

Nếu BIOS hỗ trợ Đặc tả khởi động BIOS , mã MBR có thể trả lại quyền điều khiển cho BIOS theo một hướng dẫn nhất định, báo hiệu lỗi không khởi động và nhắc nó thử thiết bị tiếp theo. BIOS cũ hơn chỉ in một thông báo lỗi mặc dù. Một thông tin tốt nếu BIOS của bạn hỗ trợ nó là liệu bạn có thể khởi động từ USB hay không.

Tôi hiểu rằng điều duy nhất mà BIOS thường kiểm tra trên MBR là chữ ký của nó ở cuối phần 512 byte, và sau đó nó chỉ chuyển điều khiển sang bộ tải khởi động ban đầu nằm trong 446 byte đầu tiên của khu vực khởi động.

Điều này là chính xác, mặc dù cần lưu ý rằng hầu hết các BIOS hiện đại cũng sẽ tìm Bảng phân vùng GUID cũng như bảng kiểu MBR thông thường cũ hơn.

Liệu nó có ngụ ý rằng 446 byte đầu tiên của khu vực khởi động PHẢI chứa một số mã bộ nạp khởi động có ý nghĩa ngay cả khi đĩa không có khả năng khởi động?

Không , nhưng ổ đĩa phải có bảng phân vùng MBR hoặc GUID hợp lệ - nếu không, nó sẽ không được máy tính phát hiện. Mặc dù phần mã của MBR thực sự có thể trống, khu vực đầu tiên của ổ đĩa phải có MBR / GPT được hình thành tốt.


Cảm ơn câu trả lời rất chi tiết. Vì vậy, tiêu chí cho một thiết bị có thể khởi động hợp lệ là sự hiện diện của phân vùng có thể khởi động trong bảng phân vùng và một số "kiểm tra bổ sung khác"? Tôi chỉ hơi bối rối vì trong câu hỏi ban đầu trên AskUbfox, tác giả cho thấy rằng tất cả các phân vùng trên ổ đĩa đều không khởi động được và anh ta vẫn thấy lỗi do GRUB bị hỏng - hoàn toàn không nên được BIOS gọi ra bởi vì ổ đĩa không đáp ứng tiêu chí "có khả năng khởi động", do đó, BIOS nên bỏ qua ổ đĩa và chuyển sang ổ đĩa tiếp theo
Serge

@Sergey Tôi đã xem câu hỏi đó, và không chắc chắn. Có thể MBR bị hỏng hoặc cờ có thể khởi động được đặt thành giá trị không hợp lệ (không biết cách fdiskxử lý các trường hợp đó, mặc dù phiên bản gốc đã gắn cờ các tiêu đề MBR không hợp lệ). Tôi đã khuyên OP đăng tiêu đề MBR thô, nhưng anh ấy / cô ấy cũng có thể muốn "bật / tắt" cờ khởi động (để đặt / đặt lại cờ theo cách thủ công).
Đột phá

Hãy nhớ rằng mã BIOS không chung chung. Nó khá cụ thể cho từng bo mạch chính, vì vậy nó biết loại ổ đĩa nào có thể được gắn vào cổng nào.
LatinSuD

Câu trả lời này không hoàn toàn chính xác. FWIU, kiểm tra phân vùng đang hoạt động và không có gì là mã khởi động mặc định của MBR mặc định, chứ không phải BIOS. NeoSmart trình bày một mô tả hợp lý hơn: trên các PC tương thích với IBM (về cơ bản là mọi thứ), hai byte cuối cùng của MBR 512 byte được gọi là chữ ký khởi động và được BIOS sử dụng để xác định xem ổ đĩa khởi động được chọn có thực sự có khả năng khởi động hay không không phải." Phần cuối chỉ là sai. BIOS kế thừa có thể khởi động từ GPT (với mã khởi động BIOS phù hợp), vì về cơ bản, đó là khả năng khởi động của phong cách miễn phí.
Daniel B

@DanielB cả hai điều này đều được giải quyết trực tiếp trong câu trả lời: "BIOS thường kiểm tra MBR là chữ ký của nó ở cuối phần 512 byte, và sau đó nó chỉ chuyển điều khiển sang bộ tải khởi động ban đầu nằm trong 446 byte đầu tiên của khu vực khởi động "" hầu hết các BIOS hiện đại cũng sẽ tìm Bảng phân vùng GUID cũng như bảng kiểu MBR thông thường cũ hơn " .
Đột phá
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.