não pode montar o arquivo .img - erro "não um diretório"

1

Eu tento executar o seguinte comando em um sistema 12.04 do Ubuntu:

sudo mount minix203.img -o loop -t minix /mnt/myminix/

para montar um arquivo .img com a partição minix; e obtenha o seguinte erro:

mount: Not a directory

o que há de errado com meu comando?

    
por infoholic_anonymous 15.04.2013 / 02:30

3 respostas

1

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.

    
por 15.04.2013 / 03:20
0

Essa é uma versão bem antiga do Minix.

Há uma página dos Grupos do Google que tem sua resposta em isto. Citando a partir dessa artilce:

In minix203.img there is a entire hd image including partition table. What mount finds at the beginning isn't the first partition but partition table. And so mounting fails.

Acredito que a mesma coisa vale para as novas imagens ISO Minix 3 também. Há um pequeno sistema de arquivos Joliet e um sistema de arquivos Minix maior que o instalador conhece. Então você não pode simplesmente montar a imagem ISO (loopback) e ver as coisas.

    
por 15.04.2013 / 03:03
0

Esta resposta pode não ser imediatamente relevante, mas eu a encontrei durante um chroot rescue .

Minhas circunstâncias:
Eu instalei o Windows após o Ubuntu no meu computador e meu gerenciador de inicialização (grub) foi corrompido e o os-prober não pôde ver as imagens do Ubuntu no sistema.

Aqui está o que eu fiz:

1) Inicializado usando um Live CD do Ubuntu.

2) A partir do gerenciador de discos descobri a localização dos meus volumes:
   root - / dev / sda6
boot - / dev / sda8

3) Criei um diretório temporário / tmp / mydir e executei os seguintes comandos como root.

   mount /dev/sda6 /tmp/mydir
   mount --bind /proc /tmp/mydir/proc
   mount --bind /sys /tmp/mydir/sys
   mount --bind /dev /tmp/mydir/dev
   mount --bind /dev/pts /tmp/mydir/dev/pts

Por último, eu queria vincular o dispositivo de inicialização, por exemplo / dev / sda8, à pasta / tmp / mydir / boot e depois tive o problema.

   mount --bind /dev/sda8 /tmp/mydir/boot

e recebi o erro abaixo:

   mount : not a directory

Inicialmente, fiquei um pouco confuso com este e o Artigo do GitHub ajudou-me a resolvê-lo. O problema ocorreu quando tentei montar o dispositivo (aqui / dev / sda8) em um dispositivo já montado (aqui / dev / sda6). Simplificando, você não pode fazer isso porque a opção --bind espera um diretório e não um dispositivo de bloco como / dev / sda8 como entrada.

Agora, a boa notícia! Existe uma solução alternativa. Eu montei o volume de inicialização para outro diretório em / tmp e, em seguida, liguei este diretório para / tmp / mydir / boot.

    mount /dev/sda8 /tmp/booty
    mount --bind /tmp/booty /tmp/mydir/boot

Isso resolveu o erro mount : not a directory .

4) Eu fiz um chroot rescue para resolver o meu problema final.

    
por 05.06.2015 / 04:32