Labrador 32 bits - Criando uma imagem

De Caninos Loucos
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 usar 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:

# debootstrap --arch=armhf --foreign buster 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/ buster main contrib non-free
deb-src http://ftp.br.debian.org/debian/ buster main contrib non-free

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

# buster-updates, previously known as 'volatile'
deb http://ftp.br.debian.org/debian/ buster-updates main contrib non-free
deb-src http://ftp.br.debian.org/debian/ buster-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

viii) demais ajustes

Você pode fazer outros ajustes aqui que julgar necessário. Os passos descritos até aqui são os mais essenciais para se ter uma versão mínima em modo texto.


ix) finalizando

# apt-get autoclean
# apt-get clean

Para sair do chroot:

# exit

Limpando:

# rm -f rootfs/root/.bash_history rootfs/usr/bin/qemu-arm-static
# cat /dev/null > rootfs/etc/resolv.conf

Salvando o sistema num cartão SD