Labrador 32 bits - Criando uma imagem

De Caninos Loucos
Revisão de 00h17min de 17 de julho de 2020 por Glhrm (discussão | contribs)
Ir para navegação Ir para pesquisar

Nesta página você encontrará instruções de como criar uma imagem mínima para Labrador 32 bits. Esse processo compreende compilar o bootloader, o Kernel Linux e gerar um sistema de arquivos de uma distribuição GNU/Linux Debian-like. Compreende também os passos para escrever essa imagem em um cartão SD.

Para encontrar a versão mais atualizada dos softwares aqui citados, acesse nosso Github.

Para a versão 64 bits acesse a seguinte página: Labrador_64_bits_-_Criando_uma_imagem

Pré-requesitos

Bootloader

O primeiro passo é obter o bootloader. É possível usar um binário pré-compilado ou compilá-lo a partir do código-fonte, seguindo as instruções da página do github/labrador-uboot-32.

Ao final desse processo você terá um arquivo u-boot-dtb.img ou u-boot-dtb-no-UART3-console.img.

Obs.: Se você quer ter a UART3 (/dev/ttyS3) ativada para console de debug, que é o recomendado para a maior parte dos casos, use o u-boot-dtb.img. Caso você tenha intenção de usar o UART3 para alguma outra finalidade, use o u-boot-dtb-no-UART3-console.img.

Kernel Linux

Para obter o kernel, acesse github/labrador-linux. Novamente aqui você tem a opção de usar binários pré-compilados ou compilá-los a partir do código-fonte, conforme as instruções do arquivo README.md.

Obs.: Se você está fazendo compilação cruzada do kernel, é possível usar o arm-linux-gnueabihf-gcc disponível no repositório do bootloader. Nesse caso adicione o caminho para o compilador ao PATH. Por exemplo, se você fez o clone do u-boot em $HOME:

$ export PATH=$PATH:$HOME/labrador-uboot-32/toolchain/arm-linux-gnueabihf/bin

Ao final desse processo você terá:

  • kernel.dtb
  • uImage
  • lib/modules

Sistema de Arquivos

Você pode baixar qualquer rootfs compatível com a arquitetura arm. Nesse procedimento descreveremos o processo para criação de um rootfs usando o debootstrap.

i) debootstrap primeiro estágio

Para gerar um sistema base Debian Stretch:

# mkdir  debootstrap --arch=armhf --foreign stretch rootfs

Alternativamente, para gerar um sistema base Ubuntu :

# mkdir  debootstrap --arch=armhf --foreign stretch rootfs

ii) debootstrap segundo estágio

# cp /usr/bin/qemu-arm-static rootfs/usr/bin
# cp /etc/resolv.conf rootfs/etc
# chroot rootfs
# export LANG=C
# /debootstrap/debootstrap --second-stage

iii) configurando o repositório de pacotes

# cat << EOT > /etc/apt/sources.list
deb http://ftp.br.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.br.debian.org/debian/ stretch main contrib non-free

deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

# stretch-updates, previously known as 'volatile'
deb http://ftp.br.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.br.debian.org/debian/ stretch-updates main contrib non-free
EOT

iv) instalando pacotes adicionais

# apt-get update
# apt-get upgrade
# apt-get install sudo

v) definindo o hostname

# echo labrador > /etc/hostname

vi) adiocionar o hostname ao hosts

Você deve adicionar o nome definido no passo anterior (hostname) ao arquivo /etc/hosts, da seguinte forma:

127.0.1.1 labrador

Ao final seu arquivo /etc/hosts deve se parecer com esse:

# cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       labrador
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

vii) criar um usuário e adicioná-lo ao grupo sudo

Criaremos um usuário chamado caninos:

# useradd -m caninos
# usermod -aG sudo caninos

Definiremos uma senha para esse usuário:

# passwd caninos

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").