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.

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

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

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

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

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

  6. Utilidades y adicionales

    1. Pueden abrir puertos sin problemas siempre y cuando sean del 1024 para arriba

    2. Creense un usuario no root para que puedan usarlo con una sesión remota de ssh.

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

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