У вас есть 2 разные проблемы
Проблема в том, что APT использует _apt в качестве нашего непривилегированного пользователя. На Android с параноидальной сетью только пользователи из группы 3003 aid_inet или 3004 aid_inet_raw могут открывать сетевые сокеты. При установке apt создает пользователя _apt.
# add unprivileged user for the apt methods
adduser --force-badname --system --home /nonexistent \
--no-create-home --quiet _apt || true
Пользователь выглядит так в / etc / passwd
root@localhost:~
# grep -E "_apt" /etc/passwd
_apt:x:103:65534::/nonexistent:/bin/false
Формат passwd:
Имя пользователя: Зашифрованный пароль: Идентификационный номер пользователя (UID): Идентификационный номер группы пользователей (GID): Полное имя пользователя (GECOS ): Домашний каталог пользователя: Оболочка входа
, смотрящая на пользователя _apt, GID установлен на 65534, что означает отсутствие группы, в обычных системах Linux это нормально.На Android этот GID никогда не сможет устанавливать сетевые подключения Необходимо изменить GID на 3003
# usermod -g 3003 _apt
изменит GID
root@localhost:~
# grep -E "_apt" /etc/passwd
_apt:x:103:3003::/nonexistent:/bin/false
Теперь APT будет работать на Android chroot
Я заметил, что когда я chroot использовал этот пример команды
# chroot / linux / bin / bash -l
В Android группы используются для приложений, в некоторой степени. Итак, root, вызывающий bash, находится только в корневой группе , вы можете проверить это по
# groups
root
группам, запущенным без имени пользователя, выводам текущих групп процессов
Теперь попробуйте это
# su - root
su command is switch user
# groups
root sdcard-rw aid_bt aid_bt-net aid_inet aid_net-raw aid_net_admin
Теперь ping будет работать
Теперь я использую
# chroot / linux / bin / su - root
, который входит в систему как root из Linux, а не как root из Android
{ {1}}