Eu tenho um cartão SD usado para inicializar um Beaglebone Black. Eu estava tendo problemas para inicializar a partir da placa, era qualquer placa que eu criei e, finalmente, rastreei o problema até uma discordância no número de setores na partição de inicialização.
O que quero dizer é descartar o MBR dd
e verificar a primeira entrada da partição, o Number of sectors in partition
arquivo 0x40000
. Isso também é o que, por exemplo, os relatórios do GParted. Então, despejando a partição de inicialização FAT16, Large number of sectors
é apenas 0x3fff8
. Esta é uma diferença de 8, que também é o número de setores ocultos relatados pela partição (apesar de estar no deslocamento 2048). Mas por que? A ROM de inicialização parece estar apresentando um erro porque os dois números não coincidem, e eu não achei que setores ocultos fossem considerados na grande maioria dos casos, muito menos na determinação do número de setores. O que dá?
As estruturas de dados nos sistemas de arquivos não suportam necessariamente todos os valores possíveis de tamanhos. Freqüentemente, apenas múltiplos de determinados tamanhos são suportados. Portanto, quando o sistema de arquivos é criado em uma partição, o tamanho da partição é arredondado para o tamanho mais próximo que o sistema de arquivos suporta.
Contanto que o tamanho do sistema de arquivos não seja maior que a partição, isso não é um problema e não deve impedir a inicialização. (Se o sistema de arquivos for maior que a partição, alguns dados serão truncados no final e o sistema de arquivos ficará corrompido.)
Provavelmente algo mais está impedindo a inicialização, mas como você não incluiu nenhum erro real em sua pergunta, isso não pode ser resolvido.
Nos comentários, você menciona que a
-a
opção permitiu criar um sistema de arquivos que correspondesse exatamente ao tamanho. Sem esta opção, o padrão é alinhar as estruturas de dados do sistema de arquivos ao "tamanho do cluster". O tamanho do cluster (-s
) é o número de blocos por cluster, provavelmente com um padrão calculado com base no tamanho do disco.Um cartão SD típico usa um bloco de 2k, mas anuncia um bloco de 512 bytes. Seria de se esperar que o tamanho do cluster do sistema de arquivos fosse um múltiplo disso (múltiplo de
-s4
talvez). O desalinhamento ou um tamanho de cluster diferente pode forçar o cartão SD a dividir as gravações entre os limites dos blocos físicos, o que pode ter consequências devastadoras no desempenho (conforme mencionado na página de manual).No entanto, se o limite da sua partição já estiver desalinhado com esse limite de bloco, a
-a
opção pode acidentalmente permitir que o sistema de arquivos se realinhe de volta a ele, especialmente se a partição terminar no final do disco e houver alguns blocos restantes sem-a
.