Como montar ISOs e outros tipos de arquivos de imagem no Linux?

Publicados: 2018-09-06

Você já precisou verificar o conteúdo de um arquivo de imagem? Talvez você tenha esquecido qual era a versão dessa distribuição Linux. Pode haver muitas razões para verificar novamente uma imagem, mas como você faz isso sem queimá-la? Vamos descobrir, nenhum software extra é necessário.

Todo usuário Linux experiente em tecnologia deve estar familiarizado com o comando mount . É uma parte muito importante da administração geral do sistema. Mas, muitos não sabem que o comando mount é realmente muito mais poderoso do que parece à primeira vista.

Montando arquivos de imagem no Linux

Podemos montar de forma rápida e fácil, não apenas imagens ISO, mas até imagens de discos com partições.

Rapidamente, aqui está um exemplo de montagem de um arquivo ISO.

mount -o loop disk_image.iso /path/to/mount/dir

Aqui o sinalizador -o é para passar opções de montagem e, neste caso, estamos dizendo ao mount que queremos montar a imagem usando um dispositivo de loopback . Um dispositivo de loopback é um conceito muito bom desenvolvido para auxiliar na montagem de arquivos de imagem. Um dispositivo de loopback é um pseudodispositivo de software que atua como intermediário e permite que o sistema trate o arquivo como se fosse um dispositivo de bloco, como uma unidade de CDROM, disco rígido, etc. com o arquivo, como executar funções do sistema de arquivos (que pressupõem que há um dispositivo de bloco subjacente) .

Isso é muito legal, mas quem ainda usa ISOs, certo? Bem, o mount também pode fazer um pouco mais. Se você tiver um arquivo de imagem de um disco rígido (como obtido de dd ou algo semelhante) , vamos chamá-lo de hdd.img, então você também pode montar os sistemas de arquivos dentro dele. E se você suspeitar que precisamos usar um dispositivo de loopback novamente, você está no caminho certo.

Mas se você tentar isso…

mount -o loop hdd.img /path/to/mount/dir

você não vai ter muita sorte.

Isso porque a maioria dos discos tem tabelas de partição. CDs e DVDs normalmente não têm tabelas de partições porque não se adequam aos seus casos de uso. Quando mount começa a montar um volume, ele espera encontrar um sistema de arquivos, não uma tabela de partição.

Isso não significa que não pode ser feito, no entanto. Para montar o sistema de arquivos, temos que dizer ao mount onde ele está dentro do arquivo de imagem com uma informação passada nas opções de montagem. A informação que a montagem requer é o deslocamento da partição, ou seja, o número de bytes no arquivo de imagem onde a partição é iniciada . Existem várias maneiras de descobrir isso, mas o fdisk faz o trabalho para você.

fdisk -l hdd.img

Suponha que o fdisk nos diga que o setor inicial é 100 (este é apenas um exemplo, é altamente improvável que isso esteja correto no seu caso específico) . O que temos que fazer agora é pegar esse número de setor e multiplicá-lo pelo tamanho do setor do HDD do qual a imagem foi tirada, isso (provavelmente) será de 512 bytes em unidades mais antigas e possivelmente 4096 (4K) em unidades mais recentes, mas você deve sempre verificar isso ao clonar unidades (talvez coloque-o no nome do arquivo para uma boa medida) . O tamanho do setor é o número de bytes por setor.

Usaremos um tamanho de setor de 512 bytes para simplificar, e isso nos daria um deslocamento de 51.200. Este deslocamento é o número de bytes na imagem onde o sistema de arquivos é iniciado. Sabendo disso, podemos dizer ao mount exatamente onde encontrar o sistema de arquivos.

mount -o ro,loop,offset=51200 hdd.img /path/to/mount/dir

NOTA: Eu adicionei a opção ro neste exemplo também para mostrar como você pode montar um sistema de arquivos como somente leitura. Isso é especialmente útil em aplicativos forenses em que você não pode perturbar a integridade dos dados por questões de segurança ou mesmo legais. Frequentemente, um arquivo de imagem será criado a partir do disco usando um adaptador especial chamado bloqueador de gravação que literalmente bloqueia todos os comandos de gravação e permite apenas comandos de leitura.

Isso é muito trabalho com matemática e tudo, mas deve haver uma maneira mais fácil, certo? Isso depende de quão recente de uma distribuição Linux você está usando, mas qualquer coisa dos últimos cinco anos ou mais não deve ter nenhum problema.

A ferramenta losetup serve para configurar dispositivos de loopback. Você pode se perguntar por que deseja configurar um dispositivo de loopback manualmente quando o mount cuida de tudo isso para você. Lembre-se de como o mount não queria montar toda a imagem do disco por causa daquela tabela de partição irritante? Bem, dado que a tabela de partição é o que contém toda a matemática sobre onde as partições estão localizadas (onde o fdisk obtém todas as informações) , seria muito mais fácil deixar o sistema referenciá-lo. Podemos simplesmente criar um dispositivo de loopback para toda a imagem do disco e, em seguida, dizer ao sistema para procurar partições no dispositivo de loopback recém-criado.

losetup -f hdd.img

NOTA: O sinalizador -f passado para o losetup está simplesmente dizendo a ele para criar um dispositivo de loopback com um nome ainda não usado, como /dev/loop1 se /dev/loop0 já estiver em uso . Alternativamente, você pode passar um nome de dispositivo como /dev/loop0 , se esse dispositivo não existir, o losetup o criará, se existir, ele o reatribuirá ao arquivo de imagem recém-nomeado.

Se o comando for bem-sucedido, você verá o dispositivo de loopback recém-criado em /dev/ . Agora, você pode usar

partprobe /dev/loopback0

ou

kpartx -u /dev/loopback0

se você tiver o partprobe ou o kpartx instalado, respectivamente. No entanto, o parted deve ser instalado na maioria das distribuições Linux modernas.

Feito isso, você deverá ver algo como /dev/loop0p1 em /dev/ . Esta é a sua partição, que você pode montar facilmente.

montar /dev/loop0p1 /caminho/para/montar/dir

Como você provavelmente notará, não é necessário nenhum loopback. Isso porque nós já cuidamos disso.

Podemos tornar isso ainda mais fácil, adicionando um único sinalizador ao losetup .

losetup -f -P hdd.img

O sinalizador -P que usamos na verdade diz ao losetup para que o kernel verifique a tabela de partições, para que possamos pular para a montagem da partição que queremos.

Usando o acima, você pode montar uma variedade de imagens de disco. Não importa se são de mídia óptica, chaves USB, particionamento MBR ou GPT. O kernel do Linux pode lidar com tantas tabelas de partições e sistemas de arquivos diferentes, que você terá dificuldade em encontrar algo que ele não suporte.

Claro, pode haver ferramentas que tornam isso muito mais fácil, mas onde está a diversão nisso? Já utilizei essas técnicas em recuperação de dados e administração geral de sistemas e como qualquer tipo de conhecimento, é extremamente valioso quando necessário.

Deixe-nos saber nos comentários abaixo se você tem algum truque que complementaria esses.

Leia também: