Labrador 32 bits - Criando uma imagem: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
| Linha 96: | Linha 96: | ||
Definiremos uma senha para esse usuário: | Definiremos uma senha para esse usuário: | ||
<pre># passwd caninos</pre> | <pre># passwd caninos</pre> | ||
=== viii) demais ajustes === | |||
Você pode fazer outros ajustes aqui que julgar necessário. Os passos descritos até são os mais essenciais para ter uma versão mínima em modo texto. | |||
=== ix) finalizando === | |||
<pre> | |||
# apt-get autoclean | |||
# apt-get clean | |||
</pre> | |||
Para sair do chroot: | |||
<pre># exit</pre> | |||
Limpando: | |||
<pre> | |||
# rm -f rootfs/root/.bash_history rootfs/usr/bin/qemu-arm-static | |||
# cat /dev/null > rootfs/etc/resolv.conf | |||
</pre> | |||
== Salvando o sistema num cartão SD == | == Salvando o sistema num cartão SD == | ||
Edição das 00h22min 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
viii) demais ajustes
Você pode fazer outros ajustes aqui que julgar necessário. Os passos descritos até são os mais essenciais para 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
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").