Problemas con la red Chroot de Android

Problemas con la red Chroot de Android

Estoy intentando hacer chroot en la imagen de Ubuntu 16.04 que Nvidia tiene para desarrollar en el escudo. Lo coloqué en una tarjeta SD y lo monté en /mnt/chroots. No puedo hacer que apt-get update funcione sin fallar, el ping también falla. Se agradecería la ayuda.

cd rootfs
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
mount -o bind /dev/pts dev/pts/
chroot . /bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH

También agregué root a los grupos:

groupadd -g 3001 aid_net_bt_admin
groupadd -g 3002 aid_net_bt
groupadd -g 3003 aid_inet
groupadd -g 3004 aid_inet_raw
groupadd -g 3005 aid_inet_admin

gpasswd -a root aid_net_bt_admin
gpasswd -a root aid_net_bt
gpasswd -a root aid_inet
gpasswd -a root aid_inet_raw
gpasswd -a root aid_inet_admin

/etc/resolv.conf
nameserver 8.8.8.8

con /etc/init.d/networking inicio

root@localhost:/# apt-get update
Err:1 http://ports.ubuntu.com/ubuntu-ports xenial InRelease
Temporary failure resolving 'ports.ubuntu.com'
Err:2 http://ports.ubuntu.com/ubuntu-ports xenial-updates InRelease
Temporary failure resolving 'ports.ubuntu.com'
Err:3 http://ports.ubuntu.com/ubuntu-ports xenial-security InRelease
Temporary failure resolving 'ports.ubuntu.com'
Reading package lists... Done
W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports...nial/InRelease Temporary failure resolving 'ports.ubuntu.com'
W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports...ates/InRelease Temporary failure resolving 'ports.ubuntu.com'
W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports...rity/InRelease Temporary failure resolving 'ports.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.

Respuesta1

Tienes 2 problemas diferentes aquí.

  • apto para no resolver DNS
  • ping no funciona

-


APT NO RESUELVE DNS:

El problema es que APT utiliza _apt como nuestro usuario sin privilegios. En Android con red paranoica, solo los usuarios del grupo 3003 Aid_inet o 3004 Aid_inet_raw pueden abrir sockets de red. Cuando apt se instala, crea el usuario _apt.

    # add unprivileged user for the apt methods
     adduser --force-badname --system --home /nonexistent  \
       --no-create-home --quiet _apt || true

El usuario se ve así en /etc/passwd

    root@localhost:~
    # grep -E "_apt" /etc/passwd
    _apt:x:103:65534::/nonexistent:/bin/false

El formato de contraseña es

Nombre de usuario: Contraseña cifrada: Número de ID de usuario (UID): Número de ID de grupo del usuario (GID): Nombre completo del usuario (GECOS): Directorio de inicio del usuario: Shell de inicio de sesión

Al mirar al usuario _apt, el GID está configurado en 65534, lo que significa que no hay grupo; en sistemas Linux normales, esto está bien. En Android, este GID nunca podrá establecer conexiones de red. Es necesario cambiar el GID a 3003.

# usermod -g 3003 _apt cambiará GID

    root@localhost:~
    # grep -E "_apt" /etc/passwd
    _apt:x:103:3003::/nonexistent:/bin/false

Ahora APT funcionará en chroot de Android

PING NO FUNCIONA


Para mí, lo noté cuando hice chroot usando este ejemplo de comando

# chroot /linux /bin/bash -l

En Android, los grupos se usan, en cierta medida, para aplicaciones. Por lo tanto, bash de llamada raíz solo está en el grupo raíz; puede verificar esto mediante

    # groups
     root

grupos ejecutados sin nombre de usuario genera grupos de procesos actuales

Ahora prueba esto

# su - root

su comando es cambiar de usuario

    # groups
    root sdcard-rw aid_bt aid_bt-net aid_inet aid_net-raw aid_net_admin

Ahora el ping funcionará

ahora uso

# chroot /linux /bin/su - root

que inicia sesión como root desde Linux, no como root desde Android

información relacionada