Tại sao và khi nào định dạng nhanh sang FAT32 ghi các cấu trúc khác nhau vào sector 0 trên ổ flash USB?


1

Giới thiệu: Đối với một dự án nghiên cứu, tôi đang cố gắng viết một bộ tải khởi động vào ổ flash USB. Sau một số thử nghiệm, tôi đã thành công để làm điều này. Tôi muốn biết làm thế nào tôi có thể tái tạo điều này.

Những gì tôi đã làm: Gần đây tôi đã mua một ổ flash USB mới và mở đĩa vật lý trong HxD (trình chỉnh sửa thập lục phân cho Windows). 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

Trên trang web này, rõ ràng có hai chuỗi hiện diện: MSDOS5.0FAT32. Cả hai đều không có mặt trong khu vực 0.

Sau khi thử nghiệm và cố gắng định dạng nhanh ổ đĩa trong Windows thành FAT32 theo cách mặc định, sector 0 vẫn có các cấu trúc khác với cấu trúc được mô tả ở trên. Khi tôi cố gắng định dạng lại nhanh chóng sau khi sử dụng mkisofs cho Windows và ghi ISO vào ổ USB Flash bằng PowerISO, cấu trúc của sector 0 cuối cùng đã thay đổi thành mô tả ở trên.

Câu hỏi của tôi: Tại sao nó thay đổi? Và làm cách nào tôi có thể tái tạo điều này cho các ổ flash USB mới?

Chỉnh sửa: Tôi cần khu vực có cùng cấu trúc như được mô tả trên trang web cho dự án của tôi.


Khu vực 0 của đĩa chứa bảng phân vùng. Nó vẫn chủ yếu là MBR, đặc biệt là trên các thiết bị di động. Bạn có thể muốn xem trình điều khiển Linux FAT32. Nhân tiện, câu hỏi này có lẽ phù hợp hơn với Stack Overflow . +
Daniel B

"Thiết bị USB" không rõ ràng. 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). Một ổ Flash không nên được gọi là "đĩa" . Linux luôn coi ổ USB Flash giống như ổ cứng. Windows có thể coi ổ USB Flash giống như ổ cứng, nhưng thông thường sẽ định dạng ổ đĩa như thể nó chỉ là phân vùng, tức là không có MBR ở sector 0 và cài đặt hệ thống tệp bắt đầu từ sector 0. Ngoài ra, hệ thống tệp ISO không đúng với ổ cứng hoặc USB.
mùn cưa

1
Điều đó không đúng, @sawdust. Windows cũng cần một bảng phân vùng trên các ổ USB có thể tháo rời USB. Như vậy, hệ thống tập tin thực tế không bao giờ bắt đầu ở khu vực 0. Trên Linux, bạn có thể làm điều này.
Daniel B

@DanielB - "Điều đó không đúng" - Bạn mơ hồ như OP. Điều gì không đúng, tất cả mọi thứ tôi đã viết? Ổ cứng có được kết nối qua bộ chuyển đổi USB-SATA có phải là "ổ USB có thể tháo rời USB" không?
mùn cưa

@sawdust Không có gì mơ hồ về nó. Bởi vì, bạn biết đấy, có một thứ gọi là bối cảnh. // Đáng ngạc nhiên, Windows thực sự hỗ trợ các thiết bị không liên kết, nhưng đây không phải là trường hợp tiêu chuẩn. Tất nhiên tôi sẽ không mua một ổ ngón tay cái mới chỉ để xem những gì trên đó, nhưng tôi cá là sẽ có một phân vùng. Một ổ đĩa di động là một ổ đĩa với bộ bit rời. Nhưng bạn đã biết điều đó.
Daniel B

Câu trả lời:


1

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

  1. 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.

  2. 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). nhập mô tả hình ảnh ở đây

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.


Cảm ơn bạn rất nhiều vì câu trả lời của bạn. 1) Có, ý tôi là ổ USB Flash. 2) Trong HxD (trình chỉnh sửa thập lục phân cho Windows) Tôi đã mở ổ Flash để đọc và ghi thông qua "Extras"> "Mở đĩa ...". Nó hiển thị dưới "Đĩa vật lý" và được dán nhãn là "Đĩa di động 1". Bạn đã sử dụng Định dạng nhanh hoặc Định dạng thông thường trong Windows? Cảm ơn bạn.
Michiel Pater

1
"Bạn đã sử dụng Định dạng nhanh hay Định dạng thông thường trong Windows chưa?" - Nhanh, nhưng tôi nghi ngờ rằng nó làm cho một sự khác biệt. Không có các lĩnh vực có thể quan trọng hơn.
mùn cưa

Tôi đã cập nhật câu hỏi của mình để rõ hơn về việc tôi đang nói về ổ Flash. Bạn có nghĩ rằng tôi có thể đạt được kết quả tương tự trong Windows bằng cách loại bỏ sector 0 không? Hay tôi phải loại bỏ tất cả các lĩnh vực? Tôi không chắc chắn, nhưng nếu tôi nhớ chính xác, tôi cũng đã cố gắng loại bỏ sector 0 một lần. 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 Filesystem không. Cảm ơn bạn.
Michiel Pater

"Hoặc tôi phải loại bỏ tất cả các lĩnh vực?" Không phải tất cả các lĩnh vực, nhưng ít nhất là "theo dõi" đầu tiên. Khi sử dụng ddlệnh với bộ count=xác định, thật dễ dàng để chỉ định 64 cung đầu tiên như chỉ định một cung. Trên PC Windows, tôi thường sử dụng CD tiện ích Western Digital hoặc Seagate để loại bỏ các lĩnh vực. Bây giờ, nếu cần thiết, tôi khởi động lại với Linux LiveCD được cài đặt trên ổ USB Flash. Xem thêm câu trả lời chỉnh sửa.
mùn cưa
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.