Acceso ROOT
Corriendo Linux en Dispositivos Móviles
Alternativamente a la ejecución de Termux, es posible brindar mayor control al sistema ejecutando un sistema GNU/Linux en Chroot, pero que pueda mantenerse arriba por si mismo sin depender de Termux, también permitiéndonos ejecutar sistemas que no sean basados en Debian y más orientados al manejo de los servidores, como puede ser Alpine Linux el cual es independiente como por ejemplo de la licencia GNU y está mucho más orientado a ser ligero para el manejo de servidores.
Para esto, es necesario el uso de un permiso que tienen por defecto los usuarios Linux, el permiso del usuario Root, quién puede modificar archivos del sistema que por lo general solo suelen estar para lectura, e incluso en los sistemas android, mucho de estos archivos no suelen estar en modo de lectura para el usuario. Esto nos permitirá ejecutar un Chroot con más permisos, independiente del sistema Android principal y así pues, nos permitirá experimentar con nuestro sistema Android y reducir la cantidad de recursos que esté consume.
Este proceso puede llevarse a cabo con una aplicación desarrollada por la comunidad de Android llamada Magisk Manager, el cual nos permitirá instalar los permisos de Acceso ROOT en nuestro celular.
¡IMPORTANTE!
Para la instalación de el acceso ROOT es necesario el Desbloqueo de Bootloader.
Instalación
Antes que nada es necesario descargar la última versión del Firmware o de la ROM Stock del dispositivo movil, esto suele proveerlo el fabricante o paginas externas que almacenan esto. Contando con este y con el Bootloader Desbloqueado podemos continuar con el procedimiento. Por lo general el Bootloader o el modo fastboot se abre con el dispositivo apagado, al intentar arrancarlo con el botón de encendido y volumen abajo presionados al mismo tiempo.
Aquí una tabla de como acceder al modo Fastboot:
| Fabricante | Combinación de teclas | Nota |
|---|---|---|
| Google Pixel | Volumen abajo + Encendido | Accede directamente al Bootloader. |
| Xiaomi | Volumen abajo + Encendido | Accede al modo Fastboot (logo de Fastboot con conejo). |
| Motorola | Volumen abajo + Encendido | Entra al menú del Bootloader y con las teclas se puede seleccionar el Fastboot. |
| OnePlus | Volumen Arriba + Encendido o Volumen Arriba + Volumen Abajo + USB (según modelo) | Entra al Bootloader. |
| Oppo | Volumen arriba + encendido | En algunos modelos el modo Fastboot puede estar restringido. |
| Una vez se está en modo Fastboot, debes conectar el dispositivo móvil y es necesario descargar una herramienta que nos permitirá instalar todo, está herramienta es conocida como "ADB & Fastboot" suele ser dada por Google y está disponible tanto para Windows, Mac y GNU/Linux. |
Hay varios instaladores independientes que puedes encontrar en Github que facilitan el proceso de instalación y actualización de está herramienta si no deseas configurar cosas como el PATH en windows de las herramientas cada vez que salga una nueva versión.
El enlace para adquirirlas es el siguiente:
https://developer.android.com/tools/releases/platform-tools?hl=es-419
Una vez se cuenta con nuestra herramienta de ADB & Fastboot instalado, es necesario descomprimir la ROM y buscar el archivo boot.img, instalaremos Magisk Manager y en el apartado de instalación nos permitirá "parchear" el boot.img, así pues, nos devolverá un boot_patched.img el cual pondremos en una carpeta en donde abriremos una terminal (CMD en Windows) y ejecutaremos:
fastboot flash boot <Nombre de nuestro archivo parcheado>.img
Con esto, nuestro dispositivo solamente debe ser reiniciado y ahora se encontrará rooteado:
fastboot reboot
Una vez hemos instalado el archivo parcheado, al abrir Magisk debe aparecernos que contamos con acceso root, debe aparecernos ambos apartados instalados y nos pedirá posiblemente el reiniciar el dispositivo para terminar la instalación del mismo.
Instalación de un RootFS (Root FileSystem)
Logrado el acceso root, ahora existen varios caminos para llegar a nuestro resultado deseado, pero en nuestro caso, haremos todo con ayuda del ADB y poco más.
Inicialmente debemos instalar una aplicación que nos permita instalar busybox en nuestro dispositivo móvil, en Play Store hay varias que permiten la instalación de esto mediante el acceso root, personalmente prefiero usar la versión de F-droid, pero en todas solamente es un botón que dice instalar y darle permiso root.
https://f-droid.org/es/packages/com.smartpack.busyboxinstaller/
Posterior a la instalación de busybox, se nos pedirá reiniciar el celular. Luego, dentro de las opciones de desarrollador debemos activar la opción de Depuración USB y aquellas que permiten la configuración del dispositivo por ADB USB, posterior a esto, debemos conectar el dispositivo a nuestro computador y en una terminal (CMD en Windows) ejecutar el comando:
adb usb
Debemos autorizar desde el dispositivo móvil el acceso del computador hacia el dispositivo, y nomralmente debemos repetir el comando descrito anteriormente, esto después de haber permitido el acceso del computador.
Posteriormente, iniciamos la terminal del dispositivo móvil en nuestro computador con el comando:
adb shell
Con esto, tenemos acceso a la terminal del dispositivo móvil, para poder iniciar con nuestro proceso de instalar un entorno Linux, nos daremos permiso de usuario ROOT con el comando:
su
Nuestro prefijo debe presentar un cambio, de un $ a un #, asi permitiendonos diferenciar de los comandos que ingresamos en bash normal, a la bash con acceso superusuario, debemos tomar en cuenta que una vez ingresemos el comando, en el dispositivo movil saltará un anuncio preguntando si se desea dar acceso root a la shell del sistema android, debemos autorizar esta petición y podremos continuar con el proceso.
Ahora, una vez tengamos esto listo, debemos instalar el Root File System (RootFS) de Alpine Linux en nuestro dispositivo, en está guia usaremos Alpine Linux, pero ciertamente se puede utilizar el RootFS del gusto del usuario, ya sea Arch linux, Debian, Gentoo, etc. Esto lo realizaremos en nuestro caso descargando el archivo de:
https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/aarch64/alpine-minirootfs-3.24.0-aarch64.tar.gz
Una vez con el archivo descargado, podremos crear una carpeta en la carpeta de datos del dispositivo y mover el RootFS allí:
mkdir -p /data/local/alpine
mv <ubicación de nuestro fichero>.tar.gz /data/local/alpine/
Una vez hemos movido nuestro fichero a la carpeta que hemos creado, podremos descomprimirlo:
cd /data/local/alpine
tar -xzf alpine*
Como resultado, tendremos un RootFS de Alpine linux en nuestra carpeta designada, nos quedaría montar el sistema antes de arrancarlo, para ello podemos hacerlo manualmente o usando un Script que adjuntaré con esté archivo, esté script de Bash solamente debe ser copiado o movido a la carpeta en donde tenemos nuestro sistema de ficheros y al ejecutarlo automaticamente montará todo lo necesario. El archivo que montará esto se llamará mount.sh
Es necesario también configurar los DNS, pero como esto solamente debe hacerse la primera vez, no considero necesario hacer un Script o algo del estilo, dejaré aquí el comando:
echo "nameserver 1.1.1.1" > /data/local/alpine/etc/resolv.conf
Debemos ajustar las variables globales de nuestro chroot y luego abrirlo con un comando:
env -i HOME=/root TERM=xterm-256color PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin chroot /data/local/alpine /bin/su
También haré un script de esto para que no debamos poner esté comando cada vez que deseemos abrir nuestro chroot, se llamará run.sh
Ahora, solo será necesario actualizar e instalar la base de alpine:
apk update
apk upgrade
apk add alpine-base
Una vez hemos actualizado nuestro sistema, tenemos un sistema Alpine Linux funcional completo, y con ello, será sencillo ejecutar los protocolos de nube, y otras herramientas que nos permitan usar servicios. En este caso, la guia es muy similar a la guia de Termux, por lo que adaptaré su paso a paso al uso del sistema de Alpine.
NOTA: Para mantener los servicios vivos después de la desconexión del ADB, recomiendo utilizar tmux como cliente de terminal, esto por lo general los mantiene vivos sin importar si te desconectarse de ADB.
Servidor SSH
Este servicio es recomendable instalarlo independiente del servidor que pensáramos hacer, debido a que nos facilitará el manejo del dispositivo a través de un computador, o nuestro celular en caso de que consideremos necesario tener acceso 24 horas a nuestro servidor desde una terminal.
Para esto, inicialmente debemos actualizar el sistema con los comandos:
apk updateapk upgrade
Una vez contemos con nuestro sistema de ficheros actualizado, podemos instalar openssh:
apk add openssh
Generaremos las claves del servidor SSH con el siguiente comando:
ssh-keygen -A
Debemos crear un usuario para poder acceder por la terminal:
adduser <nombre de usuario>
Y nos pedirá configurar su respectiva contraseña.
Debemos por ende instalar un comando que nos permita acceder al superusuario desde este nuevo usuario que creamos por ADB, por lo general la gente utiliza "sudo" el cual no es dificil de configurar, pero en caso de necesitar algo distinto, la gente también opta mucho actualmente por utilizar "doas" que es un comando mejor diseñado y a la actualidad muy querido por la comunidad Linuxera.
El protocolo se inicia con el comando
/usr/sbin/sshd
Se abre en el puerto "22" por defecto, para conectarnos desde nuestro computador, se utilizará el siguiente comando (nota: sea Windows nuestro computador, abriremos este comando en PowerShell):
ssh <NOMBRE DEL USUARIO>@<IP DEL DISPOSITIVO> -p 22
Servidor de Archivos
Por lo general para este estilo de servidores se suelen utilizar sistemas simples como servidores FTP o SFTP, si requerimos de algo más sofisticado como NextCloud, podríamos descargar su software desde la web y ejecutarlo en la terminal.
Explicaremos paso a paso como configurar desde un servidor FTP simple, a algo más complejo como ejecutar el servidor de NextCloud.
Pero antes de pasar a cada servidor, es necesario contar con nuestro sistema actualizado, asi que para evitar mencionarlo en cada sección, asumiremos que el usuario actualizó su sistema ejecutando los comandos:
apk updateapk upgrade
FTP
Para la instalación de este servicio debemos inicialmente corroborar que nuestro RootFS tenga instalado Busybox:
apk add busybox
Una vez contemos con Busybox instalado, es necesario que nosotros, nos ubiquemos en la carpeta que deseamos se manejen todos los archivos, o que tengamos su ruta definida dentro del RootFS.
Con eso en mente, el comando para empezar el servidor ftp, se realiza de la siguiente manera:
busybox tcpsvd -vE 0.0.0.0 2121 busybox ftpd -w <ruta a tu carpeta a compartir>
Luego, con cualquier cliente de FTP o desde los dispositivos en red de Windows (del administrador de archivos) puedes conectarte a este dispositivo.
La IP para conectarse es dada por el dispositivo, si necesitas confirmar cual es la IP del dispositivo, el comando ip andrr show devolverá tal información, mientras que el puerto será el 2121.
Nextcloud
NextCloud suele ser el favorito para mucha gente que desea hostear una nube virtual desde casa, por lo general su proceso de instalación es sumamente sencillo, y la configuración del mismo también es fácil de llevar a cabo, cuenta con aplicación para poder conectarte al servidor desde otros dispositivos o un manejo desde la red local igualmente.
La instalación de esté paquete y configuración excede la finalidad de está guia, por lo que brindaré acceso a la guia oficial de Alpine, en donde explican detalladamente paso por paso como configurar todo lo necesario para hacer que Nextcloud funcione completamente en alpine.
Servidor de Música
Para el manejo de la música, en general siempre ha sido un inconveniente para los usuarios que les gusta la música de alta fidelidad o formato FLAC, porque si bien hay paginas donde descargarla, alojarla siempre es complicado, tener unas cuantas canciones puede pesar incluso 10 GB de almacenamiento, por eso el interés particular en alojar música online y también la rentabilidad de los servicios de streaming como Apple Music, pero a estos mismos suele faltarle mucha de la música que uno necesita.
Por esto mismo, la solución que tomamos algunas personas es alojarla en servidores que nos permitan mantener la comodidad de un buen reproductor de música y a la vez no perder la fidelidad que implica el formato FLAC.
Para esto, se suele utilizar Navidrome, una solución rápida de configurar y muy útil, que genera un servidor de Subsonic, compatible con miles de aplicaciones como puede ser la reconocida aplicación para escuchar música Pixel Player.
Para esto, simplemente debemos instalarlo en nuestro RootFS con el comando:
apk add navidrome
para ejecutarlo solo debemos poner el comando:
navidrome
Su configuración completa puedes encontrarla en su documentación oficial, pero su funcionamiento es bastante simple y por lo general con esto basta, al ejecutar el comando el te indica en que puerto y en que IP se está ejecutando por lo general.
Servidor de Minecraft
Configurar un servidor de Minecraft una vez se cuenta con una terminal GNU/Linux es algo relativamente sencillo, sus servidores están pensados para ejecutarse en cualquier sistema operativo, pero es cierto que no genera la mayor de las dificultades para este sistema.
NOTA: Se explicará como instalar y configurar un servidor Vanila, la instalación de clientes modificados como PaperMC o Fabric puede conseguirse de manera similar o usando las guias de los respectivos clientes, estos especifican como hacer el procedimiento en dispositivos Linux.
Inicialmente, debemos instalar la última versión de Java, o la versión de java con la cual se corresponda la versión del servidor que vayamos a ejecutar:
sudo apk add openjdk<NÚMERO DE VERSIÓN>-jdk
Posteriormente, descargaremos la versión de minecraft que deseamos ejecutar, esto con el comando:
wget <LINK DEL ARCHIVO>
Sabiendo que el Link podemos obtenerlo en click izquierdo en el botón de descarga de la versión y seleccionando "copiar enlace".
Posterior a esto, debemos iniciar el servidor por primera vez con el comando:
java -Xmx4G -Xms<NUMERO DE GB DE RAM DIRIGIDAS AL SERVIDOR>G -jar <NOMBRE DEL ARCHIVO>.jar nogui
Posterior a esto, debemos modificar el archivo eula.txt y poner en true su única variable, esto permitirá que al volver a ejecutar el mismo comando, nuestro servidor se ponga en marcha. Recuerda que en server.properties encontraremos la opción de habilitar a los usuarios que no jueguen en versiones de Minecraft compradas desactivando la opción de online-game y poniendo su valor en false.
Para acceder a sus servicios fuera de red, leer Conexión fuera de LAN.