Construindo uma Distribuição Linux para central telefônica VoIP

Neste artigo iremos conhecer a placa que iremos utilizar para embarcar a central telefônica VoIP com Asterisk, e toda estrutura para gerar a Distribuição Linux utilizando Yocto Project.

 

 

Preparando o ambiente no Host

 

O Yocto Project suporta oficialmente as seguintes distribuições GNU/Linux como ambiente de construção:

  • Ubuntu
  • Fedora
  • OpenSUSE
  • CentOS
  • Debian

 

Para o correto funcionamento do ecossistema Yocto Project algumas ferramentas devem ser instaladas, mais detalhes acesse Required Packages for the Host Development System.

 

Ubuntu and Debian

 

Fedora

 

OpenSUSE

 

CentOS

 

Neste momento todas as dependências estão instaladas no Host para construir a Distribuição Linux para central telefônica VoIP com Yocto Project.

 

A versão do Yocto Project utilizada é a 2.1 referente ao branch krogoth, a mesma para as demais camadas e utilizada no manifesto.

 

 

O Hardware

 

A placa utilizada para embarcar a central telefônica VoIP é a combinação de um módulo SoM Colibri i.MX6 da Toradex com uma Placa Base IRIS, algumas características vide a seguir e a placa na Figura 1:

  • SoC: Freescale i.MX6 Solo (Single Core) ou DualLite (Dual Core);
  • CPU: ARM Cortex-A9 @ 800MHz ~ 1GHz;
  • GPU: Vivante 2D/3D GPUs;
  • Memória (SDRAM): 256 MB ou 512 MB;
  • Armazenamento: eMMC 4G flash ou microSD;
  • Interface de rede: 10/100 Ethernet;
  • Periféricos de comunicação: GPIO, SPI, I²C, I²S, UART.

 

Módulo Toradex Colibri i.MX6 com Placa Base IRIS
Figura 1 - Módulo Toradex Colibri i.MX6 com Placa Base IRIS

 

O módulo SoM pode ser substituído por uma Colibri i.MX7 ou Colibri VF61 e a Placa Base também poderia ser uma Viola, porém, com poucas alterações é possível portar a Distribuição Linux da central telefônica VoIP para Raspberry Pi, Beaglebone Black e a maioria das placas com BSP de suporte no Yocto Project, visto que o principal requisito de periférico é uma interface ethernet.

 

 

Baixando o manifesto do projeto

 

Para facilitar a descrição das dependências e requisitos da customização da Distribuição Linux, foi criado um arquivo de manifesto descrevendo cada camada e repositório que iremos precisar para gerar o projeto. Foi utilizada a ferramenta repo do Google para gerenciar os repositórios e branchs do projeto.

 

Instalando a ferramenta repo:

 

Utilizando o repo para baixar e sincronizar os repositórios e branchs, primeiro deve-se criar o diretório ippbx-yocto que irá conter a estrutura do projeto Yocto e todo processo para a construção da distribuição. Em seguida, utilizando a ferramenta repo, será clonado o repositório e realizada a sincronização.

 

Esta etapa pode demorar conforme a velocidade de sua internet.

 

Abaixo os links para o manifesto e a camada onde estão as personalizações:

 

Manifesto

 

Camada Yocto

 

 

Construindo a imagem

 

Neste momento, no diretório ippbx-yocto teremos outro diretório chamado poky-krogoth onde dentro do mesmo haverá as camadas que foram baixadas pelo repo. O próximo passo é criar o projeto.

 

Esta etapa foi automatizada informando ao repo para usar configurações do projeto copiando o local.conf e bblayers.conf da camada meta-b2open isso através do script setup-environment. Nesta camada também existem algumas adições de receitas que precisaram de correções ou adaptações para funcionar em nosso projeto, também é utilizado para suporte a Toradex Colibri i.MX6, a meta-fsl-arm e meta-fsl-arm-extra, e para o Asterisk e ferramentas VoIP será utilizada a meta-telephony.

 

Executando o comando como a seguir, será criado o projeto com o nome de build-ippbx. Com as camadas já configuradas, e o local.conf corretamente configurado, neste momento pode-se construir a imagem, usando a receita 'ippbx-image'.

 

Será feito o download de todas dependências de pacotes, ferramentas, bibliotecas, utilitários, e o processo de build de cada item. Esta etapa pode levar vários minutos e até horas, além do kernel, bootloader e no final a imagem será criada em build-ippbx/tmp/deploy/images/colibri-imx6.

 

 

Gravando a image e realizando boot

 

Nesta etapa deverá ter em mãos um cartão microSD. Insira o mesmo e olhe nos logs do 'dmesg' para confirmar o nome do device, algo como /dev/mmcblkX ou /dev/sdX. Em seguida, acesse build-ippbx/tmp/deploy/images/colibri-imx6/ippbx-image-colibri-imx6.sdcard.gz. Agora será feita a descompressão da imagem e na sequência a gravação para o microSD:

 

Ao término da gravação, insira o cartão na placa base IRIS. Antes de alimentar será necessário conectar um cabo serial na Placa Base IRIS, alimentar a placa, interromper o bootloader e dizer que o boot será através do microSD. Este procedimento está descrito em detalhes no artigo Toradex Colibri iMX6 e Yocto Project Fido (1.8) na sessão Primeiro boot.

 

Abaixo a demonstração da interrupção do bootloader e executando a partir do microSD com run sdboot[linha 20] e o boot completo.

 

Navegando pelo sistema e verificando o uso atual com o serviço Asterisk.

 

O sistema pode ser acessado via SSH, o IP da Central Telefônica para o artigo é 10.10.10.254 e o usuário root e senha em branco.

 

Até a próxima!

Outros artigos da série

<< Introdução ao Asterisk para central telefônica VoIPConfigurando Ramais e realizando ligações com a central telefônica VoIP >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Cleiton Bueno
Proprietário da B2Open onde oferecemos consultoria, treinamentos e desenvolvimento em Sistemas Embarcados. Entusiasta a filosofia open-source, mais de 10 anos de experiências em Linux e FOSS. Em sistemas embarcado do firmware baremetal ao Linux Embedded, e há aproximadamente 8 anos desenvolvendo em (C, Python, Qt e muito Shell Script), além de profiling, hardening e tuning para targets com Linux Embarcado. Graduado em Engenharia da Computação pela UNICEP com ênfase em robótica e sistemas embarcados.

3
Deixe um comentário

avatar
 
2 Comment threads
1 Thread replies
2 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
Cleiton BuenoMacielDaniel Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Maciel
Visitante
Maciel

Excelente material. Teria como você demonstrar como seria a instalação em um VPS Debian?
Abraço e parabéns!

Daniel
Visitante
Daniel

Passo a passo bem detalhado muito bom! Sem dúvida a redução é grande usando a telefonia voip. Um provedor que gostei foi http://www.voipdobrasil.com.br/ , mas vale a pena conferir bem antes.