Quando o desenvolvimento apenas começa, muitas vezes não está claro quais pacotes irão para os rootfs de destino.
Em outras palavras, é muito cedo para pegar o LFS, buildroot ou yocto (ou qualquer outra coisa), mas você já precisa começar. Para os ricos (tenho 4 GB de eMMC em amostras piloto), existe uma saída para distribuir aos desenvolvedores uma distribuição que lhes permitirá entregar rapidamente algo que está faltando no momento, e então podemos sempre coletar listas de pacotes e criar uma lista para os rootfs alvo.
Este artigo não é novo e é uma instrução simples de copiar e colar.
O objetivo do artigo é construir rootfs Ubuntu para placas ARM (no meu caso, baseado em Colibri imx7d).
Construindo uma imagem
Montamos os rootfs alvo para replicação.
Descompactando o Ubuntu Base
Nós mesmos escolhemos o lançamento com base nas necessidades e em nossas próprias preferências. Aqui eu dei 20.
$ mkdir ubuntu20
$ cd ubuntu20
$ mkdir rootfs
$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04-base-armhf.tar.gz
$ tar xf ubuntu-base-20.04-base-armhf.tar.gz -C rootfs
Verificando o suporte BINFMT no kernel
Se você tem uma distribuição comum, então há suporte para BINFMT_MISC e tudo está configurado, caso contrário, tenho certeza que você sabe como habilitar o suporte BINFMT no kernel.
Certifique-se de que BINFMT_MISC esteja habilitado no kernel:
Arquivos e módulos de cabeçalho do kernel são um assunto separado. Claro, não instalaremos o bootloader, kernel, módulos, árvore de dispositivos via Ubuntu. Eles virão de fora ou nós mesmos os montaremos ou nos serão fornecidos pelo fabricante da placa, em qualquer caso isso está além do escopo desta instrução.
Até certo ponto, a divergência de versões é aceitável, mas é melhor retirá-las da compilação do kernel.
# apt install --yes linux-headers-generic
Vamos ver o que aconteceu e deu muito certo:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Não se esqueça de definir uma senha.
Empacotando a imagem
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Além disso, podemos instalar o etckeeper com a configuração autopush
Bem, digamos que distribuímos nossa montagem, o trabalho começou sobre a melhor forma de montar posteriormente diferentes versões de nosso sistema.
Podemos, é claro, criar ramificações no dispositivo com antecedência (digamos que criamos um script ou serviço que será executado na primeira vez que for iniciado).