Snappy Ubuntu Core na Beaglebone Black

- por Sergio Prado

Categorias: Beaglebone Black Tags: ,

No começo deste ano a Canonical lançou o Snappy Ubuntu Core, uma versão do Ubuntu focada em IoT.

snappy

 

Mas como assim, focado em IoT?

A principal idéia desta distribuição é isolar as aplicações, de forma que instalar ou remover uma aplicação não cause nenhum tipo de impacto no funcionamento de outras aplicações, além de garantir com que uma aplicação não comprometa o funcionamento de outras aplicações. Para isso, as aplicações rodam de forma isolada utilizando um módulo de segurança do kernel Linux chamado AppArmor.

Para implementar estas funcionalidades, o Snappy Ubuntu Core utiliza uma nova ferramenta de gerenciamento de pacotes chamada Snappy e um novo formato de empacotamento de aplicações chamado snap, ao invés do DPKG (e suas ferramentas relacionadas) e do antigo formato de empacotamento do Debian (*.deb).

Neste novo formato, as aplicações são empacotadas com todas as suas dependências, garantindo independência total entre elas. E as atualizações de aplicações são incrementais e transacionais. Incrementais porque, ao atualizar um pacote snap, não é necessário baixar todo o pacote, mas sim apenas a diferença entre as versões. E transacionais porque, durante uma atualização, é tudo ou nada. As atualizações são atômicas, e não existe o risco de deixar o ambiente em um estado inconsistente.

Mas onde tudo isso se encaixa no conceito de IoT? Bom, a promessa é conectar tudo à Internet. Neste sentido, será essencial gerenciar de forma efetiva e com segurança as atualizações de aplicações em dispositivos IoT para corrigir bugs e problemas de segurança. É aí que entra o Snappy Ubuntu Core! Além de dispositivos IoT, esta distribuição visa também prover uma plataforma para computação em nuvem.

Devido à segurança e à performance provida por este mecanismo de atualização incremental e atômico, fica fácil desenvolver sistemas que se atualizam automaticamente. E pelo fato das aplicações rodarem de forma isolada e independente, através do Snappy é possível criar um repositório de aplicações para estender o funcionamento do sistema, parecido com as soluções que temos em dispositivos móveis como o Google Play.

Já existem versões do Snappy Ubuntu Core para as plataformas de computação em nuvem da Microsoft (Azure), do Google (Google Cloud Platform) e da Amazon (Elastic Compute Cloud), além do suporte para servidores x86, virtualização (KVM, VirtualBox, etc) e dispositivos ARM como a Raspberry Pi 2 e a Beaglebone Black!

SNAPPY UBUNTU CORE NA BEAGLEBONE BLACK

A imagem do Snappy Ubuntu Core pode ser baixada conforme abaixo (no momento em que escrevo este artigo, está disponível a versão 15.04):

$ wget http://releases.ubuntu.com/15.04/ubuntu-15.04-snappy-armhf-bbb.img.xz

Depois basta descompactar a imagem e gravar do cartão SD (substitua sdX no comando abaixo pelo nome do arquivo de dispositivo do cartão SD):

$ xz -d ubuntu-15.04-snappy-armhf-bbb.img.xz
$ sudo dd if=ubuntu-15.04-snappy-armhf-bbb.img of=/dev/sdX bs=1M && sync

Para testar, você pode ligar um teclado e um monitor na Beaglebone Black, ou então conectá-la à console serial ou mesmo acessar por SSH. Faça o login com o usuário ‘ubuntu‘ e a senha ‘ubuntu‘.

Informações sobre a distribuição podem ser exibidas com o comando abaixo:

$ snappy info
release: ubuntu-core/15.04/stable
architecture: armhf
frameworks: webdm
apps:

É possível procurar por aplicações no repositório do Snappy Ubuntu Core através do parâmetro ‘search‘ (no momento em que escrevo este artigo, existem mais de 40 aplicações compatíveis com a Beaglebone Black):

$ snappy search
Name                     Version            Summary                          
mosquitto.kartben        1.4.2.201505120017 Mosquitto                        
pi2.canonical            0.16               pi2                              
beagleblack              1.12               beagleblack                      
pastebinit.mvo           1.4.0.0.2          pastebinit                       
say                      1.4                say                              
glowapi.vtuson           0.1.2              PiGlow RestAPi                   
4console.theregrunner    2015.8.28.0        4console        
...

Instalar uma aplicação é bem simples:

$ sudo snappy install hello-world

As aplicações instaladas podem ser listadas com o parâmetro list:

$ snappy list
Name        Date       Version     Developer    
ubuntu-core 2015-09-17 5           ubuntu       
hello-world 2015-10-03 1.0.18      canonical    
webdm       2015-09-17 0.9         canonical    
beagleblack 2015-09-17 1.12        canonical

Por padrão, o Snappy Ubuntu Core vem com a aplicação webdm instalada, que é basicamente uma interface web para instalar e desinstalar aplicações do repositório do Snappy Ubuntu Core.

image1

image2

Bacana, não? :)

DOCKER

O Docker é uma plataforma de gerenciamento de containers bem prática e fácil de usar. Com o Docker é possível criar e distribuir imagens inteiras de sistemas Linux, que podem ser executadas simultaneamente na mesma máquina!

Que tal então utilizar o Docker para rodar uma versão do Debian em cima do Snappy Ubuntu Core na Beaglebone Black? :)

O primeiro passo é instalar o Docker:

$ sudo snappy install docker

Ao procurar as imagens Docker disponíveis para a Beaglebone, encontrei uma imagem do Debian:

$ docker search beagle
NAME                                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
resin/beaglebone-node                    Node.js is a JavaScript-based platform for...   1                    
resin/beaglebone-debian                  The bare bones OS image for Beaglebone.         0                    
resin/beaglebone-python                  The Python buildpack image for Python apps...   0                    
resin/beaglebone-buildpack-deps          A collection of common build dependencies ...   0                    
strictlybusiness/beaglebone-black-iojs                                                   0                    
strictlybusiness/beaglebone-black-node                                                   0                    
nghiant2710/beaglebone-black-debian                                                      0

Então é só utilizar o Docker para instalar esta imagem:

$ docker pull resin/beaglebone-debian

E executar a imagem com o comando abaixo:

$ docker run -i -t resin/beaglebone-debian /bin/bash

Pronto, estamos dentro do Debian!

root@5057dc3f223b:/# cat /etc/issue
Debian GNU/Linux 8 \n \l

Esta idéia de isolar aplicações com o Snappy (ou mesmo sistemas inteiros através de containers) é bastante interessante, e pode ser estendida para outros dispositivos embarcados como set-top-boxes e roteadores. Com o aumento da capacidade do hardware e queda nos custos que vem acontecendo nos últimos anos (C.H.I.P. == $9!), o uso deste tipo de solução em sistemas embarcados pode se tornar uma tendência. Quem viver, verá!

Um abraço,

Sergio Prado

Faça um Comentário

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.