Eu quero criar um único arquivo de imagem para ser gravado em um cartão de memória como o SD usando uma ferramenta como o Win32DiskImager. O objetivo é que, uma vez que a imagem tenha sido escrita, haverá pelo menos duas partições no cartão. No meu caso, eles seriam uma partição de boot no formato VFAT e um rootfs Linux incorporado no formato ext3, mas eles poderiam ser qualquer coisa, e poderia haver mais de dois deles. Outro requisito é que todo o processo de criação da imagem precisa ser implementado como um script Linux que não requer interação com o usuário. Pode-se supor que o conteúdo dos sistemas de arquivos já exista de alguma forma.
Eu já tenho um script que faz o que eu quero usando o dd para criar um arquivo de imagem, o sfdisk para particioná-lo e o losetup para montar as partições.
A questão que não tenho uma resposta até agora está relacionada à geometria do disco. O script que tenho funciona para mim e para os cartões de memória que tenho, mas o sfdisk (compreensivelmente) continua reclamando sobre como ele não consegue detectar a geometria do meu arquivo de imagem. Outro desafio com o sfdisk é que, em algum momento de seu desenvolvimento, o suporte para definir a geometria no formato cilindros-cabeças-setores foi removido.
Tanto quanto eu sei, não haveria necessidade de saber sobre a geometria se eu fizesse o particionamento diretamente em cada cartão de memória.
Como devo definir a geometria? Ou precisa ser definido de alguma forma? É possível até mesmo criar uma imagem universal sem saber nada sobre o cartão de memória em que será gravada, exigindo apenas que a placa seja grande o suficiente para a imagem? Ou estou usando apenas ferramentas erradas para isso? Quais seriam as ferramentas corretas e a maneira correta de fazer isso?
Até mesmo dicas sobre direção seriam bem-vindas se não houvesse uma solução completa que fosse facilmente descrita.