Bagaimana / Mengapa kucing menulis ISO yang dapat di-boot ke perangkat

15

Baru-baru ini saya menemukan bahwa saya dapat membuat kunci USB yang dapat di-boot dari file ISO hanya dengan menggunakan cat(atau dd).

Saya tidak dapat menemukan informasi tentang cara kerjanya. Kenapa harus:

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

ambil file itu dan tulis semua file yang ada di dalamnya, dalam format yang dapat di-boot, ke perangkat?

Tikar
sumber
Saya tidak pernah berpikir untuk penggunaan catdi tempat ddketika membuat liveUSBs
Rob
3
Itu dalam instruksi untuk "Ekor", gambar Tor langsung. Saya melakukan sedikit googling (sebelum bertanya di sini) dan tampaknya bahwa dd adalah apa yang digunakan orang untuk hal semacam ini, tetapi kucing tampaknya menjadi alat yang disukai sekarang. Saya kira itu lebih mudah karena Anda tidak perlu repot menentukan parameter bernama untuk detail input / output.

Jawaban:

14

File ISO adalah gambar sistem file yang lengkap, diformat. Semua catatau ddtidak adalah melakukan salinan bit-untuk-bit dari gambar sistem file itu ke media target Anda.

Tidak ada keajaiban yang terjadi di balik layar. Persiapan sistem file ISO dilakukan sebelumnya (seringkali oleh alat khusus). Yang harus catdilakukan adalah menulis koleksi byte keluar. Itu tidak menafsirkan .isosama sekali, juga tidak mengerti bahwa itu mencoba membuat media yang dapat dilepas sama sekali.
Itu memang membutuhkan dukungan yang tepat dari kernel dan driver perangkat untuk membuat writes bekerja di media itu. Sedikit "keajaiban" terjadi di sana, karena media optik yang dapat ditulis tidak beroperasi dengan cara yang persis sama dengan hard drive konvensional. Tapi sihir itu tidak melibatkan menafsirkan isi file ISO.

Anda dapat memasang .isofile secara langsung tanpa membakarnya dengan menggunakan loop mount (jika hal seperti itu tersedia di OS Anda). Demikian pula, Anda dapat membuat file yang berisi misalnya sistem ext4file, dan Anda bisa melakukannya catke partisi.

Tikar
sumber
1
dan kemudian pastikan data telah benar-benar menulis untuk Anda partisi (bukan hanya buffer)
yuyichao
Sinkronisasi @yuyichao harus membahasnya, bukan? Sunting: Saya baru sadar saya membalas komentar 6 tahun
Manchineel
5

Ini berfungsi karena gambar iso diproses dengan isohybrid, yang menginstal boot loader syslinux normal ke gambar iso. Ini dimungkinkan karena iso9660 biasanya tidak menggunakan beberapa sektor pertama dari gambar, sehingga boot loader hard disk yang lebih atau kurang normal dapat ditempatkan di sana. Ketika dibakar ke disk optik, disk tersebut diabaikan dan BIOS mem-boot disk menggunakan metode boot el torito cdrom konvensional. Ketika gambar ditempatkan pada flash drive, sektor boot syslinux dimuat.

psusi
sumber