Labrador 32 bits - Criando uma imagem: mudanças entre as edições
Sem resumo de edição |
|||
| Linha 19: | Linha 19: | ||
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: | 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: | ||
<pre> | <pre>$ export PATH=$PATH:$HOME/labrador-uboot-32/toolchain/arm-linux-gnueabihf/bin</pre> | ||
$ export PATH=$PATH:$HOME/labrador-uboot-32/toolchain/arm-linux-gnueabihf/bin | |||
</pre> | |||
Ao final desse processo você terá: | Ao final desse processo você terá: | ||
| Linha 35: | Linha 33: | ||
Para gerar um sistema base Debian Stretch: | Para gerar um sistema base Debian Stretch: | ||
<pre> | <pre># mkdir debootstrap --arch=armhf --foreign stretch rootfs</pre> | ||
# mkdir debootstrap --arch=armhf --foreign stretch rootfs | |||
</pre> | |||
Alternativamente, para gerar um sistema base Ubuntu : | |||
<pre> | <pre># mkdir debootstrap --arch=armhf --foreign stretch rootfs</pre> | ||
# mkdir debootstrap --arch=armhf --foreign stretch rootfs | |||
</pre> | |||
=== ii) debootstrap segundo estágio === | === ii) debootstrap segundo estágio === | ||
| Linha 76: | Linha 70: | ||
=== v) definindo o hostname === | === v) definindo o hostname === | ||
<pre> | <pre># echo labrador > /etc/hostname</pre> | ||
# echo labrador > /etc/hostname | |||
</pre> | |||
=== vi) adiocionar o hostname ao hosts === | === vi) adiocionar o hostname ao hosts === | ||
| Linha 95: | Linha 87: | ||
</pre> | </pre> | ||
=== | === vii) criar um usuário e adicioná-lo ao grupo sudo === | ||
Criaremos um usuário chamado caninos: | |||
== | |||
<pre> | <pre> | ||
# useradd -m caninos | |||
# usermod -aG sudo caninos | |||
</pre> | </pre> | ||
Definiremos uma senha para esse usuário: | |||
<pre># passwd caninos</pre> | |||
== Salvando o sistema num cartão SD == | == Salvando o sistema num cartão SD == | ||
Edição das 00h17min de 17 de julho de 2020
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").