Как изменить файл hosts на Android

Я успешно рутировал свой Samsung Galaxy Mini (android 2.2.1) и думал, что могу что-то изменить (как обычно может root).

Я хотел бы изменить файл hosts на андроиде, чтобы включить некоторые локальные адреса. Тем не менее, я все еще получаю сообщение о том, что у меня нет разрешения на это. Я пробовал следующие варианты:

  1. adb push /path/to/my/new/hosts /system/etc ... и я получил ответ Read-only file system.

  2. прямо в оболочке на телефоне. Но и это не сработало. Я могу сделать su в консоли, но не могу изменить файл.

Не странно ли, что мне как суперпользователю не разрешено изменять некоторые файлы?


person Filip Majernik    schedule 17.10.2011    source источник


Ответы (4)


У вас есть root, но вам все равно нужно перемонтировать /system для чтения/записи

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

Перейдите сюда для получения дополнительной информации: Подключение файловой системы для чтения и записи< /а>.

person Leif Andersen    schedule 17.10.2011
comment
Не может adb сделать это напрямую? Использование показывает: adb remount - remounts the /system partition on the device read-write - person gsingh2011; 29.12.2012
comment
Если у вас есть root, вы можете узнать путь /system и тип fs с помощью: adb shell su -c cat /proc/mounts - person greg7gkb; 14.03.2013
comment
@gsingh2011: adb remount выдает ошибку remount failed: Operation not permitted, а adb root выдает ошибку adbd cannot run as root in production builds на моем разблокированном Nexus 4. Если вы знаете, как заставить adb remount работать, я бы хотел это услышать. - person Clayton Hughes; 18.04.2013
comment
@ClaytonHughes Я знаю, что это устарело, но для будущих любителей тем: adb root && adb remount отлично работает для меня на CM10.2 на Nexus 7 (2013). - person Brandon; 17.11.2013
comment
На моем Samsung Galaxy Core с Android 4.1.2 «su: не найдено». Любые идеи? - person barbaris; 03.05.2014
comment
Спасибо за напоминание @naXa. Но чтобы снова сделать его доступным только для чтения, используйте mount -o ro,remount /system. - person Tyler Collier; 17.08.2014
comment
@TylerCollier Конечно ... глупая ошибка копирования и вставки в комментарии.) Когда закончите, не забудьте снова перемонтировать раздел только для чтения из соображений безопасности. Правильная команда mount -o ro,remount /system - person naXa; 22.08.2014
comment
У меня все еще не работает, даже с перемонтированием и рутом. - person JohnyTex; 28.10.2014
comment
У меня не работает, есть ли какие-то дополнительные исправления? - person Nguyen Minh Binh; 12.05.2016
comment
@Tyler, спасибо за напоминание. Идеальный ответ может включать эту информацию. - person voices; 26.12.2018

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

Это предполагает, что ваша /система - это yaffs2 и что она находится в /dev/block/mtdblock3. Более простой/лучший способ сделать это на большинстве телефонов Android:

adb shell
su
mount -o remount,rw /system

Сделанный. Это просто говорит о перемонтировании /системе для чтения и записи, вам не нужно указывать файловую систему или место монтирования.

person Paul    schedule 05.01.2012
comment
На моем устройстве (Milestone 3 с 2.6.35.7-g9f70789) параметр device является обязательным для монтирования. Однако я смог пропустить -t yaffs2. - person Simon Woodside; 22.05.2012
comment
mount -o remount,rw /system у меня работало; другая команда, mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system, привела к: mount: Permission denied. - person KajMagnus; 05.01.2014
comment
Обратите внимание, что мне нужно сделать mount -o rw,remount /system в Nexus 5X (remount,rw получит сообщение об ошибке "Устройство или ресурс занято".) - person Fruit; 21.11.2017
comment
Это хорошо работает. - person voices; 26.12.2018

В моем случае это не сработало, т.е. чтобы перезаписать файл hosts, вы должны следовать его указаниям, то есть:

./emulator -avd myEmulatorName -partition-size 280

а затем в другом окне термина (нажимая файл нового хоста /tmp/hosts):

./adb remount
./adb push /tmp/hosts /system/etc
person dsomnus    schedule 23.11.2011
comment
Это верно, но это относится только к эмулятору. Я работал с рутированным телефоном (Samsung Galaxy Mini, хотя я думаю, что не так уж важно, какой это телефон). А на физическом устройстве приходится перемонтировать системный раздел. - person Filip Majernik; 24.11.2011
comment
Вы правы, я проверял это только на эмуляторе. приятно знать, спасибо. - person dsomnus; 13.12.2011
comment
Не работает с последней версией SDK (4.0.x). /adb push /etc/hosts /system/etc не удалось скопировать '/etc/hosts' в '/system/etc/hosts': недостаточно памяти - person Mariuz; 31.05.2012
comment
Мариуз - спасибо, приятно знать. я делал на 2.3. - person dsomnus; 13.06.2012
comment
@Mariuz, какое значение -partition-size вы использовали? У меня это сработало на эмуляторе 4.0.4, если я использовал значение больше 215 (что, как я полагаю, является размером system.img для AVD). - person Joe; 30.08.2012
comment
У меня работает нормально! Уровень API 15 - person Ashraf Sayied-Ahmad; 10.09.2012
comment
Это старый поток, но он ничего не стоит, если вы не укажете -no-snapstorage при запуске эмулятора, вы можете запустить моментальный снимок, который не будет иметь размер раздела. У меня была такая же проблема, пока я не добавил -no-snapstorage - person Nick Bork; 24.06.2013

Вероятно, самым простым способом было бы использовать это приложение Редактор хостов . У вас должен быть рут

person byroncorrales    schedule 11.07.2012
comment
Конечно, но описание вопроса начинается с того, что я успешно рутировал свой Samsung Galaxy Mini, так что это не должно быть проблемой. - person NiloVelez; 25.02.2014
comment
Насколько я могу судить, это приложение позволяет редактировать записи по одной. Я хотел бы прочитать новый хост-файл размером 10 МБ. - person jaybro; 08.01.2016