Como mover dados no armazenamento interno do linux embutido?

0

Estou trabalhando no desenvolvimento do dispositivo que trabalha no Linux incorporado. Ao trabalhar com novas versões de hardware, quando faço uma bagunça, tenho uma imagem que posso copiar usando o dd para o cartão SD, inicializá-lo e inseri-lo no armazenamento interno do eMMC.

Como a imagem do antigo HW está perdida, estou tentando criar uma nova imagem de backup e gostaria que ela fosse o menor possível, mas como o dd está fazendo bloco a bloco e não Não importa se há alguma coisa ou não no bloco que vai copiar de qualquer maneira, então eu preciso de um dispositivo completo copiado. O armazenamento interno é de cerca de 4 GB (ext4) e os arquivos são inferiores a 200 MB ...

Eu sei que posso usar dd if=/dev/source-device of=image | tar ... , mas eu prefiro fazer algo como dd if=/dev/source-device of=image bs=1M count=300 , mas para fazer isso eu tenho que ter certeza de que meus dados estão nos primeiros 300MB.

Isso me traz duas perguntas:

1) Como verificar se os dados estão nos primeiros 300MB de disco?

2) se os dados não estão lá como fazê-lo passar para o início do disco?

    
por mslo 08.03.2017 / 14:36

1 resposta

0

Não há uma maneira "mágica" de fazer o que você está tentando fazer.

Você precisa saber o tamanho exato dos dados significativos em sua imagem (se as ferramentas que você usa para criar a imagem não criarem um arquivo do tamanho da partição flash, você já deve saber disso) ou localize o fim disso de alguma forma. Como encontrar o fim depende dos dados da sua imagem e das ferramentas que você está usando para fazer isso.

Se as ferramentas que você está usando para instalar a imagem não estiverem gravando todos os blocos no dispositivo mmc , você poderá criar uma imagem "em branco" que tenha um padrão discernível, como texto ASCII / Unicode XX_BLANK_FIRMWARE_SECTION_XX\ndd repetido de novo e de novo.

Em seguida, você pode usar um utilitário para descobrir em que lugar da imagem atual essa sequência é iniciada, a partir da qual é possível descobrir o valor da contagem para atribuir hexdump . Não sei exatamente quais utilitários usar para essa finalidade, mas tenho certeza de que, com um bom uso de %code% ou similar, isso pode ser feito facilmente.

Você pode ter alguns bytes de diferença, mas seria melhor do que copiar o flash inteiro, se realmente quiser evitá-lo.

Pessoalmente, eu acabei de receber um cartão SD de 16GB que pode conter várias imagens.

    
por 08.03.2017 / 14:50