Como criar o cartão SD de inicialização para o Banana Pi manualmente

5

Parece que tenho uma falta de compreensão de como o boot de imagens de cartão SD em dispositivos como o Banana Pi funciona. A situação é a seguinte.

Eu tenho um Banana Pi e um Banana Pro. Cada dispositivo tem uma imagem de alguma distribuição em um cartão SD conectado ao dispositivo (Banana Pro - > Arch Linux, Banana Pi - > Bananian). As imagens podem ser baixadas de aqui e aqui . Isso funciona bem.

Mas como o Banana Pi / Pro tem uma porta SATA, seria bom se o sistema raiz pudesse ser inicializado a partir de um disco rígido conectado. Como pode ser lido aqui isso pode ser conseguido simples.

Mas agora vem o papel com o qual estou lutando. Piscar um cartão SD de 4GB inteiro (ou até mesmo maiores) com a imagem de distribuição e usar apenas uma partição de 50MB parece um pouco desnecessário. Então eu tentei usar um cartão SD menor.

Eu criei uma partição com fdisk (tamanho de 50MB) e usei mkfs.vfat -F 16 /dev/sdXX para criar o sistema de arquivos na partição. Eu fiz isso FAT 16 por causa da saída parted ao examinar o arquivo de imagem.

.

Depoisdisso,monteiapartiãodaimagempara/tmp/bootcomsudomount-oloop,offset=1048576ArchLinux_For_BananaPro_v1412.img/tmp/boot.Ovalordodeslocamentoéovalorinicialnasaídadividida.

Copieiosarquivos(script.bin,uEnv.txt,uImage)paraapartiçãodomeucartãoSDealtereiocaminhodaraizemuEnv.txt.FizumasincronizaçãoedesmontouocartãoSD.

Tudoparecebem.MesmoquandocomparandoopartitonsdeinicializaçãoemumcartãoSDpiscoucomaimageminteiraemeucartãoSDcomapenasopartitondeinicialização,elessãoidênticos(deacordocomfdisk)

Mas o Banana Pi / Pro não inicializa com o cartão SD com apenas uma partição de inicialização, fornecendo os arquivos u-boot.

Alguém tem uma pista sobre esse comportamento?

ATUALIZAÇÃO:

Graças a @BananaFreak, reconheci meu erro. O bootloader estava de fato ausente, mas mesmo depois de seguir esse guia de lemaker , o BananaPro não inicializa. Uma coisa estranha na página wiki lemaker é a primeira frase dizendo:

Note: these instructions are for a Linux computer, not the Banana Pro/Pi!!

    
por IlikePepsi 22.05.2015 / 11:26

2 respostas

3

Acho que você perdeu o bootloader. O U-Boot deve estar presente no seu SD. Veja como o layout SD deve ser para o Banana Pi / Pro:

link

    
por 22.07.2015 / 17:58
0

Aqui está o meu relatório sobre os mergulhos mais profundos no processo de inicialização no BananaPro / Pi. A primeira coisa que você precisa é de um Conversor Serial TTL UART RS232 para fazer interface com o UART onboard.

Emseguida,vocêpodeabrirodispositivoserialparainvestigaroprocedimentodeinicialização(tenhacuidadoedeixeopinoVCCdoseuconversorTTL-UARTdesconectadodaplaca.Seoseuconversorusar5VTTLvocêpoderádanificaroBananaProaoconectaraVCCaele.)

Noterminal,tenhoumasaídaassim:

U-BootSPL2014.04-10733-gbb5691c(Dec182014-12:54:35)Board:BananaProDRAM:1024MiBCPU:960000000Hz,AXI/AHB/APB:3/2/2spl:notanuImageat1600U-Boot2014.04-10733-gbb5691c(Dec182014-12:54:35)AllwinnerTechnologyCPU:AllwinnerA20(SUN7I)Board:BananaProI2C:readyDRAM:1GiBMMC:SUNXISD/MMC:0***Warning-badCRC,usingdefaultenvironmentIn:serialOut:serialErr:serialNet:dwmac.1c50000Hitanykeytostopautoboot:0readinguEnv.txt354bytesreadin17ms(19.5KiB/s)LoadedenvironmentfromuEnv.txtRunninguenvcmd...reading/script.bin50564bytesreadin100ms(493.2KiB/s)reading/uImageErrorreadingcluster**Unabletoreadfile/uImage**##BootingkernelfromLegacyImageat48000000...ImageName:Linux-3.4.103ImageType:ARMLinuxKernelImage(uncompressed)DataSize:4822880Bytes=4.6MiBLoadAddress:40008000EntryPoint:40008000VerifyingChecksum...BadDataCRCERROR:can'tgetkernelimage!**Can'treadpartitiontableon0:0****Invalidpartition1**

Ébemprovávelquevocêsejaabandonadoemumtipodeambientedeshellfornecidopelou-bootapósumprocedimentodeinicializaçãocomfalha.Apartirdaí,vocêpodeusarferramentasdeinicializaçãopararealizaralgunsdiagnósticos.Aquiestáuma lista de comandos , embora seja possível que nem todos estejam disponíveis.

No meu caso, as últimas linhas do boot-output levaram à conclusão de que o u-boot é compilado de uma maneira que procura pela segunda partição e, eventualmente, constrói um CRC sobre alguns dados. Como meu objetivo era omitir a segunda partição, acho que a única solução é compilar um binário u-boot com as modificações necessárias.

    
por 28.07.2015 / 18:43