Eu assumo que é verdade o que Bruce disse - que contém toda a tabela de partições. Então não há nada inutilizável nisso. Para o seguinte comando você precisa de util-linux
na versão 2.21 ou superior.
sudo losetup --find --show -P minix203.img
Isso deve anexar sua imagem a um dispositivo de loopback e mostrar a que dispositivo de loop a imagem está anexada (por exemplo, /dev/loop0
). Supondo que fdisk -l /dev/loop0
mostre a tabela de partições e os nomes de dispositivos para você montá-los. Então você vai acabar com algo como:
sudo mount /dev/loop0p1 -t minix /mnt/myminix
Deve funcionar. Observe que a opção loop
desapareceu, losetup
cuida dessa parte.
No entanto, se você não tiver o pacote util-linux
na versão correta, poderá fazer isso manualmente usando fdisk
e losetup
(ou melhor, instale o pacote a partir de uma fonte externa). Você só tem que fazer alguns cálculos nesse caso. A primeira coisa é anexar a imagem da unidade inteira:
sudo losetup --find --show part.img
Isso deve informar o nome do dispositivo - vamos supor que seja /dev/loop0
. Em seguida, experimente fdisk -l
para obter o layout da partição:
fdisk -l /dev/loop0
Para o meu arquivo, recebo uma saída assim:
Disk /dev/loop0: 67 MB, 67108864 bytes, 131072 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2645940b
Device Boot Start End Blocks Id System
/dev/loop0p1 2048 63487 30720 83 Linux
/dev/loop0p2 63488 131071 33792 83 Linux
Não seja enganado, estes podem não ser nomes de dispositivos existentes. Você terá que determinar qual partição você deseja montar usando esta tabela. Tamanho ou tipo de sistema de arquivos deve permitir que você faça algumas suposições.
Agora é hora do cálculo - você precisará de um deslocamento de sua partição e seu tamanho. Você obtém isso multiplicando tamanhos de setor por tamanho de unidade, para obter o resultado em bytes. Você pode ver que fdisk
me diz que meu tamanho de setor é de 512 bytes, portanto, se eu quiser montar /dev/loop0p1
, ele será iniciado em (2048 * 512) -th byte. Esse é o offset e é igual a 1048576 (no caso desse exemplo, é claro).
O tamanho em setores é end_sector_number - start_sector_number + 1
, porque esses números são inclusivos (o setor final está dentro desse tamanho). Aqui é igual a 61440 setores = = 31457280 bytes. Isso é o que precisávamos.
Você pode desanexar o dispositivo de loopback agora e reconectá-lo limitando suas restrições de tamanho à partição específica que deseja montar (substitua esses números por seus próprios):
sudo loopback -d /dev/loop0
sudo loopback -f --show -o 1048576 --sizelimit 31457280 part.img
Ele provavelmente irá anexá-lo a /dev/loop0
, que você pode agora montar com segurança:
mount -t minix /dev/loop0 /mnt/myminix
Isso deve ser quase totalmente operacional, exceto por coisas que normalmente afetariam o MBR de toda a unidade (como formatação com mkfs).
Como funciona?
A tabela de partições do MBR tem um layout simples - existem 512 bytes de descrição primeiro, onde as partições começam, onde terminam e depois vão os dados. Com partições estendidas, pode ser um pouco mais difícil. Você pode definir limites para sua partição manualmente e isso é o que o kernel faz por você por conta própria, para seus discos rígidos comuns.