Làm thế nào / Tại sao con mèo viết ISO có thể khởi động vào thiết bị


15

Gần đây tôi phát hiện ra rằng tôi có thể tạo khóa USB có thể khởi động từ tệp ISO bằng cách sử dụng cat(hoặc dd).

Tôi không thể tìm thấy bất kỳ thông tin về cách thức này hoạt động. Tại sao

cat my.iso > /dev/sdb && sync

lấy tập tin đó và ghi tất cả các tập tin chứa trong định dạng có thể khởi động vào thiết bị?


Tôi chưa bao giờ nghĩ sẽ sử dụng catthay thế ddkhi tạo liveUSBs
Rob

3
Đó là trong hướng dẫn cho "Tails", hình ảnh Tor trực tiếp. Tôi đã làm một chút googling (trước khi hỏi ở đây) và có vẻ như dd là những gì mọi người thường sử dụng cho loại điều này, nhưng con mèo dường như là công cụ ưa thích bây giờ. Tôi đoán nó dễ dàng hơn vì bạn không phải bận tâm chỉ định các tham số được đặt tên cho chi tiết đầu vào / đầu ra.

Câu trả lời:


14

Một tệp ISO là một hình ảnh hệ thống tập tin hoàn chỉnh, được định dạng. Tất cả cathoặc ddkhông làm một bản sao bit-bit của hình ảnh hệ thống tập tin đó vào phương tiện mục tiêu của bạn.

Không có phép thuật xảy ra đằng sau hậu trường. Việc chuẩn bị hệ thống tập tin ISO đã được thực hiện trước đó (thường là bằng một công cụ chuyên dụng). Tất cả catlà viết bộ sưu tập byte đó. Nó hoàn toàn không diễn giải .iso, cũng không hiểu rằng nó đang cố gắng tạo ra một phương tiện có thể tháo rời có thể khởi động được.
Nó đòi hỏi sự hỗ trợ thích hợp từ kernel và trình điều khiển thiết bị để làm cho writes hoạt động trên phương tiện đó. Một chút "ma thuật" xuất hiện ở đó, vì phương tiện quang học có thể ghi không hoạt động chính xác giống như các ổ đĩa cứng thông thường. Nhưng phép thuật đó không liên quan đến việc diễn giải nội dung của tệp ISO.

Bạn có thể gắn .isotệp trực tiếp mà không cần ghi tệp bằng cách sử dụng vòng lặp (nếu điều đó có sẵn trên hệ điều hành của bạn). Tương tự, bạn có thể tạo một tệp chứa ví dụ một ext4hệ thống tệp và bạn có thể tạo tệp đó cho catmột phân vùng.


1
và sau đó chỉ cần đảm bảo dữ liệu đã thực sự được ghi vào phân vùng của bạn (thay vì chỉ được đệm)
yuyichao

@yuyichao đồng bộ hóa nên bao gồm điều đó, phải không? Chỉnh sửa: Tôi mới nhận ra mình đã trả lời một bình luận 6 tuổi
Manchineel

5

Điều này hoạt động vì hình ảnh iso đã được xử lý isohybrid, cài đặt bộ tải khởi động syslinux bình thường vào hình ảnh iso. Điều này là có thể bởi vì iso9660 thường không sử dụng một vài cung đầu tiên của hình ảnh, do đó, một bộ tải khởi động đĩa cứng ít nhiều bình thường có thể được đặt ở đó. Khi ghi vào đĩa quang, nó bị bỏ qua và bios khởi động đĩa bằng phương pháp khởi động thông thường el torito cdrom. Khi hình ảnh được đặt trên ổ đĩa flash, khu vực khởi động syslinux được tả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.