Compilar LibreELEC raspberry with Raspberry Pi3

Introducción

Para un proyecto de Sistemas Operativos Linux, Se tiene como objetivo habilitar la tarjeta Raspberry Pi 3, con una version de Linux embebido, cumpliendo con Bootloader, Kernel y File System. Como File System se seleccionó LibreELEC/KODI 9.0 por interesante aplicación multimedia y por supuesto su amplio soporte de desarrollo e implementación por parte de la comunidad Raspberry. entra y aprende a Compilar LibreELEC raspberry with Raspberry Pi3.

Porque elegimos Raspberry

Encontramos mayor soporte por parte de la comunidad y foros. Ademas, representa un nuevo reto para la asignatura, ya que a lo larga de la misma, estuvimos usando UDOO, por lo tanto incursionar en una tarjeta diferente amplia nuestros conocimientos y posibilidades de implementación.

imagen 1 raspberry

imagen 1 raspberry

Imagen 2 udoo

Imagen 2 udoo

Linux Embebido

Linux embebido​ o empotrado se refiere al uso del núcleo Linux en un sistema embebido, como por ejemplo PDA, teléfonos móviles, robots, enrutadores/servidores, dispositivos ELECrónicos y aplicaciones industriales con microcontroladores y microprocesadores.

En el pasado, el desarrollo de sistemas embebidos fue llevado a cabo en su mayoría utilizando código propietario escrito en lenguaje ensamblador. Los desarrolladores debían escribir los controladores para los dispositivos de hardware y las interfaces desde cero.

El núcleo Linux, combinado con un conjunto de algunas otras utilidades de software libre, puede ajustarse dentro del limitado espacio de hardware de los sistemas embebidos. Una instalación típica de un Linux embebido ocupa en promedio 2 MB.

Existen otros sistemas operativos embebidos como el QNX, LynxOS, Windows CE, Windows NT Embedded, Palm OS.

Linux embebido tiene algunas ventajas en relación a otros sistemas operativos embebidos, como pueden ser el Código abierto, pequeño (Windows CE ocupa 21 MB comparado con los 2 MB para Linux embebido), puede no tener costos por derechos, maduro y estable (Más de 20 años de edad y utilizado en muchos dispositivos) y con respaldo.

LibreELEC 

Libre ELEC

Libre ELEC

LibreELEC es un proyecto realizado por una gran cantidad de voluntarios, ninguna tarea del proyecto depende únicamente de una persona, además, siempre nos informarán de las fechas aproximadas de la siguiente versión, ya sea una beta pública o una actualización de mantenimiento.

La distribución LibreELEC tiene la intención de ser lo más estable posible, las versiones liberadas estarán congeladas y solo se actualizarán los posibles fallos de seguridad que hubiera, los fallos de funcionamiento reportado por los usuarios y cambios menores para aumentar la compatibilidad del hardware. La intención de LibreELEC es ser una distribución sin ánimo de lucro, pero con financiación pública para destinar todos los recursos a los programadores, además, la web oficial y el foro tendrán algo de publicidad para ayudar a las donaciones de los usuarios.

Este SO está especialmente diseñado para usarlo en dispositivos embebidos como la popular Raspberry Pi, sobre todo para las versiones Raspberry Pi 2 y Raspberry Pi 3.

Que dispositivos embebidos son compatibles con LibreELEC?

Actualmente los dispositivos compatibles con este sistema operativo orientado a reproductor multimedia, son los siguientes:

  • Raspberry Pi Zero
  • Raspberry Pi 1
  • Raspberry Pi 2
  • Raspberry Pi 3
  • Cualquier HTPC x86 (64 bits) con GPU Intel, AMD o NVIDIA
  • Cualquier HTPC con procesador Amlogic, como los populares TV Box.
  • ODROID C2
  • Wetek Core
  • Wetek Hub
  • Wetek Play
  • Wetek Play 2
  • UDOO Quad/Duo

Generalidades de LibreELEC

  • OS Family: Unix-Like
  • Source model: Open source.
  • Initial release: 4 Abril 2016
  • Platforms: ARM, IA-32 and x86-54.
  • Kernel type: Linux.
  • Default user interface: Kodi
  • License: GPLv2
  • Official website: libreelec.tv

KODI   

kodi

kodi

Kodi es una aplicación con la que puedes convertir tu ordenador en un centro multimedia en el que ver con una interfaz limpia y clara todo tipo de contenidos. Es el sucesor de la mítica aplicación XBMC (XBox Media Center), que en el año 2014 anunció que iban a cambiar de nombre y pasaron a llamarse simplemente Kodi.

Sus orígenes se remontan al año 2002, cuando XBMC apareció para aprovechar las primeras videoconsolas XBox que habían conseguido “rootearse” o desbloquearse. Con esta aplicación en la consola podrías reproducir los archivos multimedia que metieses en su almacenamiento, algo que también acabó pudiéndose hacer en los ordenadores con el salto de la aplicación al PC.

Una de las grandes bazas de Kodi es que su código es libre (bajo la licencia GNU/GPL), por lo que todos los usuarios de Internet pueden acceder a su código fuente y manipularlo para adaptarlo a cualquier sistema operativo o dispositivo en el que lo necesiten. Gracias a eso Kodi tiene versiones tanto para Windows como para GNU/Linux, macOS, iOS, Android, Raspberry Pi y prácticamente para cualquier otro que necesites.

Otra de sus principales características es que es una aplicación totalmente modular que puedes adaptar a tu medida. No sólo porque tiene temas para cambiar su interfaz, sino porque también tiene un sistema de add-ons con los que añadirle diferentes tipos de funcionalidades según cuales sean tus características.

Estos add-ons te permiten por ejemplo poder ver en Kodi diferentes canales de televisión a través de Internet, mostrar predicciones metereológicas, o conectarte a servicios como Plex, SoundCloud o YouTube. También los tienes para escuchar radio, acceder a algunos de tus servicios de almacenamiento en la nube.

kodi

kodi

ahora si! vamos a Compilar LibreELEC raspberry with Raspberry Pi3

Maquina host

Numero Característica Valor
1 Procesador 2.5 GHz Intel Core i7 X 8
2 Ram 16 GB 1600 MHz DDR3
3 DD 499.06 GB (499,055,067,136 bytes)
4 Red Ethernet y Wifi
5 Sistema Operativo MAC OX


Maquina Virtual      

Numero Característica Valor
1 Procesador 2.5 GHz Intel Core i7 X 4
2 Ram 4 GB 1600 MHz DDR3
3 DD NVI 44.17 GB
4 Red Ethernet y Wifi (Bridge)
5 Sistema Operativo Ubuntu server
6 Usuario Lavariega
7 Pass XXXXXXXX

Virtualizador

Numero Característica Valor
1 Nombre Virtual Box
2 Extensión Pack Etensión Pack 5.4
3 Soporte X86/AMR/AMD64

Tarjeta

Numero Característica Valor
1 Procesador Quad Core 1.2GHz
2 Ram 1GB RAM
3 DD SD 32 GB
4 Red BCM43438 wireless LAN y 100 Base Ethernet
5 Sistema Operativo devel-20180912011155-5c961f9
6 Kernel 4.14.67
7 Interfaz de usuario KODI
8 Marca Raspberry

Pasos iniciales

Conectarse al servidor Ubuntu en el cual se hará la compilación.  Esta conexión puede ser vía ssh o desde la interfaz grafica de Vitrual Box.  En nuestro caso preferimos trabajar via ssh para facilitar el acceso.

ssh lavariega@192.168.15.60

Una vez ingresado al sistema; siempre es recomendable actualizar nuestro sistema operativo.

sudo apt update && sudo apt upgrade

Instalar las dependencias básicas del Sistema Operativo para el proceso. La siguiente tabla muestra las dependencias instaladas.

Dependencia Descripción
Gcc Colección de compiladores GNU
Make Compilador
Git Repositorios Git
Unzip Compresor de archivos
Wget Herramienta para descaga de direcgtorios via web
xz-utils Utilerias con varios formataos de comprensión

lavariega@ubuntu2:~$  sudo apt install gcc make git unzip wget xz-utils

Configurar git

Necesitamos crear nuestras credenciales de git para poder descargar los códigos de LibreELEC que se encuentran en la plataforma.

lavariega@ubuntu2:~$  cd ~

lavariega@ubuntu2:~$  git clone https://github.com/LibreELEC/LibreELEC.tv.git

gitkodi

gitkodi

El resultado de este comando genera una nueva carpeta de nombre LibreELEC.tv dentro de la carpeta donde nos encontramos. El siguiente paso es entrar a la carpeta creada.

lavariega@ubuntu2:~$  cd LibreELEC.tv/

Escoger versión de LibreELEC  a compilar.

Dentro de los enlaces del código fuente; se encuentran varias versiones de LibreELEC. En la ramificación de git podemos ver versiones desde la Master hasta versiones particulares como algunas propias de NXP.

branches KODI

branches KODI

En este proyecto se utilizara la versión default ; que en los repositorios aparece bajo el nombre de MASTER.

lavariega@ubuntu2:~$   git clone https://github.com/LibreELEC/LibreELEC.tv.git

Compilación de BOOT alterno (Opcional)

Pasos para compilar de u-boot a través del siguiente procedimiento, pero una vez obtenido el archivo u-boot.bin y reemplazarlo por bootcode.bin, libreELEC no arranca:

Se obtuvo el código fuente de:

git clone –depth 1 –branch v2017.11 git://git.denx.de/u-boot.git v2017.11

éste se compilo de la siguiente manera:

sudo make -C v2017.11/ CROSS_COMPILE=aarch64-linux-gnu- rpi_3_defconfigsudo make -C v2017.11/ CROSS_COMPILE=aarch64-linux-gnu-

obteniendo la carpeta v2017.11/ donde encontramos el archivo binario u-boot.bin

Arquitectura de compilación

Vamos a analizar paso a paso los parámetros solicitados por el make oficinal y después indicaremos que parámetros corresponden para una correcta selección de nuestra placa. La siguiente tabla tiene los parámetros solicitados por el MAKE.

Numero Parametro Descripción
1 PROJECT Tipo de proyecto a compilar. LIBRE ELEC, tiene soporte para ARM,RPi,RockChip.
2 DEVICE Dispositivo para el cual serán customizado los drivers
3 ARCH Arquitecturas para las que se genera el paquete. Puede ser:  arch64, arm o x86_64

Tabla 5.  Variables de entrada para compilar el brach de LibreELEC.

En nuestro caso tendremos que compilar para una raspberry Pi3.

Numero Parámetro Descripción
1 PROJECT Tipo de proyecto a compilar. LIBRE ELEC, tiene soporte para ARM,RPi,RockChip.
2 DEVICE Dispositivo para el cual serán customizado los drivers
3 ARCH Arquitecturas para las que se genera el paquete. Puede ser:  arch64, arm o x86_64

Tabla 6.  Variables de entrada para compilar el brach de LibreELEC para RaspberryPi 3.

Ahora analizaremos los parámetros correspondientes de nuestra tarjeta

Numero Parámetro Valor
1 PROJECT RPi
2 DEVICE RPi2
3 ARCH arm

Tabla 7.  Variables de entrada para compilar el brach de LibreELEC para nuestra tarjeta Raspberry Pi3.

Proceso de compilación

Una vez detectados los parámetros corremos el comando siguiente; el cual asignara las variables y después compilara la imagen; donde compilaremos el proyecto RPi para una arquitectura ARM.

lavariega@ubuntu2:~$    PROJECT=RPi DEVICE=RPi2  ARCH=arm  make image

Cargar imagen a SD

Insertamos la memoria USB ó tarjeta SD en tu sistema. Debería aparecer como un nuevo dispositivo conectado.

Se necesitan los privilegios de superusuario para escribir la imagen de disco, por lo tanto, use el usuario raíz o sudo.

Escribir la imagen de disco se realiza mediante el siguiente comando (importante conocer la ruta de la SD /USB que usaremos ):

lavariega@ubuntu2:~$    dd if=LibreELEC-RPi2.arm-9.0-devel-20180912011155-5c961f9 of=/dev/sdb bs=4M

Nos aseguramos de que todos los cambios estén sincronizados para poder extraer el dispositivo usb de forma segura.

lavariega@ubuntu2:~$     sync

RESULTADOS

Version de Kernel

CIATEQ:~ # uname -r

4.14.67

Ruta de Kernel

CIATEQ:/flash # ls -l /flash/kernel.img

-rwxr-xr-x    1 root     root       7231504 Sep 12 04:14 /flash/kernel.img

Device tree

bcm2708-rpi-0-w.dtb

CIATEQ:~ # uname -a

Linux CIATEQ 4.14.67 #1 SMP Wed Sep 12 01:50:01 CDT 2018 armv7l GNU/Linux

CIATEQ:~ # cat /etc/issue

##############################################

#                 LibreELEC                  #

#            https://libreelec.tv            #

##############################################

LibreELEC (community): devel-20180912011155-5c961f9 (RPi2.arm)

 File system

Filesystem                Size      Used Available Use% Mounted on

devtmpfs                369.0M         0    369.0M   0% /dev

/dev/mmcblk0p1          511.7M    144.6M    367.2M  28% /flash

/dev/mmcblk0p2           28.3G     11.4M     28.3G   0% /storage

/dev/loop0              131.0M    131.0M         0 100% /

tmpfs                   374.5M         0    374.5M   0% /dev/shm

tmpfs                   374.5M      7.8M    366.7M   2% /run

tmpfs                   374.5M         0    374.5M   0% /sys/fs/cgroup

tmpfs                   374.5M      2.6M    371.9M   1% /var

tmpfs                   374.5M         0    374.5M   0% /tmp

Conclusiones

Actualmente no es tan recurrente que necesitemos compilar un kernel, pero tiempo atrás si lo era. Hoy día esto se hace por alguna particularidad de algun vendor o fabricantes y es bueno entender como se hace.

Es importante entender que existe varias maneras de compilar el kernel, practicamente una diferente por distribución. Pero los conceptos basicos son los mismos y esto es importante dominarlos.

Después de cursar la materia de sistema operativos Linux para embebidos, dejo el siguiente procedimiento donde se compilara  LibreELEC para  Raspberry Pi3.

Autores:

Andres Lavariega
Fabian Salinas
Renato Palomares

Asesor:

Alfredo Soto

Andres Lavariega

Apasionado de las tecnologías.Profesional Asterisk y Camaleon Firewall. VoIP Security Assessment / / Me divierto programando y desarrollando ideas //

Podría también gustarte...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *