Viết bộ tải khởi động không có bộ nạp khởi động


8

Tôi có một câu hỏi mà tôi thực sự không thể tìm được câu trả lời thẳng. Hãy để tôi bắt đầu bằng cách nói rằng tôi không yêu cầu hướng dẫn từng bước, hoặc thậm chí có kế hoạch làm bất cứ điều gì. Tôi chỉ tò mò thôi.

Tôi đã đọc cả ngày về sự phát triển của các hệ điều hành và cách chúng được xây dựng từ đầu. Tôi có một nắm khá chắc chắn về lý thuyết của nó. Tuy nhiên, có một bước tôi dường như không thể tìm thấy câu trả lời.

Trước khi có một hệ điều hành đầy đủ, đầy công cụ, làm thế nào người ta thậm chí có thể viết một trình tải khởi động đơn giản cho một máy tính không có bộ tải khởi động, hoặc bất cứ điều gì cho vấn đề đó, trong khu vực khởi động của nó? Bước đầu tiên sẽ là gì sau khi có được một máy tính với mức tối thiểu? (Tức là, màn hình, bàn phím, bộ xử lý, ram, hdd, đĩa mềm)


Câu trả lời:


9

Trong lịch sử có nhiều cách khác nhau: -

  • Không có hệ điều hành nào cả. Thực thi được tải từ thẻ đầu tiên, tập tin băng hoặc bất cứ điều gì.
  • Os cứng mã hóa trong bộ nhớ lõi từ. Lõi là nam châm vĩnh cửu thay vì ferrite đơn giản, tùy thuộc vào hướng N / S của nam châm, nó là một hoặc không. Các máy tính trong tàu vũ trụ Gemini và Apollo có tất cả các chương trình của họ "dệt kim" theo cách này.
  • Khu vực đầu tiên từ đĩa. Đây là tiêu chuẩn khá tốt trên các máy tính "mini" như PDP-11, máy tính đã sẵn sàng đọc bản nhạc đầu tiên từ đĩa đầu tiên và thực thi mã khi chạm vào điểm đánh dấu EOF.
  • Thiết bị khởi động tùy chỉnh. Các máy tính lớn của IBM thế hệ thứ hai có một đĩa mềm 12 inch chuyên dụng để tải trong HĐH "microcode". Mà sau đó tìm kiếm hệ điều hành thực trên đĩa ở đâu đó. Tôi cũng đã thấy micros với các ổ băng cassette chuyên dụng để tải HĐH. Người vận hành được yêu cầu tua lại hoặc "lật lại" băng.

  • BIOS. Một hệ điều hành tối thiểu được lưu trữ trong ROM và bộ xử lý có dây cứng để thực thi mã ROM khi "bật nguồn". ROM sau đó có được hệ điều hành thực sự từ bất cứ đâu. Đây là khá nhiều làm thế nào tất cả các máy tính hiện đại làm việc. Những gì ROM thực sự thay đổi từ bộ xử lý để bộ xử lý. Các hộp Itel thường có một chương trình BIOS rất tinh vi dành riêng cho từng "thế hệ". Các loại hộp Unix thường có BIOS đơn giản hơn nhiều, các hộp Sun / Oracle nổi tiếng tải một trình thông dịch "FORTH", sau đó thực thi một tập lệnh đơn giản để tải Solaris.


2
Đừng quên chuyển đổi công tắc! Nhiều máy tính đời đầu có một hàng công tắc bật tắt để bạn có thể tải bộ tải trước khởi động thủ công để đọc từ đĩa mềm hoặc băng để tải bộ tải khởi động thực tế và HĐH
Earlz

@Earlz - quên mất điều đó. Trên pdp-11, bạn có thể đặt địa chỉ nhị phân của thiết bị khởi động bằng bảng chuyển đổi bảng điều khiển.
James Anderson

@Earlz Có một câu chuyện nổi tiếng về cách Paul Allen (đồng sáng lập Microsoft) đã viết một bộ tải khởi động cho trình thông dịch BASIC của ông và Bill Gates cho Altair trên máy bay và sau đó bật nó bằng tay. (Xem en.wikipedia.org/wiki/Altair_BASIC , không cung cấp thông tin chi tiết, nhưng kể lại câu chuyện.)
Ryan Reich

4

Trong những ngày thực sự cổ xưa (như IBM 650 hoặc PDP1), cần phải nhập các giá trị vào bộ nhớ bằng các công tắc bảng mặt trước. Nhìn vào hình ảnh của những chiếc máy tính thực sự sơ khai, bạn thấy hai hàng đèn - Địa chỉ và Dữ liệu. Trên máy tính 16 bit, có 16 trong số này chạy ngang qua, thường được mã hóa màu theo nhóm ba hoặc bốn tương ứng cho bát phân hoặc hex.

Nút 'Đặt lại' sẽ đặt bộ đếm 'Địa chỉ' thành không. Sau đó, người ta có thể đặt các công tắc trên bus dữ liệu thành giá trị mong muốn và chuyển nút 'ghi dữ liệu'. Điều này sẽ ghi các cài đặt chuyển đổi vào bộ nhớ tại địa chỉ 0. Có các công tắc bật xuống để cho phép bạn di chuyển đến địa chỉ tiếp theo hoặc trước đó. Bạn cũng có thể đặt các công tắc cho địa chỉ và nhấp vào 'ghi địa chỉ'. Bất cứ thứ gì ở địa chỉ mới đó sẽ được hiển thị trên 16 đèn dữ liệu.

Thông thường, người ta sẽ chuyển đổi bằng cách sử dụng kỹ thuật này, một vòng đọc để đọc các giá trị từ đầu đọc thẻ hoặc băng giấy. Điều này sẽ chỉ đủ để tải một khối mã lớn hơn để tiến hành tải hệ điều hành hoặc ứng dụng. Vào thời điểm đó, các máy tính như vậy có từ 4K đến 16K (hoặc 8K đến 32K byte) vì vậy các bộ tải như vậy rất nhỏ theo tiêu chuẩn hiện đại. Một vòng lặp đọc chỉ có thể là ba hoặc năm từ 16 bit.

Bảng điều khiển phía trước minh họa


3

Bạn cần một số cách để tạo chip ROM hoặc EEPROM có thể được cài đặt trên bo mạch chủ và chứa bộ tải khởi động. Thực sự có một loạt các bước khởi động, bắt đầu bằng việc kiểm tra nội bộ bằng các chip khác nhau (CPU, card màn hình, v.v.) sau đó là kích hoạt và khám phá bus (bộ điều khiển bus PCI-e định vị mọi thứ được kết nối với nó và gán ID, v.v.). Sau đó, bo mạch chủ tìm ROM khởi động và chạy mã đó, từ đó tìm thấy thứ tự khởi động BIOS và xem qua đó cho một thiết bị phù hợp, sau đó tải trình khởi động từ đó. Lần lượt tải một hệ điều hành.

Chuỗi khởi động ban đầu là các công tắc bật tắt tạo thành ROM, sau đó sử dụng các công tắc để lập trình RAM, và tiếp tục với các bộ tải khởi động nhiều giai đoạn hiện đại.

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.