Niedawno zrootowałem mojego Droida X i wszystko wydaje się działać idealnie. Zrobiłem kilka zmian build.prop
i kiedy zrobić adb push build.prop /system/
pojawia się następujący błąd: failed to copy 'c:\build.prop' to '/system//build.prop': Read-only file system
.
Jak mogę to naprawić?
adb remount
, co dostajesz?Odpowiedzi:
Nie wszystkie telefony i wersje Androida mają takie same elementy.
Najlepszym rozwiązaniem byłoby ograniczenie opcji przy ponownym montażu.
Wystarczy zamontować ponownie jako rw (odczyt / zapis):
Po zakończeniu wprowadzania zmian podłącz ponownie do ro (tylko do odczytu):
źródło
adb root
lub otrzymasz Odmowę dostępu podczas wypychania pliku.Balazss-MBP:tools varh1i$ adb shell
generic_x86_64:/ # mount -o rw,remount /system
'/dev/block/vda' is read-only
mv hosts /system/etc/hosts
działa dla mnie i wydaje się być najprostszym rozwiązaniem.
źródło
Not running as root. Try "adb root" first.
. A potemadbd cannot run as root in production builds
.$ adb disable-verity
uruchomić urządzenie, zanim będziemy mogli uruchomić$ adb remount
Not running as root. Try "adb root" first.
. Wszedłemadb root
, a następnie ponownieadb remount
, ale wciąż ten sam błąd:Not running as root. Try "adb root" first.
Mam to na forum Androida, na którym zadałem to samo pytanie. Mam nadzieję, że to pomaga komuś innemu.
W emulatorze terminali w telefonie:
Następnie w wierszu polecenia cmd wykonaj
adb push
źródło
adb shell <command>
może być używany z komputera (jeśli brakuje terminala w telefonie)Chociaż wiem, że pytanie dotyczy prawdziwego urządzenia, na wypadek gdyby ktoś tu dotarł z podobnym problemem w emulatorze, niezależnie od tego, jakie narzędzia są najnowsze od lutego 2017 r., Emulator należy uruchomić z wiersza polecenia za pomocą:
Aby cokolwiek było zapisywalne w
/system
. Bez tej flagi żadna kombinacjaremount
animount
nie pozwoli na pisanie/system
.Po uruchomieniu emulatora z tą flagą, jeden
adb remount
poadb root
wystarcza, aby uzyskać uprawnienia do push to/system
.Oto przykład wiersza polecenia, którego używam do uruchomienia emulatora:
Wartość
-avd
flag pochodzi z:źródło
Myślę, że najbezpieczniejszym sposobem jest ponowne zamontowanie systemu / do odczytu i zapisu przy użyciu:
a po zakończeniu zamontuj go jako tylko do odczytu:
źródło
Na moim Samsungu Galaxy mini S5570 (po rootowaniu na telefonie komórkowym):
Pięść jako root uruchomiłem:
jako zwykły użytkownik:
Udziel uprawnień root na ekranie dotykowym
wypisz wszystkie punkty montowania, które mamy, i możemy zobaczyć, w moim przypadku, że / dev / stl12 został zamontowany w / systemie jako ro (tylko gotowy), więc wystarczy:
źródło
Spróbuj wykonać następujące czynności w wierszu polecenia:
źródło
adb root remount
To działa dla mnie i jest najprostszym rozwiązaniem.
źródło
Oto, co zadziałało dla mnie. Pracowałem na emulowanym urządzeniu z Androidem 7.1.1 (Nougat).
Na terminalu nacisnąłem następujące polecenie. Należy zwrócić uwagę na flagę -writable-system
Na innej karcie
Wszystkie zmiany dokonane w treści / system przetrwają restart.
źródło
Sprawdziłem za pomocą emulatora i działało.
Jak wspomniano powyżej, wykonaj drugi krok w pojedynczym ujęciu.
źródło
Otwórz emulator terminala w telefonie: następnie
po uruchomieniu tego demona
następnie tylko odczyt jest konwertowany na odczyt-zapis.
źródło
pracuje dla mnie
źródło
źródło
Znalazłem ten artykuł w Google i pomyślałem, że dodam kroki niezbędne w Sony Xperia Z (4.2.2).
Sony ma proces kontrolny, który wykrywa, kiedy zmieniłeś ro na rw na / i / system (tylko te próbowałem zmodyfikować) i ewentualnie inne.
Oto, co pobiegłem, aby wykonać zmiany, które starałem się osiągnąć. Wkleiłem je do okna, ponieważ usunięcie bitu wykonawczego z / sbin / ric musi być wykonane szybko, aby zatrzymać jego ponowne uruchamianie. (Próbowałem
stop ric
; to nie działa - chociaż działało na poprzedniej wersji Androida na telefon).Zmodyfikowałem tutaj plik hosts, więc w tym miejscu dokonujesz potrzebnych zmian w systemie plików. Aby pozostawić rzeczy tak, jak je znaleźliśmy, wykonaj następujące czynności:
W którym momencie ric powinien się automatycznie zrestartować. (Uruchomił się dla mnie automatycznie).
źródło
Dodając jeszcze trochę do odpowiedzi Jana Bergströma: Ponieważ Android jest systemem opartym na Linuksie, a ścieżka w Linuksie zawiera ukośniki do przodu (../), używając polecenia push, użyj „/”, aby zdefiniować ścieżkę docelową na urządzeniu z Androidem.
Na przykład polecenie brzmi: adb push C: \ Users \ admin \ Desktop \ 1.JPG sdcard / pictures /
Zauważ, że tutaj ukośniki wsteczne służą do zdefiniowania ścieżki źródłowej pliku, który ma być wypchnięty z komputera z systemem Windows, a ukośniki do przodu są używane do zdefiniowania ścieżki docelowej, ponieważ Android jest systemem opartym na systemie Linux. Nie musisz działać jako root, aby użyć tego polecenia, a także działa doskonale doskonale na urządzeniach produkcyjnych.
źródło
Czasami pojawia się błąd, ponieważ docelowa lokalizacja w telefonie nie istnieje. Na przykład
/storage/emulated/legacy
zamiast zewnętrznego miejsca do przechowywania niektórych telefonów z Androidem/storage/emulated/0
.źródło
Dzięki, Sérgio , za polecenie „mount” bez pomysłu na parametry. Że muszę się
adb push
do/data/data/com.my.app/lib
jakiegoś problemu badawczego i dostać „tylko do odczytu systemu plików” wiadomości.Polecenie ls pokazuje mi:
root@android:/ # ls -l /data/data/com.my.app/
drwxrwx--x u0_a98 u0_a98 2016-05-06 09:16 cache drwxrwx--x u0_a98 u0_a98 2016-05-06 09:04 files lrwxrwxrwx system system 2016-05-06 11:43 lib -> /mnt/asec/com.my.app-1/lib
Rozumie się zatem, że katalog „lib” jest oddzielony od innych katalogów aplikacji.
Polecenie
mount -o rw,remount /mnt/asec
nie rozwiązało problemu „r / o fs”, wymaga parametru urządzenia przed parametrem katalogu.Polecenie „df” również nie pomogło, ale pokazuje, że mój
/mnt/asec/com.my.app-1
katalog znajduje się w osobnym punkcie montowania.Potem patrzę
mount
i voila!root@android:/ # mount ......... /dev/block/dm-4 /mnt/asec/com.my.app-1 ext4 ro,dirsync,relatime 0 0
Kolejne kroki są już opisane w górę: podłącz ponownie do RW, wciśnij i ponownie podłącz do RO.
źródło
sames, które muszą wyodrębnić i przepakować initrc.img i edytować
init
plik z kodem mount / systemźródło
Skopiować pliki na kartę SD?
Zakładam, że lubisz kopiować dane na kartę SD z komputera programisty? Być może zrootowałeś urządzenie i udostępniłeś adresowany obszar?) Miałem mniej więcej ten sam problem z przesyłaniem plików danych dla mojej aplikacji (Android Studio 1.3.2 w Win7), ale.
Na przykład polecenie adb może wyglądać następująco:
adb push C: \ testdata \ t.txt /sdcard/download/t.txt
źródło
Jeśli kopiowanie pliku tylko do odczytu nie powiedzie się, możesz spróbować zlokalizować oryginalny plik w katalogu głównym i zmodyfikować go za pomocą edytora tekstu root (najlepiej) edytora tekstu RB, jest on dostarczany z aplikacją ROM Toolbox.
źródło
Wypróbuj to w emulatorze terminali jako root:
źródło
W moim przypadku korzystałem z polecenia adb push
~/Desktop/file.txt ~/sdcard/
Zmieniłem to
~/Desktop/file.txt /sdcard/
i wtedy zadziałało.Pamiętaj, aby odłączyć i ponownie podłączyć telefon.
źródło
Jak wspomniano chen-xing, najprostszym sposobem jest:
Ale dla mnie najpierw musiałem zmienić ustawienia:
Ustawienia → Opcje programisty → Dostęp root
Upewnij się, że ADB ma dostęp do rootowania:
źródło