Qual distribuição é melhor usar para sistemas embarcados. Esta questão é relevante hoje.
Existem três abordagens relevantes para resolver esse problema:- Use uma distribuição pronta para o seu computador de placa única (Armbian, Openwrt, etc.)
- Crie e configure sua distribuição usando sistemas de criação (Buildroot / Yocto, etc.).
- Use seu carregador de inicialização do pacote (u-boot) + kernel (kernel) + rootfs (busybox).
Se alguém mais souber, escreva nos comentários.
ATUALIZAÇÃOUm projeto OpenWRT é um sistema de construção (não é uma construção) e um projeto que fornece imagens montadas prontas para o seu quadro de destino.
Distribuições prontas
Acredito que usar uma distribuição pronta seja a maneira mais fácil. Você pode fazer o download da imagem final ou criar sua própria. A montagem da sua imagem do Braçadeira nem sempre é flexível, porque você não pode selecionar nenhuma versão do kernel do Linux, mas usa apenas as fornecidas.
A principal vantagem das distribuições prontas também deve ser respondida - sua estabilidade.
Para iniciantes, eu recomendaria essas distribuições.
O Armbian é uma distribuição Linux popular disponível para uma ampla variedade de dispositivos ARM: Orange Pi, Banana Pi, Odroid, etc ... É baseada no Ubuntu e / ou Debian.
www.armbian.com
O OpenWrt é um sistema operacional incorporado baseado no kernel do Linux e projetado principalmente para roteadores domésticos. Os principais componentes incluem o kernel do Linux, util-linux, uClibc ou musl e BusyBox. O tamanho de todos os componentes é otimizado devido ao fato de que a maioria dos roteadores domésticos possui uma quantidade muito limitada de memória.
Eu adicionaria por conta própria, adequado para placas com wi-fi a bordo (por exemplo, Orange Pi Zero).
openwrt.org
Sistemas de montagem
A principal vantagem dos sistemas de montagem é que você pode criar Linux mínimo e flexível para sistemas embarcados.
Buildroot
Buildroot é um sistema de construção de distribuição para sistemas embarcados. Ele suporta várias placas e o resultado de seu trabalho é o gerenciador de inicialização, o kernel e a imagem montados.
sistema de arquivos.
O que permite criar buildroot para o seu sistema:- imagem do sistema;
- Este sistema permite que você selecione a versão do kernel - qualquer.
- Você pode adicionar qualquer correção e instalar qualquer programa.
- configuração flexível de utilitários (por exemplo, busyBox, bash etc.)
Observe que todas as fontes adicionais são extraídas da rede.
Distinguindo essa montagem, por exemplo, da montagem Armbian:- a distribuição não é construída com base no (Debian ou Ubuntu), mas em um Linux flexível personalizado.
- tamanho mínimo de montagem.
- seleção de qualquer versão do kernel.
buildroot.org
3. Usando seu pacote configurável:Para isso, precisamos:
- Compilador cruzado (por exemplo, Linaro);
- Carregador de inicialização (por exemplo, inicialização em U);
- Kernel;
- RootFs (por exemplo, Busybox).
Então vamos lá.
Para coletarmos localmente em nossa máquina, precisamos de um compilador cruzado, por exemplo, linaro. O compilador cruzado ajudará na arquitetura x86 a montar nossa distribuição para a plataforma ARM de destino.
www.linaro.org
Em seguida, você precisa criar um gerenciador de inicialização.
Carregador de inicialização (U-Boot) - O carregador de inicialização mais popular para ARM, é o U-boot. A principal tarefa do gerenciador de inicialização é inicializar o kernel do Linux. Você também pode usar, por exemplo, barebox ou outro.
www.denx.de/wiki/U-Boot

Próximo. Precisamos construir o kernel, na saída precisamos obter a imagem do kernel e a árvore de dispositivos para nossa plataforma de destino.
www.kernel.org
RootFs é o sistema de arquivos raiz que o Kernel montará após a inicialização. Eu recomendo usar o Busybox.

busybox.net
Conclusão
Não estou dizendo que existem abordagens ruins ou boas. Cada um tem suas próprias vantagens e desvantagens. Depende da sua tarefa e de qual resultado você precisa obter.