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

  • Chicken Little

    A aplicação fica instalada num sandbox, tipo Android? Se cada aplicação leva suas dependências, não ficam muitas libs redundantes e ocupando espaço desnecessariamente?

    • Grande Chicken Little!

      Sim, o esquema é bem parecido com o Android, as aplicações rodam enjauladas em um sandbox.

      E sim também, ficam muitas libs redundantes. E isso aumenta o consumo de disco e memória. Mas é uma troca feita para ter um controle e independencia maior entre as aplicações.

      Um abraço!

      • Chicken Little

        Entendi.. Obrigado pelo post informativo e pela rápida resposta!
        Abraço

  • Gabriel Zanetti

    Eu tentei instalar na minha beaglebone black, mas ao ligar ela na energia nada acontece, somente 3 leds ficam acessos constantemente

    • Nada no monitor? Alguma outra distribuição funciona com o monitor que você está usando para testar o Snappy Ubuntu Core? Alguma mensagem na console serial?

      • Gabriel Zanetti

        então, estou usando a tv como monitor, e nada aparece, testei uma imagen do android e do debian que tem no site oficial e ambas funcionaram, a dificuldade fica em tentar usar essa versão do ubuntu, e a versão console do ubuntu 14.04, ambos dão o mesmo problema, e não estou usando console serial

        • Estranho. Tentou gravar a imagem em outro SDCARD?

          Pode ser também alguma incompatibilidade do kernel utilizado nesta distro. Já testou em outro monitor?

          Se não conseguir, a melhor forma de depurar este problema é verificando as mensagens do kernel na console serial.

          • Gabriel Zanetti

            Então, testei em outro sd e nada, ai eu liguei o console serial e o erro que aparece é ** File not found /boot/uImage **

            U-Boot#.

          • Me parece que você tem um U-Boot antigo gravado na sua BBB. Tente fazer o boot pelo U-Boot gravado no sdcard. Para isso, ligue a placa com o botão próximo ao sdcard pressionado. Assim que os leds começarem a piscar, você pode soltar o botão.

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