Problemas de rede Android Chroot

Problemas de rede Android Chroot

Estou tentando fazer o chroot da imagem do Ubuntu 16.04 que a Nvidia tem para desenvolver no escudo. Coloquei-o em um cartão SD montado em /mnt/chroots. Não consigo fazer o apt-get update funcionar sem falhar, o ping também falha. Ajuda seria apreciada.

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

Também adicionei root aos 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

com /etc/init.d/networking start

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.

Responder1

Você tem 2 problemas diferentes aqui

  • apt não resolvendo DNS
  • ping não funciona

-


APT NÃO RESOLVE DNS:

O problema é que o APT usa _apt como nosso usuário sem privilégios. No Android com rede paranóica, apenas usuários do grupo 3003 aid_inet ou 3004 aid_inet_raw podem abrir soquetes de rede. Quando o apt é instalado, ele cria o usuário _apt.

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

O usuário fica assim em /etc/passwd

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

formato de senha é

Nome de usuário: Senha criptografada: Número de ID do usuário (UID): Número de ID do grupo do usuário (GID): Nome completo do usuário (GECOS): Diretório inicial do usuário: Shell de login

olhando para o usuário _apt, o GID está definido como 65534, o que significa que não há grupo; em sistemas Linux normais, isso é bom. No Android, este GID nunca será capaz de fazer conexões de rede. É necessário alterar o GID para 3003

# usermod -g 3003 _apt mudará o GID

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

Agora o APT funcionará no Android chroot

PING NÃO FUNCIONA


Para mim, notei quando fiz chroot usando este exemplo de comando

# chroot /linux /bin/bash -l

No Android, grupos são usados ​​para aplicativos, de certa forma. Portanto, a chamada raiz do bash está apenas no grupo raiz, você pode verificar isso

    # groups
     root

grupos executados sem nome de usuário geram grupos de processos atuais

Agora tente isso

# su - root

su comando é mudar de usuário

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

Agora o ping funcionará

eu agora uso

# chroot /linux /bin/su - root

qual login como root do linux e não root do Android

informação relacionada