Qual é a diferença entre mount e mount -o loop

21

Eu tenho um arquivo iso chamado ubuntu.iso .

Eu posso mount com o comando: mount ubuntu.iso /mnt . Depois de montá-lo, posso vê-lo da saída do comando df -h : /dev/loop0 825M 825M 0 100% /mnt .

No entanto, se eu executar o comando mount -o loop ubuntu.iso /mnt , obtenho o mesmo resultado.

Como eu sei, o dispositivo de loop nos permite visitar o arquivo iso como um dispositivo, acho que é por isso que adicionamos a opção -o loop . Mas eu posso visitar meu arquivo iso mesmo se eu executar apenas mount ubuntu.iso /mnt .

Portanto, não consigo ver a diferença entre mount e mount -o loop .

    
por Yves 05.09.2018 / 09:19

3 respostas

34

Ambas as versões usam dispositivos de loop e produzem o mesmo resultado; a versão curta se baseia em “esperteza” adicionada a mount nos últimos anos. mount -o loop informa mount explicitamente para usar um dispositivo de loop; Ele deixa o próprio dispositivo de loop até mount , que procurará um dispositivo disponível, configurá-lo e usá-lo. (Você também pode especificar o dispositivo com , por exemplo, mount -o loop=/dev/loop1 .)

A esperteza é que, quando dado um arquivo para montar, mount automaticamente usará um dispositivo de loop para montá-lo quando necessário - ie , o sistema de arquivos não é especificado, ou libblkid determina que o sistema de arquivos é suportado apenas em dispositivos de bloco (e, portanto, um dispositivo de loop é necessário para converter o arquivo em um dispositivo de bloco).

A seção de dispositivo de loop da página mount man tem mais detalhes.

    
por 05.09.2018 / 09:29
8

O dispositivo loop é controlado principalmente com o comando losteup . Portanto, losetup -a fornece uma visão geral sobre os dispositivos de loop usados e arquivos anexados. O comando mount pode montar o dispositivo de bloco somente . O dispositivo de loop pode criar o dispositivo de bloco virtual a partir de um arquivo (dispositivo de caractere).

Na verdade, há uma grande diferença entre esses comandos porque nos sistemas Linux mais antigos o mount não pôde reconhecer o arquivo como o dispositivo correto a ser montado, mas durante o tempo em que o comando mount foi Completou com muito recurso, portanto, agora pode auto-decidir tentar chamar o comando losetup e montar o resultado. Mas se você tiver uma imagem de disco inteira, não é o formato iso, mas, por exemplo, com o MBR no início, o comando mount não pôde reconhecê-lo e você precisa encontrar a partição utilizável (por exemplo, com o comando parted disk_image.raw unit B print ) yoursef e montá-lo com a opção full mount como:

mount disk_image.raw /mntpoint/ -o loop,offset=${OFFSET_of_PARTITION}

Nesta sintaxe o dispositivo de loop não foi especificado e é assumido que o sistema escolhe o primeiro livre ( /dev/loop0 , /dev/loop1 etc) Entre os outros novos recursos do comando mount, você não precisa especificar o tipo de sistema de arquivos do dispositivo de bloco montado (no seu caso -t iso9660 ) se o suporte do sistema de arquivos foi instalado.

    
por 05.09.2018 / 10:39
6

Não há diferença entre mount ubuntu.iso /mnt e mount -o loop ubuntu.iso /mnt .

O primeiro é tratado de forma transparente como se você tivesse usado o segundo.

    
por 05.09.2018 / 09:28