- Mensajes: 320
- Karma: 11
- Gracias recibidas: 124
Valencia, España
Tras el anuncio de la Fundación UBPorts de lanzar ya una versión cuasi-estable de UBPorts (es decir, Ubuntu Touch en su versión no-Canonical), me ha picado el gusanillo. Tengo un terminal por ahí tirado en casa (un Motorola Moto E 2015 4G-LTE), del cual, me encantaría hacer un port de este sistema operativo. La "gracieta" está en que tengo una pequeña base de la cual inspirarme (tiene un port funcional de Sailfish OS):
forum.xda-developers.com/moto-e-2015/dev...-e-2015-lte-t3623141
Sin embargo, voy un tanto perdido. Voy a basarme en esto (
docs.ubports.com/en/latest/porting/introduction.html
) para investigar el cómo podría hacer una compilación funcional de UBPorts para mi terminal. Puede que salga, puede que no, pero me voy a tomar esto como una experiencia de aprendizaje más, sencillamente. Iré actualizando conforme vaya conociendo más detalles.
Por favor, Identificarse para unirse a la conversación.
Bien, tras informarme de cómo va el asunto, creo que estoy en condiciones de describir todos los pasos que voy haciendo a este respecto. Si todo lo que voy a postear aquí sale bien, es posible que salga un tutorial nuevo para la sección de Tutoriales, pero poco a poco... Todo este proceso lo voy a realizar en Linux Mint 18.3 (Ubuntu 16.04) para garantizar la mayor compatibilidad posible.
En primer lugar, antes de intentar hacer algún intento de portado de Ubuntu Touch, nos tenemos que asegurar de que el intermediario entre las librerías de abstracción hardware de Android (HAL) y la distro móvil a portar se entiendan perfectamente. De esto se encarga el proyecto Halium (
halium.org/
), el cual, a través de sus librerías (libhybris), hace posible la magia:
sudo dpkg --add-architecture i386
sudo apt install git gnupg flex bison gperf build-essential \
zip bzr curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw-w64-i686-dev tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 schedtool \
repo liblz4-tool bc lzop
Por favor, Identificarse para unirse a la conversación.
Una vez hecho esto, voy a pasar a la siguiente fase. Vamos a descargar el "source tree" de Halium en una nueva carpeta, la cual estará en un directorio a discreción del lector. Yo lo voy a poner en /home/impreza233/Descargas (mi carpeta de Descargas, y en la cual, vamos a trabajar). Abre esta carpeta en un Terminal y teclea:
mkdir halium && cd halium
repo init -u https://github.com/Halium/android -b halium-7.1 --depth=1
repo has been initialized in /home/impreza233/Descargas/halium
repo sync -c -j 16
repo init -u https://github.com/Halium/android -b halium-5.1 --depth=1
Por favor, Identificarse para unirse a la conversación.
Una vez descargados los sources de Halium (son unos 12 gigas, de ahí lo de la paciencia a la hora de descargarlas), vamos a añadir el código específico del dispositivo en cuestión, y a configurar el sistema de compilación para integrar Halium en Android. Ésta será la parte en la que más fallos podrás cometer, pero tranquil@, con paciencia y una caña podrás configurar este paso correctamente
En primer lugar, hay que encontrar los repositorios para tu dispositivo. Aquí me voy a basar en Lineage OS (
github.com/lineageos
) para realizar el proceso. Generalmente, estos repositorios vienen de la forma LineageOS/android_device_marca_nombredeldispositivo. En mi caso, es el siguiente:
android_device_motorola_surnia
halium/devices/manifests
marca_nombredeldispositivo.xml
motorola_surnia.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
</manifest>
<project path="device/[marca]/[modelodeldispositivo]" name="[mombredelrepositorio]" remote="[remote]" revision="[revision]" />
<project path="[target_path]" name="[repository]" remote="[remote]" revision="[revision]" />
./halium/devices/setup surnia
Por favor, Identificarse para unirse a la conversación.
ANEXO: Si queréis ver el progreso del port, podéis verlo aquí: github.com/Halium/projectmanagement/issues/97
Por favor, Identificarse para unirse a la conversación.
Ahora que ha terminado el proceso de descarga de los componentes específicos de surnia (mi terminal), vamos con la "parte divertida" del proceso jejeje.
Entramos al directorio BUILDDIR indicado en posts anteriores (si has hecho secuencialmente todos los pasos indicados en este post, seguirás en la misma carpeta, no te preocupes ), y ejecutamos:
source build/envsetup.sh
breakfast surnia
Por favor, Identificarse para unirse a la conversación.
Ahora toca la parte de compilación y comprobación (para ver si todo funciona bien antes de proceder al "port" en sí de Ubuntu Touch) de libhybris. Modificaremos la configuración del kernel para que funcione con systemd, y se pueda compilar y hacer funcionar correctamente. Usaremos, para ello, el "mer-hybris-check", el cual se descarga con este comando:
git clone https://github.com/mer-hybris/mer-kernel-check
grep "TARGET_KERNEL_CONFIG" device/<marca>/<nombredeldispositivo>/BoardConfig.mk
cd mer-kernel-check
./mer_verify_kernel_config <ruta a la configuración del kernel obtenida antes>
TARGET_KERNEL_CONFIG := surnia_defconfig
Por favor, Identificarse para unirse a la conversación.
Apasionante, a ver si hay suerte,
Por favor, Identificarse para unirse a la conversación.
Tras solucionar el pequeño problema que he tenido, vamos a seguir adelante. Vamos a editar las variables de configuración del kernel. Esto variará según el kernel de tu dispositivo. Como guía, prueba a usar esta imagen:
<BUILDDIR>/halium/hybris-boot/fixup-mountpoints
make mkbootimg
make hybris-boot
make systemimage
Por favor, Identificarse para unirse a la conversación.
Bien, sigamos con el tema. Una vez hayamos sacado el hybris-boot y el systemimage, será momento de ponernos ya con Ubuntu como los cánones mandan. Hasta ahora habíamos hecho una simple prueba para comprobar que todo podría ser compilado de buena manera con la configuración existente en el sistema operativo Linux en cuestión.
Ahora viene lo bueno. En primer lugar, sabed que SELinux no pinta absolutamente nada para Ubuntu Touch, ni para halium-boot (el derivado de hybris-boot que construiremos ahora). Por tanto, hay que cargarse todo lo referente a "context=" y sustituir los sistemas de archivos f2fs por ext4 en el fstab. Y, pequeño saltamontes, me preguntarás, ¿qué carajo es el fstab? Pues, amig@, el fstab es, ni más ni menos, el esquema de particiones que lleva el terminal o tablet al cual estás portando el sistema operativo. Suele estar en la ruta
BUILDDIR/device/MANUFACTUER/CODENAME/rootdir/etc
Por favor, Identificarse para unirse a la conversación.
Si no cambia la configuración de su navegador, usted acepta su uso. Saber más