Tenho um dispositivo Linux embarcado (não um Raspberry Pi) que tem duas partições em uma unidade eMMC. Usei uma ferramenta fornecida pelo fornecedor para copiar essas duas partições em uma unidade USB cujo tamanho é aproximadamente igual ao tamanho da unidade eMMC.
O que fiz em seguida foi montar a unidade USB em um computador Linux e usar ferramentas como e2fsck
e resize2fs -M
para redimensionar o segundo sistema de arquivos para um tamanho mínimo viável e, finalmente, gdisk
redimensionar a partição para corresponder.
Em todos os cálculos, tomei cuidado para garantir que a partição não ficasse menor que o sistema de arquivos, mesmo a ponto de tornar a partição um pouco maior e, então, resize2fs
aumentar o sistema de arquivos para corresponder a ela.
Após essas operações, tenho uma unidade USB de 16 GB com uma partição de inicialização de 118 MiB e uma partição de sistema de arquivos raiz de 3,1 GiB. Em seguida, costumava dd
ler dados diretamente da unidade USB, utilizando parâmetros bs=
e count=
para limitar a quantidade de dados lidos para estender apenas até onde a segunda partição termina, mais um setor extra para acomodar o "setor zero".
O resultado é que agora tenho um arquivo de imagem no qual as duas partições têm exatamente o tamanho de suas fontes correspondentes, mas quando uso a opção "Arquivo" -> "Propriedades" da ferramenta 7-Zip, ele afirma que o "Tamanho físico" (circulado em vermelho) é maior que essas partições e maior do que o que instruí dd
para copiar da fonte.
De onde vem esse valor de "Tamanho físico"? Ele faz parte da tabela de partição? Ou lê dd
do disco de alguma forma?
Existe alguma maneira de modificá-lo para me livrar do erro "Fim inesperado de dados"?
Sim.
Veja a tabela de partição GUID - Wikipedia
Sim.
Parece que as ferramentas padrão do Linux sabem como consertar um disco GPT truncado.
Criando test-short.img com o mesmo problema
Como resolver o problema
IIUC, você deixou um setor vazio no final do arquivo de imagem, que podemos usar para o "cabeçalho GPT secundário" (trailer?). Supondo que a tabela tenha as 128 entradas de partição usuais, você precisa adicionar outros 32 setores para elas, e então você pode consertar o problema.
Para confirmar que test-short.img foi corrigido
Quando um sistema de arquivos é criado, 5% é reservado para gravações feitas pelo root. Isso foi originalmente planejado para permitir a recuperação pelo sistema mesmo após processos de usuário runway.
Portanto, o "tamanho mínimo viável" não é viável para processos não raiz.
Como alternativa, crie uma partição de 4 GB, faça sua cópia e reduza o tamanho para um mínimo adequado.