Android - Correr un Linux ARM nativo dentro
Acá describo los pasos necesarios para poder ejecutar una distribución Linux dentro de Android sin necesidad de root. Yo elegí la distribución Alpine pero ustedes pueden usar la que quieran, dentro del catálogo disponible claro.
-
Instalar Fdroid
Fdroid es una tienda de aplicaciones opensource (tanto las apps que almacena como la tienda en sí misma) con repositorio de código en;
https://github.com/f-droid
Para instalarlo van al siguiente enlace y instalan el archivo “apk”; https://f-droid.org/F-Droid.apk
-
Instalar Termux
Desde FDroid instalen Termux, un emulador de terminar con algunas utilidades de sistemas GNU/Linux. No recomiendo la versión que está en la Play Store, ya que esta tiene un teclado mucho peor, la versión proveniente de FDroid tiene un teclado con las teclas de; “tab”, “ctrl”, flechas de dirección (arriba, abajo, izquierda, derecha), “home”, “end”, “/”, “ESC”, “pgup” y “pgdown”
-
Instalar Andronix
Desde la Play Store instalen “Andronix - Linux on Android”
- https://play.google.com/store/apps/details?id=studio.com.techriz.andronix&hl=es_419&gl=US
-
Instalar una distribución
Abren “Andronix” y selecionan “Linux Distribution”
Les va aparecer el listado de distribuciones disponibles, yo voy a usar Alpine Linux (se encuentra debajo de todo).
Luego tienen que instalarlo, recomiendo que usen el “CLI Only” ya que a veces el Android no dejará que se inicien aplicaciones gráficas (por falta de memoria o por el contexto de seguridad de SELinux o Knox).
Luego en la pestaña “Termux Execution” seleccionan “Open Termux” y mantienen apretado sobre la shell para darle a “Pegar”/“Paste” y que les aparezca el comando para instalar el entorno de la distribución.
pkg update -y && pkg install wget curl proot tar -y && wget https://raw.githubusercontent.com/AndronixApp/AndronixOrigin/master/Installer/Alpine/alpine.sh -O alpine.sh && chmod +x alpine.sh && bash alpine.sh://raw.githubusercontent.com/AndronixApp/AndronixOrigin/master/Installer/Alpine/alpine.sh && chmod +x alpine.sh && bash alpine.sh
-
Entorno Linux
Con el comando que les da Andronix se instala todo lo necesario y luego se inicia el entorno de la distribución (en un chroot).
Pero no se puede hacer eso cada vez que quieren iniciar el Linux ya instalado, simplemente abren Termux y ejecutan;
./start_X.sh
Siendo X la distro que seleccionaron. Luego ya estarán dentro como usuario root;
-
Utilidades y adicionales
-
Pueden abrir puertos sin problemas siempre y cuando sean del 1024 para arriba
-
Creense un usuario no root para que puedan usarlo con una sesión remota de ssh.
-
Instalen y configuren openssh para que; use un puerto por arriba de 1024, prohiba el usuario root y otras hardenizaciones que quieran realizar
Primero hay que configurar las llaves internas de ssh;
ssh-keygen -A
Luego ya podemos configurar sshd (/etc/ssh/sshd_config);
Include /etc/ssh/sshd_config.d/*.conf Port 2280 AddressFamily any ListenAddress 0.0.0.0 ListenAddress :: #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key #HostKey /etc/ssh/ssh_host_ed25519_key PermitRootLogin no AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes PermitEmptyPasswords no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no PermitTTY yes PrintMotd yes
Una vez finalizado, se debe ejecutar por terminal (ya que no tenés un sysinit iniciado correctamente) con path absoluto;
/usr/sbin/sshd
Si no tira nada en la pantalla es que se inició bien.
-
Instalen “sudo” (en Alpine no conseguí que ande “doas”) y configurenlo (/etc/sudoers)
root ALL=(ALL:ALL) ALL [tu_usuario] ALL=(ALL:ALL) ALL @includedir /etc/sudoers.d
-