Categorías
Cultura General Linux

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 […]

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

NumeroCaracterísticaValor
1Procesador2.5 GHz Intel Core i7 X 8
2Ram16 GB 1600 MHz DDR3
3DD499.06 GB (499,055,067,136 bytes)
4RedEthernet y Wifi
5Sistema OperativoMAC OX


Maquina Virtual      

NumeroCaracterísticaValor
1Procesador2.5 GHz Intel Core i7 X 4
2Ram4 GB 1600 MHz DDR3
3DDNVI 44.17 GB
4RedEthernet y Wifi (Bridge)
5Sistema OperativoUbuntu server
6UsuarioLavariega
7PassXXXXXXXX

Virtualizador

NumeroCaracterísticaValor
1NombreVirtual Box
2Extensión PackEtensión Pack 5.4
3SoporteX86/AMR/AMD64

Tarjeta

NumeroCaracterísticaValor
1ProcesadorQuad Core 1.2GHz
2Ram1GB RAM
3DDSD 32 GB
4RedBCM43438 wireless LAN y 100 Base Ethernet
5Sistema Operativodevel-20180912011155-5c961f9
6Kernel4.14.67
7Interfaz de usuarioKODI
8MarcaRaspberry

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.

DependenciaDescripción
GccColección de compiladores GNU
MakeCompilador
GitRepositorios Git
UnzipCompresor de archivos
WgetHerramienta para descaga de direcgtorios via web
xz-utilsUtilerias 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.

 

NumeroParametroDescripción
1PROJECTTipo de proyecto a compilar. LIBRE ELEC, tiene soporte para ARM,RPi,RockChip.
2DEVICEDispositivo para el cual serán customizado los drivers
3ARCHArquitecturas 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.

NumeroParámetroDescripción
1PROJECTTipo de proyecto a compilar. LIBRE ELEC, tiene soporte para ARM,RPi,RockChip.
2DEVICEDispositivo para el cual serán customizado los drivers
3ARCHArquitecturas 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

NumeroParámetroValor
1PROJECTRPi
2DEVICERPi2
3ARCHarm

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.

OTROS TEMAS

2 respuestas en “Compilar LibreELEC raspberry with Raspberry Pi3”

Hola quiero realizar lo anterior pero en ubuntu que debo hacer?, es decir quiero obtener el kernel, bootloader y el filesystem pero atraves de ubuntu, veo que pues lo realizaron en RPi3 . Saludos

Te paso una guia.
Linux Kernel Source Code:

apt-get source linux-source-3.2.0
Where can I find the source code for the Ubuntu Kernel?

Ubuntu Source Code:

Ubuntu archive

Specific Software Source Code:

sudo apt-get build-dep $package
where package is the program/package’s source code you want to adopt.

then type:

apt-get source $package
to get the source for that package.

For instance:

sudo apt-get build-dep abiword
apt-get source abiword

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.