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.
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
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 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.
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
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.
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.
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