¿Cómo montar ISO y otros tipos de archivos de imagen en Linux?

Publicado: 2018-09-06

¿ Alguna vez ha necesitado comprobar el contenido de un archivo de imagen? Tal vez olvidaste qué versión de esa distribución de Linux era esa. Puede haber muchas razones para verificar dos veces una imagen, pero ¿cómo se hace sin quemarla? Averigüemos, no se requiere software adicional.

Todos los usuarios de Linux expertos en tecnología deben estar familiarizados con el comando de montaje . Es una parte muy importante de la administración general del sistema. Pero muchos no saben que el comando de montaje es en realidad mucho más poderoso de lo que parece a primera vista.

Montaje de archivos de imagen en Linux

Podemos montar rápida y fácilmente, no solo imágenes ISO, sino incluso imágenes de discos con particiones.

Rápidamente, aquí hay un ejemplo de montaje de un archivo ISO.

mount -o loop imagen_disco.iso /ruta/a/montar/dir

Aquí, el indicador -o es para pasar las opciones de montaje y, en este caso, le estamos diciendo al montaje que queremos montar la imagen usando un dispositivo de bucle invertido . Un dispositivo loopback es un concepto muy bueno desarrollado para asistir en el montaje de archivos de imagen. Un dispositivo de bucle invertido es un pseudodispositivo de software que actúa como intermediario y permite que el sistema trate el archivo como si fuera un dispositivo de bloque, como una unidad de CDROM, un disco duro, etc. Al hacerlo, tenemos mucha más flexibilidad al tratar con el archivo, como realizar funciones del sistema de archivos (que suponen que hay un dispositivo de bloque subyacente) .

Eso está muy bien, pero ¿quién usa ya ISO, verdad? Bueno, Mount también puede hacer mucho más. Si tiene un archivo de imagen de un disco duro (obtenido de dd o algo similar) , llamémoslo hdd.img, entonces también puede montar los sistemas de archivos dentro de él. Y si sospecha que necesitamos usar un dispositivo de bucle invertido nuevamente, está en el camino correcto.

Pero si pruebas esto...

mount -o loop hdd.img /ruta/a/montar/dir

no vas a tener mucha suerte.

Eso es porque la mayoría de los discos tienen tablas de partición. Los CD y DVD no suelen tener tablas de particiones porque no se adaptan a sus casos de uso. Cuando mount comienza a montar un volumen, espera encontrar un sistema de archivos, no una tabla de particiones.

Sin embargo, eso no significa que no se pueda hacer. Para montar el sistema de archivos, tenemos que decirle a mount dónde se encuentra dentro del archivo de imagen con una información pasada a las opciones de montaje. La información que requiere el montaje es el desplazamiento de la partición, es decir, la cantidad de bytes en el archivo de imagen donde comienza la partición. Hay varias formas de averiguarlo, pero fdisk hace el trabajo por usted.

fdisk -l hdd.img

Supongamos que fdisk nos dice que el sector inicial es 100 (esto es solo un ejemplo, es muy poco probable que esto sea correcto en su caso específico) . Lo que tenemos que hacer ahora es tomar ese número de sector y multiplicarlo por el tamaño del sector del HDD del que se tomó la imagen, esto será (muy probablemente) 512 bytes en unidades más antiguas y posiblemente 4096 (4K) en las más nuevas, pero siempre debe verificar esto al clonar unidades (tal vez ponerlo en el nombre del archivo por si acaso) . El tamaño del sector es el número de bytes por sector.

Iremos con un tamaño de sector de 512 bytes por simplicidad, y eso nos daría un desplazamiento de 51,200. Este desplazamiento es el número de bytes en la imagen donde comienza el sistema de archivos. Sabiendo esto, podemos decirle a mount exactamente dónde encontrar el sistema de archivos.

mount -o ro,loop,offset=51200 hdd.img /ruta/a/montar/dir

NOTA: También he agregado la opción ro en este ejemplo para mostrar cómo puede montar un sistema de archivos como de solo lectura. Esto es especialmente útil en aplicaciones forenses en las que no se puede alterar la integridad de los datos por cuestiones de seguridad o incluso legales. A menudo, se creará un archivo de imagen desde el disco usando un adaptador especial llamado bloqueador de escritura que literalmente bloquea todos los comandos de escritura y solo permite comandos de lectura.

Eso es mucho trabajo con las matemáticas y todo, pero debe haber una manera más fácil, ¿verdad? Eso depende de qué tan reciente sea la distribución de Linux que esté usando, pero cualquier cosa de los últimos cinco años no debería tener ningún problema.

La herramienta losetup es para configurar dispositivos de loopback. Quizás se pregunte por qué desea configurar un dispositivo de bucle invertido manualmente cuando el montaje se encarga de todo eso por usted. ¿Recuerdas que mount no quería montar toda la imagen del disco debido a esa molesta tabla de particiones? Bueno, dado que la tabla de particiones es lo que contiene todas las matemáticas sobre dónde se encuentran las particiones (donde fdisk obtiene toda su información) , sería mucho más fácil dejar que el sistema haga referencia a ella. Simplemente podemos crear un dispositivo de bucle invertido para toda la imagen del disco y luego decirle al sistema que busque particiones en el dispositivo de bucle invertido recién creado.

losetup -f hdd.img

NOTA: El indicador -f pasado a losetup simplemente le indica que cree un dispositivo de bucle invertido con un nombre que aún no se usa, como /dev/loop1 si /dev/loop0 ya está en uso . Alternativamente, puede pasar un nombre de dispositivo como /dev/loop0 , si ese dispositivo no existe, losetup lo creará, si lo hace, lo reasignará al archivo de imagen recién designado.

Si el comando tiene éxito, verá el dispositivo de bucle invertido recién creado en /dev/ . Ahora, puedes usar

partprobe /dev/loopback0

o

kpartx -u /dev/loopback0

si tiene instalado partprobe o kpartx , respectivamente. Sin embargo, parted debe instalarse en la mayoría de las distribuciones de Linux modernas.

Una vez hecho esto, debería ver algo como /dev/loop0p1 en /dev/ . Esta es su partición, que luego puede montar fácilmente.

montar /dev/loop0p1 /ruta/a/montar/dir

Como probablemente notará, no se requiere loopback. Eso es porque ya nos hemos ocupado de eso.

Sin embargo, podemos hacer esto aún más fácil agregando un solo indicador a losetup .

losetup -f -P hdd.img

El indicador -P que usamos en realidad le dice a losetup que haga que el kernel escanee la tabla de particiones, de modo que podamos pasar al montaje de la partición que queremos.

Usando lo anterior, puede montar una variedad de imágenes de disco. No importa si son de medios ópticos, llaves USB, partición MBR o GPT. El kernel de Linux puede manejar tantas tablas de particiones y sistemas de archivos diferentes que le resultará más difícil encontrar algo que no admita.

Claro, puede haber herramientas que hagan esto mucho más fácil, pero ¿dónde está la diversión en eso? He usado estas técnicas en recuperación de datos y administración general de sistemas y, como cualquier tipo de conocimiento, es extremadamente valioso cuando se necesita.

Háganos saber en los comentarios a continuación si tiene algún truco que complemente estos.

Lea también: