Labrador 64 bits - Criando uma imagem

De Caninos Loucos
Ir para navegação Ir para pesquisar

Nesta página você encontrará instruções de como obter o bootloader atualizado da Labrador 64-bits, compilar um novo Kernel Linux, montar uma distribuição Linux para sua placa e escrever seu sistema num cartão SD e na memória da placa. Para encontrar a versão mais atualizada dos softwares aqui citados, acesse nosso Github.

Para a versão 32 bits acesse a seguinte página: Labrador_32_bits_-_Criando_uma_imagem

Dependências

Para montar seu próprio sistema compatível com a Labrador serão necessários:

  • Um arquivo bootloader.bin e um arquivo logo.bmp
  • Os arquivos de Kernel para o seu sistema
  • Um sistema de arquivos rootfs arm64 do sistema operacional que deseja instalar.

Os dois primeiros podem ser encontrados no Github, o sistema de arquivo pode ser encontrado no site de diversas distribuições diferentes de linux. Você também pode utilizar o debootstrap para gerar seu próprio rootfs. Recomendamos o uso de sistemas de arquivo ext4 mas outros sistemas ext funcionarão também.

Criando sua imagem

Compilando o Kernel

Após baixar os últimos arquivos de Kernel do Github o Kernel Linux deve ser compilado conforme as instruções do arquivo README.md. Basta rodar o comando make na pasta linux-source. Qualquer dependência de pacotes do sistema será alertada pelo compilador. Outras dúvidas gerais podem ser encontradas no mesmo arquivo readme. Os arquivos de saída dessa compilação serão:

  • Uma pasta /lib
  • Um arquivo Image
  • Dois arquivos de extensão .dtb (caso nenhuma mudança tenha sido feita no processo descrito estes se chamarão v3emmc.dtb e v3sdc.dtb)

Criando um sistema bootável

Você pode baixar qualquer rootfs compatível com a arquitetura arm64 ou usar o debootstrap para criar seu próprio. Abaixo damos um exemplo de como utilizar o debootstrap para baixar uma versão do Debian buster, por enquanto prosseguiremos assumindo que o rootfs.img já está baixado.

Para iniciar o processo deve-se montar o arquivo rootfs, neste caso o montaremos no destino /media/mountpoint

$ mount -o rootfs.img /media/mountpoint

Após a montagem do sistema uma pasta boot deve ser criada no mesmo, e os arquivos de compilação e logo.bmp devem ser colocados nesta pasta, os comandos abaixo realizam essa tarefa:

$ mkdir /media/mountpoint/rootfs/boot 
$ cp -r /media/caninos/kernel/Image /media/mountpoint/rootfs/boot 
$ cp -r /media/caninos/kernel/v3emmc.dtb /media/mountpoint/rootfs/boot 
$ cp -r /media/caninos/kernel/v3sdc.dtb /media/mountpoint/rootfs/boot 
$ cp -r /media/caninos/kernel/logo.bmp /media/mountpoint/rootfs/boot

Após finalizar a pasta de boot o próximo passo é editar a pasta /lib/modules. Para isso é necessário remover a pasta original do rootfs e colocar a pasta gerada na compilação do Kernel.

$ sudo rm -r /media/mountpoint/rootfs/lib/modules 
$ sudo cp -r /media/caninos/kernel/lib/modules /media/mountpoint/ rootfs/lib/

Após este processo o sistema estará pronto para ser usado na Labrador, no entanto, ainda temos que criar um arquivo de configuração com as instruções de boot para a Labrador. Essas configurações serão feitas num arquivo config.json na pasta boot. Conforme seção Arquivo config.json

Exemplo do debootstrap

Para gerar um arquivo de sistema via debootsrap inicialmente ele deve ser instalado. Num sistema Debian isso pode ser feito com o comando

$sudo apt install debootstrap

Após isto, o comando criará um arquivo de sistema. Neste caso, um arquivo do Debian Buster, é possível substituir a versão para qualquer uma desejada.

$ sudo debootstrap --arch=arm64 --foreign buster <pasta_de_destino>

Arquivo config.json

O arquivo config.json deve ser criado na pasta boot do rootfs, basta criá-lo e preenchê-lo com os parâmetros necessários, conforme tabela abaixo.

Parâmetro Descrição Formato de entrada Padrão
”mode” Configura o modo de boot da imagem (Mais informação na seção Modos de Boot) Normal, Upgrade, Produce Normal
”default_boot_device” Configura a fonte primária do boot SDcard, Emmc Sdcard
”screen_resolution” Define a resolução e frequência do display [horizontal]x [vertical]x[freq] 1920x1080x60
”sdcard_dtb” Nome do arquivo dtb na pasta de boot referente ao cartão SD. *.dtb v3sdc.dtb
”emmc_dtb” Nome do arquivo dtb na pasta de boot referente à eMMC. *.dtb v3emmc.dtb
”kernel” Nome do arquivo de kernel na pasta de boot. * Image
”source” Caminho do arquivo de bootloader utilizado nos modos Upgrade e Produce (ignorada no modo Normal) *.bin bootloader.bin
”image” Caminho da imagem a ser gravada na eMMC no modo Produce (ignorada nos modos Normal e Upgrade) *.tar rootfs.tar
”label” Rótulo de partição do sistema de arquivos ext4 no modo Produce (ignorado nos modos Normal e Upgrade) * rootfs

Abaixo temos um exemplo para este arquivo, considerando o modo de boot Normal, boot através da eMMC, resolução de tela 1920x1080@60Hz. Como sdcard_dtb, emmc_dtb e kernel não são explicitados, seus valores padrão são utilizados automaticamente.

config.json: 
    {
    "mode": "normal",
    "default_boot_device": "emmc",
    "screen_resolution":
    "1920x1080x60"
    }

Salvando o sistema num cartão SD

Para utilizar um cartão SD no boot da labrador, o cartão deve ser formatado com os seguintes parâmetros:

  • Partição MBR (EFI não funcionará)
  • A primeira partição precisa ter offset de 1MB
  • Sistema de arquivo EXT4

Após formatar o cartão SD neste formato, basta copiar o sistema rootfs, é recomendado o uso da ferramenta rsync seguindo o comando abaixo:

$ rsync -r /media/mountpoint/rootfs /media/SDCARD/partition

Finalizado isto, basta copiar o arquivo bootloader.bin para o início do cartão SD não é no início da primeira partição, mas sim no offset deixado antes da mesma. Os parâmetros conv, seek e bs recomendados seguem abaixo.

$ sudo dd if=/src/bootloader.bin of=/dev/SDCARD conv=notrunc seek=1 bs=512

Modos de boot

No arquivo de configuração 3 modos de boot são possíveis: Normal, Upgrade e Produce.

Modo Normal

O modo Normal criará um cartão SD bootável, similar ao disponível na nossa seção de downloads. Para utilizar seu sistema no modo Normal o arquivo config.json disponibilizado nas seções anteriores é suficiente e não requer nenhuma mudança adicional. O sistema irá iniciar de acordo com o parâmetro "default_boot_device". Para pular esta escolha e iniciar o sistema estritamente do cartão SD o botão de recuberação da Labrador Coreboard deve ser pressionado.

Modo Upgrade

O modo Upgrade fará uma atualização do bootloader e do logo de início conforme arquivo indicado no parâmetro "source" do config. A maioria dos passos listados é desnecessário para este modo, portanto, para criá-lo é recomendado:
  • Formatar o cartão SD conforme instrução deste artigo.
  • Pular a instrução de cópia do sistema para a primeira partição.
  • Copiar o arquivo bootloader.bin para o início do cartão SD.
  • Criar uma pasta /boot vazia na primeira partição.
  • Copiar os arquivos logo.bmp e bootloader.bin para esta pasta.
  • Criar um arquivo config.json nesta pasta. (Parâmetros válidos deste modo são "mode", "source" e "screen_resolution").

Atenção: o bootloader transferido para a placa será o bootloader da basta boot, não o colocado no início do cartão SD.

Modo Produce

O modo Produce, além de substituir o bootloader como no Upgrade, substituirá também o sistema gravado na memória interna da labrador pelo sistema indicado no parâmetro "image". Para utilizar o modo produce uma imagem do sistema conforme gerada nas seções anteriores é necessária, esta deve estar no formato .tar. É possível criar esta imagem rodando os seguintes comandos após os passos de criação da imagem:

 $ export org=/media/mountpoint/rootfs
$ sudo tar cvfp rootfs.tar --format=ustar --exclude=lost+found --exclude=dev --exclude=proc --exclude=sys -C $org . 

Após gerar o sistema .tar os seguintes passos são recomendados para a criação de um cartão de modo Produce:

  • Formatar o cartão SD conforme instrução deste artigo.
  • Pular a instrução de cópia do sistema para a primeira partição.
  • Copiar o arquivo bootloader.bin para o início do cartão SD.
  • Criar uma pasta /boot vazia na primeira partição.
  • Copiar os arquivos logo.bmp, bootloader.bin e rootfs.tar para esta pasta.
  • Criar um arquivo config.json nesta pasta. (Parâmetros válidos deste modo são "mode", "source", "image", "label" e "screen_resolution").