首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Chroot网络问题

问Android Chroot网络问题
EN

Unix & Linux用户
提问于 2016-11-06 20:18:25
回答 1查看 4.2K关注 0票数 4

我正在尝试着色Ubuntu16.04图像Nvidia的发展上的盾牌。我把它放在一个安装在/mnt/chroots上的sdcard上,我无法获得apt-获得更新而不失败,ping也失败了。我会感谢你的帮助。

代码语言:javascript
复制
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

此外,我还将根添加到组中:

代码语言:javascript
复制
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

与/etc/init.d/联网开始

代码语言:javascript
复制
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.
EN

回答 1

Unix & Linux用户

发布于 2017-02-20 03:44:30

你在这里有两个不同的问题

  • 不解析DNS
  • 平不工作

-

不解析DNS:

问题是,APT使用_apt作为我们的非特权用户。在具有偏执网络的安卓系统上,只有3003 aid_inet或3004 aid_inet_raw的用户才能打开网络套接字。当apt安装时,它会创建用户_apt。

代码语言:javascript
复制
    # add unprivileged user for the apt methods
     adduser --force-badname --system --home /nonexistent  \
       --no-create-home --quiet _apt || true

用户在/etc/passwd中如下所示

代码语言:javascript
复制
    root@localhost:~
    # grep -E "_apt" /etc/passwd
    _apt:x:103:65534::/nonexistent:/bin/false

passwd格式

用户名:加密密码:用户ID号码(UID):用户组ID号(GID):用户全名(GECOS):用户主目录:登录外壳

查看_apt用户,GID设置为65534,这意味着没有组,在正常的linux系统上,这是很好的。在Android上,这个GID将永远无法使网络连接需要将GID更改为3003。

# usermod -g 3003 _apt将更改GID

代码语言:javascript
复制
    root@localhost:~
    # grep -E "_apt" /etc/passwd
    _apt:x:103:3003::/nonexistent:/bin/false

现在APT将在Android chroot上工作。

PING不工作

对于我来说,当我使用这个命令示例时,我注意到了

# chroot /linux /bin/bash -l

在Android系统中,有一些是用于应用程序的。所以root调用bash只在根组中,您可以通过

代码语言:javascript
复制
    # groups
     root

未输出用户名的组运行当前进程组。

现在试试这个

# su - root

su通讯是交换机用户

代码语言:javascript
复制
    # groups
    root sdcard-rw aid_bt aid_bt-net aid_inet aid_net-raw aid_net_admin

现在ping可以工作了

我现在用

# chroot /linux /bin/su - root

从linux作为root登录,而不是从Android登录。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/321491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档