Cómo / por qué cat escribe un ISO de arranque en un dispositivo

15

Recientemente descubrí que puedo crear una llave USB de arranque a partir de un archivo ISO simplemente usando cat(o dd).

No puedo encontrar ninguna información sobre cómo funciona esto. ¿Por qué debería:

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

tomar ese archivo y escribir todos los archivos que contiene, en formato de arranque, en un dispositivo?

Estera
fuente
Nunca pensé usarlo caten lugar de ddcuando hago liveUSBs
Rob
3
Estaba en las instrucciones para "Tails", la imagen de Tor en vivo. Busqué en Google un poco (antes de preguntar aquí) y parece que dd era lo que la gente solía usar para este tipo de cosas, pero cat parece ser la herramienta preferida ahora. Supongo que es más fácil ya que no tiene que molestarse en especificar parámetros con nombre para los detalles de entrada / salida.

Respuestas:

14

Un archivo ISO es una imagen de sistema de archivos completa y formateada. Todo cato ddhace es hacer una copia bit a bit esa imagen del sistema de archivos de medios a sus destinatarios.

No hay magia detrás de escena. La preparación del sistema de archivos ISO se realizó de antemano (a menudo por una herramienta especializada). Todo lo que cathace es escribir esa colección de bytes. No interpreta .isoen absoluto, ni entiende que está tratando de crear un medio extraíble de arranque en absoluto.
Requiere el soporte adecuado del núcleo y el controlador del dispositivo para que el writes funcione en ese medio. Sigue un poco de "magia", ya que los medios ópticos grabables no funcionan exactamente de la misma manera que los discos duros convencionales. Pero esa magia no implica interpretar el contenido del archivo ISO.

Puede montar el .isoarchivo directamente sin grabarlo utilizando un montaje en bucle (si tal cosa está disponible en su sistema operativo). Del mismo modo, puede crear un archivo que contenga, por ejemplo, un ext4sistema de archivos, y podría cathacerlo en una partición.

Estera
fuente
1
y luego simplemente asegurarse de que los datos realmente han escrito para que la partición (en lugar de sólo tamponada)
yuyichao
La sincronización de @yuyichao debería cubrir eso, ¿verdad? Editar: Me acabo de dar cuenta de que respondí a un comentario de 6 años
Manchineel
5

Esto funciona porque la imagen iso se procesó con isohybrid, lo que instala un cargador de arranque syslinux normal en la imagen iso. Esto es posible porque iso9660 normalmente no utiliza los primeros sectores de la imagen, por lo que se puede colocar un cargador de arranque de disco duro más o menos normal. Cuando se graba en un disco óptico, se ignora y la BIOS inicia el disco utilizando el método de arranque convencional el torito cdrom. Cuando la imagen se coloca en una unidad flash, se carga el sector de arranque syslinux.

psusi
fuente