Construa uma imagem “live USB stick” sem usar um stick

2

Estamos tentando criar um bastão de instalação personalizado para colocar o linux em nosso produto incorporado. Estamos querendo construí-lo do zero toda vez - ou seja, extrair os RPMs de um repositório (local).

Todos os mecanismos que usamos até hoje exigem que tenhamos um pendrive físico no sistema de compilação no momento da criação. Por diversas razões, isso é doloroso.

O que realmente gostaríamos de fazer é criar uma imagem (ou seja, um arquivo) que possa ser posteriormente copiada para um dispositivo físico (por exemplo, um dd para um dispositivo USB).

Nós brincamos de usar uma máquina virtual (Virtual Box) para falsificar coisas, mas não conseguimos descobrir como fazer um stick USB virtual aparecer lá.

Qual é uma boa maneira de criar uma imagem do bastão sem o bastão? É aceitável que, como um "toque final", alguns setores mágicos tenham que ser aproveitados - isso é algo que pode ser feito rapidamente em tempo de espera. Mas esperar por uma geração completa do sistema é muito longo para o nosso cenário.

[Se importa, estamos usando o FC 7 como nossa base - é estável e, mais importante, todos os nossos drivers trabalham com esse kernel]

    
por jhfrontz 09.12.2011 / 17:23

1 resposta

2

A maneira mais fácil é com um dispositivo de loopback. Faça um arquivo do tamanho do seu pendrive e, em seguida, use losetup para mapeá-lo para um dispositivo de loop. Então o dispositivo de loop é um dispositivo de bloco, então ele age exatamente como um pen drive faria.

A única exceção é o particionamento. Mas você pode consertar isso com mais algumas chamadas do losetup para mapear suas partições para outros dispositivos de loop com o parâmetro offset ( -o ). As coisas funcionam como tudo espera se você mapear o dispositivo completo para loop0, a primeira partição para loop1, a segunda para loop2, etc. Você sempre pode link simbolicamente loop0 para loop, então os nomes são exatamente como um dispositivo de bloco particionável seria são patches flutuando por dispositivos de loopback paráveis, então você pode nem precisar fazer isso).

    
por 09.12.2011 / 18:00