【问题标题】:How to change the hosts file on android [closed]如何更改android上的主机文件[关闭]
【发布时间】:2011-10-17 13:43:12
【问题描述】:

我已经成功地将我的三星 Galaxy Mini (android 2.2.1) 植根,并认为我可以改变任何东西(就像 root 通常可以)。

我想更改 android 上的 hosts 文件,以包含一些本地地址。但是,我仍然收到我无权执行此操作的消息。我尝试了以下选项:

  1. adb push /path/to/my/new/hosts /system/etc ... 我收到了回复 Read-only file system

  2. 直接在手机壳里。但这也不起作用。我可以在控制台中执行su,但不能更改文件。

很奇怪,作为超级用户,我不允许更改某些文件?

【问题讨论】:

    标签: android hosts


    【解决方案1】:

    你有root,但你仍然需要重新挂载/system才能读/写

    $ adb shell
    $ su
    $ mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
    

    点击此处了解更多信息:Mount a filesystem read-write

    【讨论】:

    • 不能 adb 直接做这个吗?用法说明:adb remount - remounts the /system partition on the device read-write
    • 如果你有root,你可以通过以下命令找到/system路径和fs类型:adb shell su -c cat /proc/mounts
    • @gsingh2011: adb remount 给我错误remount failed: Operation not permittedadb root 在我解锁的 Nexus 4 上给我错误adbd cannot run as root in production builds。如果你知道如何让 adb remount 工作,我'我很想听。
    • @ClaytonHughes 我知道这已经过时了,但对于未来的线程爱好者来说,adb root && adb remount 在 Nexus 7 (2013) 上的 CM10.2 上对我来说很好用。
    • 它仍然对我不起作用,即使重新挂载和 root。
    【解决方案2】:
    adb shell
    su
    mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
    

    这假设您的 /system 是 yaffs2 并且它位于 /dev/block/mtdblock3 上,在大多数 Android 手机上更简单/更好的方法是:

    adb shell
    su
    mount -o remount,rw /system
    

    完成。这只是说重新挂载/系统读写,您不必指定文件系统或挂载位置。

    【讨论】:

    • 在我的设备上(带有 2.6.35.7-g9f70789 的里程碑 3)“设备”是挂载的必需参数。不过,我可以省略 -t yaffs2。
    • mount -o remount,rw /system 为我工作;另一个命令,mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system 导致:mount: Permission denied
    • 请注意,我需要在 Nexus 5X 中执行 mount -o rw,remount /systemremount,rw 会出现“设备或资源繁忙”错误。)
    • 这很好用。
    【解决方案3】:

    这在我的情况下并没有真正起作用 - 即为了覆盖主机文件,您必须遵循它的指示,即:

    ./emulator -avd myEmulatorName -partition-size 280
    

    然后在其他术语窗口中(推送新的主机文件/tmp/hosts):

    ./adb remount
    ./adb push /tmp/hosts /system/etc
    

    【讨论】:

    • 确实如此,但这仅适用于模拟器。我正在使用有根手机(三星 Galaxy Mini,虽然我认为它是什么手机并不重要)。在物理设备上,您必须重新挂载系统分区。
    • 你说得对,我只在模拟器上测试过。很高兴知道,谢谢。
    • 不适用于最新的 sdk (4.0.x) ./adb push /etc/hosts /system/etc 无法将 '/etc/hosts' 复制到 '/system/etc/hosts' : 内存不足
    • Mariuz - 谢谢,很高兴知道。我是在 2.3 上做的。
    • 这是一个较旧的线程,但如果您在启动模拟器时不指定“-no-snapstorage”,您可能会启动没有分区大小的快照,这毫无价值。在添加“-no-snapstorage”之前,我遇到了同样的问题
    【解决方案4】:

    可能最简单的方法是使用这个应用程序Hosts Editor。你需要有根

    【讨论】:

    • 当然,但问题的描述以“我已成功植根三星 Galaxy Mini”开头,所以这应该不是问题。
    • 据我所知,这个应用程序只允许您一次编辑一个条目。我想读入一个 10MB 的新主机文件。
    猜你喜欢
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    相关资源
    最近更新 更多