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

15

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

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

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

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

Esteira
fonte
Eu nunca pensado para uso catno lugar de ddao fazer liveUSBs
Rob
3
Estava nas instruções para "Tails", a imagem ao vivo do Tor. Eu pesquisei um pouco (antes de perguntar aqui) e parece que dd era o que as pessoas costumavam usar para esse tipo de coisa, mas o gato parece ser a ferramenta preferida agora. Eu acho que é mais fácil, pois você não precisa se preocupar em especificar parâmetros nomeados para detalhes de entrada / saída.

Respostas:

14

Um arquivo ISO é uma imagem completa e formatada do sistema de arquivos. Tudo catou ddfaz é fazer uma cópia bit a bit dessa imagem do sistema de arquivos na mídia de destino.

Não há mágica acontecendo nos bastidores. A preparação do sistema de arquivos ISO foi feita previamente (geralmente por uma ferramenta especializada). Tudo o que catfaz é escrever essa coleção de bytes. Ele não interpreta .isonada, nem entende que está tentando criar uma mídia removível inicializável.
Requer suporte adequado do kernel e do driver de dispositivo para fazer writecom que eles funcionem nessa mídia. Um pouco de "mágica" acontece lá, pois a mídia óptica gravável não opera exatamente da mesma maneira que os discos rígidos convencionais. Mas essa mágica não envolve a interpretação do conteúdo do arquivo ISO.

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

Esteira
fonte
1
e depois simplesmente garantir que os dados realmente escrito para você partição (em vez de apenas tamponado)
yuyichao
A sincronização @yuyichao deve cobrir isso, certo? Edit: Acabei de perceber que respondi a um comentário de 6 anos #
Manchineel
5

Isso funciona porque a imagem iso foi processada com isohybrid, que instala um carregador de inicialização syslinux normal na imagem iso. Isso é possível porque o iso9660 normalmente não usa os primeiros 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 a bios inicializa o disco usando o método convencional de inicialização do CD-ROM. Quando a imagem é colocada em uma unidade flash, o setor de inicialização do syslinux é carregado.

psusi
fonte