Montar subconjunto específico de um dispositivo de bloco ou arquivo como FS sem um MBR / GPT

1

Como posso montar um intervalo de bloco específico a partir de um dispositivo de bloco (ou intervalo de bytes de um arquivo) ou, pelo menos, expô-lo como um dispositivo de loop sem carregar o MBR / GPT completo?

Eu tenho alguns casos de uso relevantes:

  • Dado um disco rígido com um MBR / GPT quebrado, eu quero montar uma partição cujos setores inicial / final são conhecidos (assim como o tamanho do bloco, é claro), mas dd 'ing it isn' t uma opção, devido ao tamanho da partição, por exemplo

  • Eu tenho uma imagem de backup de um disco inteiro (com tabela de partição) em um arquivo, eu quero montar uma partição específica dele sem expor todas as partições como dispositivos

  • Eu quero fazer alguma esteganografia imprudente, escondendo um FS em um dispositivo de bloco ou arquivo com compensações de início / fim para torná-lo menos óbvio (eu sei que não é uma boa opção devido aos mapeamentos de entropia e acesso, esse não é o ponto aqui)

O último caso de uso é mais um hack inspirado em casos de primeiro e segundo uso, que são problemas reais que encontrei.

Encontrei algumas perguntas relacionadas, como as seguintes:

Mas as respostas (válidas) para essas perguntas são frequentemente para dd particionar ou recriar o MBR, o que não é uma opção aqui.

    
por Preuk 07.11.2017 / 13:31

1 resposta

3

Há um comentário em esta pergunta já vinculada :

I found an answer which is using losetup with -o and --sizelimit options.

Também o moderno mount pode fazer isso. Sobre dispositivos de loop em man mount :

This type of mount knows about four options, namely loop, offset, sizelimit and encryption, that are really options to losetup.

A sintaxe é assim:

mount -o offset=OFFSET,other,options,here /image/file /mnt/foo

onde OFFSET está em bytes. Geralmente, o offset é conhecido em setores de 512 bytes. Se o setor de partida é, e. 2048 , então isso é útil:

mount -o offset=$((512*2048)),other,options,here /image/file /mnt/foo

Na prática, você quase nunca precisa de sizelimit com mount porque o sistema de arquivos que você monta conhece seu próprio tamanho.

    
por 07.11.2017 / 14:39