É possível montar um disco virtual como uma unidade?

0

Estou construindo o Linux From Scratch. Projeto divertido. De qualquer forma, criei uma imagem de disco bruto de 60 gigabytes usando o dd e preenchai com / dev / zero.

Não consigo encontrar nada on-line sobre como montar a imagem como um disco real. Tudo o que li me diz que preciso montar cada partição individual e não o disco em si.

Existe uma maneira que eu poderia montar os 60 shows de espaço não particionado como um dispositivo? Muito como você veria um flash drive não formatado como sdb em vez de sdb1 etc.

Eu já experimentei variantes de: sudo mount -o loop disk /media/LFS

Eu sempre entendo isso:

The device '/dev/loop0' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
    
por KI4JGT 09.12.2016 / 09:48

1 resposta

1

Você não pode montar um disco ou partição sem ter um sistema de arquivos. Como o arquivo disk contém todos os zeros, não existe nenhum sistema de arquivos.

Primeiro, para criar um dispositivo de loop nessa chamada de arquivo

sudo losetup -f disk

que criará um dispositivo de loop para o arquivo 'disk'. Com sudo losetup , você obterá uma lista de dispositivos de loop; Observe o que está conectado com o seu disco. Eu assumo /dev/loop0 a partir de agora.

Próximo para criar um sistema de arquivos válido, você precisa chamar

sudo mkfs -t [type] /dev/loop0

em que [tipo] significa o tipo de sistema de arquivos, por exemplo ext4. Para mais opções, consulte man mkfs .

Agora você pode montar:

sudo mount /dev/loop0 /media/LFS

que deve então ser acessível como sistema de arquivos normal.

Para desconectar, você precisa desmontar ( sudo umount /media/LFS ) e desanexar o dispositivo de loop ( sudo losetup -d /dev/loop0 ). A partir daí, você pode montar o sistema de arquivos conforme tentou em sua pergunta (a montagem com o -o loop criará o dispositivo de loop para você).

E não, você não precisa ter o dispositivo particionado. E é claro que você pode montar um sistema de arquivos em uma pasta não vazia - mas você não poderá acessar o conteúdo anterior desta pasta antes de desmontar novamente.

Editar

Se você quiser que o arquivo de imagem funcione como discos particionados e seja reconhecido pelo kernel, você pode seguir a resposta dada em como formatar ... . Resumindo:

Particione a imagem: # fdisk disk , que executará o fdisk normalmente e você poderá criar partições.

Criar sistemas de arquivos: Como o mkfs não funciona com whole disks se eles são particionados (pode usar o disco bruto como um sistema de arquivos como mencionado acima), é melhor usar o dispositivo de loop com partprobe ou kpartx para informar o núcleo. A maneira mais simples é executar # sudo losetup -f -P disk , o que criará dispositivos de partição como, por exemplo, /dev/loop0p1 , /dev/loop0p2 etc. Estes podem então ser usados por mkfs .

Usar gparted : Como o gparted chama as ferramentas padrão como parted e mkfs , os pontos acima também são verdadeiros. Você pode chamar # sudo gparted disk e depois particionar o disco, mas não pode formatar essas partições, pois mkfs pede imagens distintas como disk1 , disk2 etc. Então você deve usar o dispositivo de loop com gparted também:

# sudo losetup --show -f -P disk
/dev/loop0
# sudo gparted /dev/loop0

(Eu usei --show aqui, então losetup mostrará qual dispositivo é criado). Agora você pode trabalhar com o gparted como de costume. As partições, quando criadas / formatadas, estarão disponíveis para outros aplicativos como gerenciadores de arquivos (talvez você tenha que emitir sudo partprobe /dev/loop0 para o kernel reconhecer as partições).

Eu não consegui obter o dispositivo de loop mostrado em gparted quando chamado sem passar diretamente o nome do dispositivo de loop, mesmo depois de emitir partprobe ou kpartx , por exemplo ao iniciar a partir do menu do sistema. Apenas mostra dispositivos / dev / sdx. Talvez alguém consiga resolver esse problema.

    
por ridgy 09.12.2016 / 10:44