Một Master Boot Record được tạo thành từ 512 byte, hai byte cuối cùng phải được 0x55 0xAA. Còn lại 510 byte, mục bảng phân vùng là 16 byte, tại 4 mục bảng phân vùng lớn nhất, là 64 byte. Here là mục nhập phân vùng trông như thế nào.
Còn lại 446 byte mã bộ mã hóa. Thông thường, vài byte đầu tiên bao gồm một bản ghi nhận dạng khởi động, mô tả dữ liệu đĩa của bộ nạp khởi động, chẳng hạn như mã định danh, id hệ thống, nhưng chỉ một vài, sau đó BIOS dự kiến mã khởi động ở 0x000: 0x07C00, sau đó nó tự định vị lại trong phân khúc bộ nhớ. Xem here để biết hướng dẫn ví dụ về bộ nạp khởi động. Có một tổng quan kỹ thuật chi tiết về WikiBooks về nó here.
Điều duy nhất bạn phải cẩn thận, là mã bộ nạp khởi động không được vượt quá 446 byte nếu không, bảng phân vùng sẽ bị hỏng và do đó thông báo lỗi BIOS 'Lỗi. Thiếu hệ điều hành 'hoặc tương tự!
Viết boot sector biên soạn nhị phân vào đĩa sẽ bao gồm một cách lộn xộn và nguy hiểm của điều chỉnh các máy tính thông thường, trong Linux lệnh sẽ tương tự như:
# Assume that /dev/hda1 is the first hard disk then...
dd if=mybootldr.bin of=/dev/hda1 bs=512 cnt=1
Cách khác liên quan đến việc sử dụng một thu nhập thấp chương trình biên tập đĩa cấp hoặc thậm chí sử dụng DEBUG.EXE cũ (được tìm thấy trên các đĩa CDDOS cũ) hoặc thậm chí sử dụng FreeDos.
C:\DEBUG.EXE mybootldr.bin
-W 100 0 0 1
-Q
Nếu tôi nhớ, DR.DOS (Digital Research DOS) là đối thủ của MS-DOS, đã sử dụng mật khẩu bảo vệ trên bộ nạp khởi động trước khi khởi động DR-DOS.
Chỉnh sửa: Nếu bạn thực sự tò mò về cách BIOS tìm 0x0000: 0x7C00, hãy xem liên kết này để tải xuống mã BIOS gốc của IBM XT here.
Hy vọng điều này sẽ giúp, Trân trọng, Tom.
Cảm ơn Leonidas! :) – iokevins