Rodando contêineres e aplicações Linux x86 no Raspberry Pi

Antes que perguntem por que alguém quer rodar uma aplicação ou mesmo um sistema operacional x86 já em "desuso" em um RPI, já vou dando a resposta. A indústria.

[ Hits: 3.743 ]

Por: Carlos Affonso Henriques. em 12/08/2020


Introdução



Quem é do ramo de automação industrial sabe que existem uma infinidade de sistemas e aplicações proprietários legados, geralmente compostos por hardwares e softwares muito antigos. Quando ocorre a queima de um hardware dedicado geralmente é uma agonia. Os fabricantes das máquinas industriais quando dispõe do dispositivo cobram fortunas. Para terem uma ideia recentemente fiz um trabalho onde um simples PC industrial da Phoenix Contact com a solução para a máquina industrial custava em seu país de origem a bagatela de ? 13.000,00 (treze mil euros) fora frete e impostos de importação e nem vou mencionar que normalmente não dispõem desses dispositivos para pronta entrega e levam semanas e até meses para disponibilizá-lo.

Por que contêiner e não VM?

Cada caso é um caso e há situações em que é mais fácil ou até mesmo possível fazer com um ou com outro. Em automação industrial não há consensos nem padrões para nada com exceção do protocolo MODBUS e ainda assim há fabricantes que usam seus protocolos proprietários para assegurar a "fidelidade" dos clientes. Nesse artigo vou abordar o uso de contêiner Docker. O Contêiner apresenta a facilidade de contornar situações onde por exemplo não é possível fazer um Linux antigo rodar dispositivos de hardware novos, ou ainda como eu peguei uma vez todo o sistema raiz estava em um initrd com Squashfs, onde foi preciso fazer um unsquashfs do initrd para gerar a imagem e só havia um único driver de interface de rede compilado para um chipset específico e mesmo que eu conseguisse uma interface de rede com esse chipset ficaria impossibilitado de instalá-la no PC industrial pois sequer havia um slot PCI disponível.

Instalando o RaspOS ARM64 (Raspbian)

A imagem pode ser obtida nos servidores da Raspberry Foundation. Usei a versão 64bit por uma questão de compatibilidade pois podemos rodar tanto contêineres x86 quando 64. Segue o link para o diretório:
Não vou abordar a instalação do sistema operacional pois há farto material sobre o assunto.

Instalando os pacotes necessários

Logado como root, e conectado à internet proceda:

apt-get update -y

Em seguida:

apt-get install qemu qemu-user qemu-user-static -y

Somente com esses pacotes já é possível fazer um chroot de um sistema x86 no RPI.

Agora vamos à instalação do Docker.

Instalando a chave do repositório:

curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

Exatamente como acima, com hífen ao fim da linha.

Para ARM64:

echo 'deb [arch=arm64] https://download.docker.com/linux/debian buster stable' | tee /etc/apt/sources.list.d/docker.list

Para ARM32:

echo 'deb [arch=armhf] https://download.docker.com/linux/debian buster stable' | tee /etc/apt/sources.list.d/docker.list

apt-get update

apt-get install docker-ce

usermod -aG docker $USER

E finalmente:

systemctl restart docker.service

E verifique se o serviço subiu corretamente:

systemctl status docker.service

Para testar se o Docker está funcionando corretamente:

docker run hello-world

Testando com uma imagem i386:

docker pull i386/debian

Em seguida:

docker run -it --rm --name i386 --hostname i386 i386/debian

Considerações finais

Só ressaltando que o desempenho não é dos melhores, visto que não trata-se de virtualização e sim emulação. Nem todas as aplicações são possíveis ou viáveis rodando dessa forma.

Fontes:
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Docker - Combatento o COVID-19

Impedindo o compartilhamento de conexão

Gateway autenticado com Apache, Iptables e CGI em shell

Docker: Uma abordagem didática para tempos obscuros

Quando próximo, finja estar longe; quando longe, finja estar próximo

Leitura recomendada

Introdução e Utilização do Docker

Subindo o Zabbix e Grafana no Podman com Pod

Instalando Openshift Origin 3.11 com Ansible

Usando Docker para encapsular qualquer aplicação no GNU/Linux

Pods com Podman

  
Comentários
[1] Comentário enviado por maurixnovatrento em 12/08/2020 - 18:17h


Legal.

___________________________________
Conhecimento não se Leva para o Túmulo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts