Tại sao chúng ta cần một bộ tải khởi động?


29

Sau khi BIOS, hoặc một cái gì đó tương tự như phần sụn được khởi động, điều khiển được chuyển đến bộ nạp khởi động, theo như tôi biết.

Tại sao BIOS không thể tải hạt nhân hệ điều hành trực tiếp?

Ngoài ra, hướng dẫn GRUB cho biết: một cách ngắn gọn, bộ tải khởi động là chương trình phần mềm đầu tiên chạy khi máy tính khởi động . Không phải BIOS là chương trình đầu tiên chạy sao?


Câu trả lời:


28

Một BIOS sẽ cần biết cách tải kernel và điều này sẽ khiến BIOS trở nên quá phức tạp: hãy tưởng tượng một BIOS cần biết cách tải nhiều hệ điều hành khác nhau có sẵn, làm thế nào để truyền các tham số kernel cho chúng, v.v ...

Do đó, nó chỉ khởi tạo phần cứng và nhảy đến một nơi đã biết nơi lưu trữ bộ nạp khởi động; Sau đó, sự kiểm soát được truyền cho nó.

Từ các nguyên tắc cơ bản của Unix và Internet HOWTO :

Bạn có thể tự hỏi tại sao BIOS không tải kernel trực tiếp - tại sao quá trình hai bước với bộ tải khởi động? Chà, BIOS không thông minh lắm. Trên thực tế, điều đó rất ngu ngốc và Linux hoàn toàn không sử dụng nó sau thời gian khởi động. Ban đầu nó được viết cho các PC 8 bit nguyên thủy với các đĩa nhỏ và theo nghĩa đen không thể truy cập đủ đĩa để tải kernel trực tiếp. Bước bộ tải khởi động cũng cho phép bạn khởi động một trong một số hệ điều hành ở những nơi khác nhau trên đĩa của bạn, trong trường hợp không chắc là Unix không đủ tốt cho bạn.

Đối với BIOS là chương trình đầu tiên chạy: (từ Wikipedia )

Phần mềm BIOS được tích hợp vào PC và là mã đầu tiên được chạy bởi PC khi được bật ('firmware firmware').

Nhưng phần sụn phần mềm. Vì vậy, tôi cho rằng hướng dẫn GRUB ít nhất là khó hiểu về phần đó; bộ tải khởi động có thể được xem là phần mềm do người dùng định nghĩa đầu tiên chạy trên máy tính.


10

Lý do là sự linh hoạt. Bạn có thể có một số HĐH khác nhau trên một đĩa cứng (Windows, Linux, v.v.) hoặc bạn có thể có một số phiên bản khác nhau của cùng một HĐH. Do đó, tốt hơn là nên có một đoạn mã độc lập với hệ điều hành để biết mỗi hệ điều hành được cài đặt trên đĩa cứng nằm ở đâu, làm thế nào để tải từng cái, tải cái nào, có trình bày menu hay không, v.v. một bộ tải khởi động.

BIOS tải và thực thi mã nằm ở vị trí được xác định trước trên đĩa cứng (khu vực đầu tiên). Chúng tôi gọi mã này là bộ tải khởi động, nhưng về mặt kỹ thuật nếu bạn đã cài đặt Windows trên một đĩa cứng trống thì mã này cũng được Windows cài đặt, vì vậy bạn có thể gọi nó là một phần của Windows, đặc biệt là vì bộ tải khởi động Windows không thể tải bất kỳ HĐH nào khác ngoài Windows.

Về chương trình phần mềm đầu tiên chạy khi máy tính khởi động: sự phân biệt phần sụn / phần mềm khá mỏng và quá trình khởi động máy tính hiện đại rất phức tạp. Bản thân BIOS cũng không phải là một chương trình nguyên khối, nhưng một số giai đoạn riêng biệt được kết nối với nhau. Tuy nhiên, bootloader là mã có thể thay đổi người dùng đầu tiên chạy. Đây là đoạn mã đầu tiên mà người dùng có thể làm hỏng, xóa, lây nhiễm virus, v.v. Vì vậy, tôi cho rằng trong khi về mặt kỹ thuật, BIOS là phần mềm đầu tiên chạy, bootloader trước tiên là nếu máy tính không khởi động người dùng cần để kiểm tra xem nó có ổn không


1
Từ kinh nghiệm, người dùng chắc chắn có thể phá vỡ BIOS.
Ngừng làm hại Monica

2

Tại sao BIOS không thể tải hạt nhân hệ điều hành trực tiếp?

Ba lý do:

  • BIOS trên nền tảng PC ban đầu khi được giới thiệu vào năm 1981 có nghĩa là hoạt động tương tự như trong hệ điều hành CP / M - cụ thể là lớp trừu tượng mỏng cho một vài thiết bị và bộ tải khởi động đĩa đơn giản. CP / M có một lớp khác gọi là "BDOS" xử lý hệ thống tập tin. DOS tương tự như CP / M ở nhiều khía cạnh vì nó là hệ điều hành thịnh hành vào thời điểm đó, và có cấu trúc tương tự. BIOS được dự định để xử lý các khía cạnh cụ thể về phần cứng của nền tảng, một vai trò mà các trình điều khiển trong các hệ điều hành hiện nay thực hiện.

  • Khái niệm về một hệ thống tệp tách biệt với HĐH chưa thực sự được giữ vững.

  • Tại thời điểm này, RAM và ROM là nguồn tài nguyên đắt đỏ và khan hiếm. Máy tính IBM 5150 ban đầu có thể thu được chỉ với 16K RAM ( tham khảo ). Kích thước ROM của hệ thống này là 48K và bao gồm trình thông dịch BASIC. Lúc đó cũng không phải là một hệ thống tập tin tiêu chuẩn.

Kể từ khi DOS phát triển để trở thành hệ điều hành phổ biến nhất cho nền tảng này và Windows sau đó, hoạt động với thiết lập này, không ai nghĩ sẽ mở rộng BIOS theo cách này để bao gồm khả năng tải khởi động thực sự.

Tôi không chắc về khả năng của UEFI - nó có thể có khả năng tải khởi động thực sự không được Windows sử dụng vì lý do này hay lý do khác (Windows khăng khăng sử dụng trình quản lý khởi động của chính nó khi bạn cài đặt nó). Các phần mềm không phải BIOS khác như U-Boot và các phần mềm trong nhiều điện thoại và bộ định tuyến đều tải và chạy hạt nhân trực tiếp. Không có lý do kỹ thuật nào cho nó kể từ khi BIOS bắt đầu có chỗ trong ROM để làm nhiều việc hơn.

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.