Como / Por que o gato grava um ISO inicializável em um dispositivo

15

Descobri recentemente que posso criar uma chave USB inicializável a partir de um arquivo ISO usando simplesmente cat (ou dd ).

Não consigo encontrar informações sobre como isso funciona. Por que:

cat my.iso > /dev/sdb && sync

pega esse arquivo e grava todos os arquivos que ele contém, em formato inicializável, em um dispositivo?

    
por Mat 13.02.2012 / 13:42

2 respostas

14

Um arquivo ISO é uma imagem completa e formatada do sistema de arquivos. Todo cat ou dd faz uma cópia bit a bit da imagem do sistema de arquivos para sua mídia de destino.

Não há mágica acontecendo nos bastidores. A preparação do sistema de arquivos ISO foi feita de antemão (geralmente por uma ferramenta especializada). Tudo que o cat faz é gravar essa coleção de bytes. Ele não interpreta o .iso , nem entende que ele está tentando criar uma mídia removível inicializável.
Ele exige suporte adequado do kernel e do driver de dispositivo para que o write s funcione nessa mídia. Um pouco de "mágica" acontece lá, já que as mídias ópticas graváveis não funcionam exatamente da mesma maneira que os discos rígidos convencionais. Mas essa mágica não envolve interpretar o conteúdo do arquivo ISO.

Você pode montar o arquivo .iso diretamente sem gravá-lo usando uma montagem de loop (se isso estiver disponível no seu sistema operacional). Da mesma forma, você pode criar um arquivo que contenha, por exemplo, um sistema de arquivos ext4 , e você pode usar cat para uma partição.

    
por 13.02.2012 / 14:04
4

Isso funciona porque a imagem iso foi processada com isohybrid , que instala um carregador de inicialização normal do syslinux na imagem iso. Isso é possível porque o iso9660 normalmente não usa os primeiros poucos setores da imagem, portanto, um carregador de inicialização de disco rígido mais ou menos normal pode ser colocado lá. Quando gravado em um disco óptico, ele é ignorado e o BIOS inicializa o disco usando o método convencional de inicialização de cdrom el torito. Quando a imagem é colocada em uma unidade flash, o setor de inicialização do syslinux é carregado.

    
por 13.02.2012 / 17:39

Tags