25
OpenDomo en Raspberry Pi David Sánchez Herrero David Sánchez Herrero Administración de Redes y Sistemas Operativos Administración de Redes y Sistemas Operativos en Entornos de Software Libre en Entornos de Software Libre

OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

David Sánchez HerreroDavid Sánchez Herrero

Administración de Redes y Sistemas Operativos Administración de Redes y Sistemas Operativos en Entornos de Software Libreen Entornos de Software Libre

Page 2: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● OpenDomo es un sistema embebido libre desarrollado por la empresa OpenDomo Services S.L., basado en GNU/Linux, y diseñado principalmente para el control de instalaciones domóticas.

● Este proyecto tiene como propósito portar el sistema OpenDomo, que corre actualmente sobre un dispositivo empotrado con arquitectura x86 llamado ODNetwork, para su ejecución sobre el dispositivo Raspberry Pi, con arquitectura ARM.

Page 3: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● Dispositivos

ODNetwork (x86) Raspberry Pi (ARM)

Page 4: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● El dispositivo Raspberry Pi es una placa computadora de bajo coste, del tamaño de una tarjeta de crédito, que contiene todos los dispositivos y conexiones típicas de un PC convencional.

Page 5: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● Especificaciones:

Page 6: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● Ha sido desarrollada por la Fundación Raspberry Pi, que es una asociación caritativa registrada en la Comisión de Caridad de Inglaterra y Gales, cuyo objetivo es promover el estudio de las ciencias de la computación y temas relacionados, sobre todo a nivel escolar.

Page 7: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● El sistema OpenDomo se construye desde cero, compilando las fuentes de todos sus componentes.

● Para facilitar el proceso de construcción, se utiliza una herramienta llamada Buildroot, que configura, compila y agrupa todos los componentes necesarios en un sistema GNU/Linux embebido.

Page 8: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● También es capaz de generar imágenes de cargadores de arranque y, en caso de realizar una compilación cruzada como será el caso de este proyecto, puede generar una cadena de herramientas de compilación cruzada (cross-compiling toolchain).

● Una cadena de herramientas de compilación cruzada se compone de compiladores, enlazadores, etc., que se ejecutan sobre una arquitectura A, para generar código binario de una arquitectura B.

Page 9: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● La salida generada por Buildroot, se compone principalmente de una imagen binaria del kernel Linux, y un sistema de ficheros raíz (root filesystem), ambos construidos según la configuración establecida.

Page 10: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● Para generar los sistemas GNU/Linux embebidos, Buildroot se apoya en tres herramientas principales.

● La librería uClibc, la herramienta Busybox, y por supuesto, el kernel Linux.

Page 11: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● La librería uClibc es una versión reducida de la librería estándar de C (glibc), diseñada para ser utilizada en sistemas Linux embebidos, y protegida bajo licencia LGPL.

● Es mucho más pequeña que glibc, debido a que glibc está preparada para implementar todos los estándares de C a través de una amplia gama de plataformas hardware, mientras que uClibc se especializa en sistemas embebidos.

Page 12: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● Busybox es una herramienta que combina versiones simplificadas de muchas utilidades típicas en los sistemas UNIX en un único ejecutable de pequeño tamaño. Gracias a su reducido tamaño, es posible obtener un entorno de trabajo completo para cualquier sistema embebido.

● Ha sido desarrollado bajo licencia GPLv2, centrándose principalmente en la optimización de tamaño y el consumo de recursos.

Page 13: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● Linux es un núcleo libre de sistema operativo basado en Unix, licenciado bajo GPLv2, y desarrollado por colaboradores de todo el mundo, entre los que se encuentran desde particulares hasta empresas.

● Gracias a que desde sus inicios se diseñó para ser un núcleo portable, actualmente es uno de los núcleos más ampliamente portados, siendo capaz de funcionar sobre dispositivos muy diversos.

Page 14: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● Todas estas herramientas se configuran por separado mediante interfaces Ncurses, que generan ficheros de texto con la configuración para su compilación.

Page 15: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● En el fichero de configuración de Buildroot se especifican los ficheros a utilizar en la compilación del resto de herramientas.

Page 16: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● OpenDomo SDK (Software Development Kit) es un entorno de desarrollo pensado para facilitar las tareas de desarrollo del sistema OpenDomo.

● Se basa en un conjunto de shell scripts que automatizan las principales etapas del proceso de creación del sistema y sus componentes.

Page 17: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● Entre otras cosas, actúa como un frontend de BuildRoot, descargándolo en interaccionando con el mismo, proporcionándole los parámetros y la configuración de entrada, y procesando posteriormente su salida.

● El root filesystem generado por Buildroot es modificado, eliminando todos los componentes no necesarios e incorporando los componentes y configuraciones específicos del sistema OpenDomo (usuarios y contraseñas, grupos, scripts de inicio, ficheros de configuración de los servicios, etc.).

Page 18: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

● Durante el proyecto, se ha trabajado con OpenDomo Services S.L. en la configuración de las herramientas y la adaptación del SDK para generar un port del sistema OpenDomo funcional sobre Raspberry Pi.

Page 19: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

Tareas Realizadas● Generación de una imagen del kernel Linux

funcional sobre el dispositivo.● Generación de un root filesystem de OpenDomo

funcional sobre el dispositivo.● Compilación de todos los paquetes de OpenDomo

mediante la cadena de herramientas de compilación cruzada generada con BuildRoot.

● Automatización de la descarga con los ficheros binarios de firmware necesarios.

Page 20: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

Tareas Realizadas● Configuración del dispositivo para la carga del root

filesystem de Opendomo como Initramfs.● Configuración del dispositivo para el correcto

reparto de la memoria RAM entre la CPU y la GPU.● Preparación de la tarjeta SD para albergar el sistema

OpenDomo y su correcta carga en la Raspberry Pi.

Page 21: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

Secuencia de Comandos● svn checkout https://opendomo.googlecode.com/svn/trunk/ opendomo →

Descarga la última versión del SDK del repositorio.

● ./odsdk.sh deps → Instala las dependencias necesarias para el resto del proceso.

● ./odsdk.sh update → Descarga las actualizaciones del repositorio, y descarga y desempaqueta la versión de Buildroot a utilizar.

● ./odsdk.sh arch arm → Carga los ficheros de configuración (Buildroot, Linux, uClibc, Busybox) para Raspberry Pi.

● ./odsdk.sh rmpkg → Elimina los paquetes compilados anteriormente, si existen.

Page 22: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

Secuencia de Comandos● ./odsdk.sh brmc → Muestra la interfaz Ncurses de configuración de

Buildroot.

● ./odsdk.sh brmake → Lanza el proceso de descarga de fuentes, compilación, generación de la imagen del kernel y creación del root filesystem.

● ./odsdk.sh pkg → Compila todos los paquetes de OpenDomo con el toolchain generado en el paso anterior.

● ./odsdk.sh mkrpi → Descarga o actualiza los ficheros de firmware necesarios, y adapta el root filesystem de OpenDomo (de initrd a initramfs).

Page 23: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

Preparación de la Tarjeta SD

Page 24: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

Preparación de la tarjeta SD: pkgcache

Page 25: OpenDomo en Raspberry Piopenaccess.uoc.edu/webapps/o2/bitstream/10609/23182/10... · OpenDomo en Raspberry Pi Secuencia de Comandos ./odsdk.sh brmc → Muestra la interfaz Ncurses

OpenDomo en Raspberry Pi

Interfaz Web: ODCGI