Tôi đang cố gắng viết một bộ tải khởi động vào một thiết bị USB.
"Thiết bị USB" không rõ ràng. Có các thiết bị video và âm thanh USB cũng như các thiết bị lưu trữ khác nhau. Theo "ổ USB", có lẽ bạn có nghĩa là ổ USB Flash, chứ không phải là USB HDD (luôn có MBR trong khu vực đầu tiên, thay vì khu vực khởi động hệ thống tập tin).
Nó đã được định dạng là FAT32, nhưng sector 0 có cấu trúc hoàn toàn khác so với mô tả trên trang web này
Ổ đĩa Flash dường như có MBR (Bản ghi khởi động chính) với bảng phân vùng (trong khu vực 0) và hệ thống tệp FAT được đặt trong một phân vùng chính.
Như trang web đó đề cập, đó là các khu vực của các khu vực khởi động, được cài đặt trong khu vực đầu tiên của một hệ thống tập tin thường nằm trong một phân vùng (hoặc khu vực đầu tiên của một đĩa mềm).
Và làm thế nào tôi có thể tái tạo điều này cho các ổ USB mới?
Tôi có thể cài đặt khu vực khởi động hệ thống tập tin trong khu vực 0 của ổ USB Flash bằng cách
loại bỏ bất kỳ MBR nào trong khu vực zero. Trên một vấn đề hệ thống Linux
sudo dd if=/dev/zero of=/dev/sdX count=64
Đây có thể là bước quan trọng, đặc biệt là nếu đã có MBR. Tôi không biết làm thế nào để thực hiện bước này trên Windows.
Sử dụng Windows để định dạng ổ USB Flash (Windows sẽ nhấn mạnh vào định dạng trước khi bạn có thể sử dụng ổ đĩa này). Tôi đã sử dụng Win7 để 'định dạng nhanh' ổ đĩa để có kết quả bên dưới.
Kết quả sector 0 trên ổ USB Flash giống với những gì bạn muốn (nghĩa là nó không phải là MBR và không có bảng phân vùng).
Phụ lục
Tôi không chắc liệu tôi có hiểu đúng sự khác biệt giữa MBR và khu vực khởi động Hệ thống tập tin không
Bản ghi khởi động chính, MBR, được cài đặt trong khu vực đầu tiên của thiết bị lưu trữ dung lượng lớn được phân vùng PC. Ở cuối đuôi của khu vực là một bảng phân vùng chia thiết bị thành các thiết bị logic nhỏ hơn. Một phân vùng sẽ được đánh dấu là "hoạt động" và mã khởi động trong MBR sẽ tải và thực thi cung đầu tiên của phân vùng "hoạt động" đó.
Khu vực đầu tiên của phân vùng có thể khởi động (hoặc khu vực đầu tiên của đĩa mềm) chứa bộ tải khởi động. Hệ thống tập tin được cài đặt trong phân vùng đó sẽ có mã thích hợp trong khu vực đầu tiên đó để tiếp tục quá trình khởi động khi hệ điều hành được cài đặt.
Khi không có hệ điều hành được cài đặt hoặc chương trình khởi động tiếp theo để tải (ví dụ BOOTMGR), bộ tải khởi động xuất văn bản cho biết đây không phải là thiết bị / phân vùng có thể khởi động (ví dụ: "Xóa đĩa hoặc phương tiện khác. Lỗi đĩa. Nhấn bất kỳ phím nào để khởi động lại. ")
IOW bạn muốn ổ USB Flash giống với đĩa mềm dung lượng siêu cao thay vì ổ cứng (được phân vùng).
Cảnh giác với các giới hạn hệ thống tệp, ví dụ: hệ thống tệp di động nhất, FAT32, bị giới hạn ở 32GB.
FYI Tôi nhận thức được vấn đề này với các ổ USB và thẻ SD Flash vì thiếu sót bảng MBR & bảng phân vùng làm cho phương tiện lưu trữ đó không thể đọc được trên một số thiết bị nhúng Linux (có phân vùng mong đợi). Các hướng dẫn về khởi tạo phương tiện VFAT có thể khởi động cho Linux nhúng thường chỉ định phân vùng & định dạng trên Linux để tránh điều này.