Android에서 읽기 전용 파일 시스템
나는 최근에 내 드로이드 X를 뿌리뽑았고 모든 것이 완벽하게 작동하는 것처럼 보입니다.몇 가지 변경 사항을 적용했습니다.build.prop
그리고 내가 할 때adb push build.prop /system/
과 같은 오류가 합니다.failed to copy 'c:\build.prop' to '/system//build.prop': Read-only file system
.
이걸 어떻게 고칠 수 있을까요?
모든 전화기와 안드로이드 버전이 동일하게 탑재되지는 않습니다.
재마운트 시 옵션을 제한하는 것이 가장 좋습니다.
rw(읽기/쓰기)로 다시 마운트하기만 하면 됩니다.
# mount -o rw,remount /system
변경이 완료되면 ro(읽기 전용)로 다시 마운트합니다.
# mount -o ro,remount /system
adb remount
가장 간단한 해결책인 것 같습니다.
실제 장치에 대한 질문인 것은 알고 있지만, 에뮬레이터에서 유사한 문제가 발생한 경우 2017년 2월 현재 최신 툴이 무엇이든 에뮬레이터를 명령줄에서 실행해야 합니다.
-writable-system
에 쓸 수 것./system
이 플래그가 없으면 다음의 조합이 없습니다.remount
또는mount
에게 편지를 쓸 수 있도록 허락할 것입니다./system
.
해당 플래그와 함께 에뮬레이터가 실행된 후 단일adb remount
나고끝 adb root
수 에 충분합니다./system
.
다음은 에뮬레이터를 실행하는 데 사용하는 명령줄의 예입니다.
./emulator -writable-system -avd Nexus_5_API_25 -no-snapshot-load -qemu
값-avd
플래그 출처:
./emulator -list-avds
제가 같은 질문을 했던 안드로이드 포럼에서 이것을 가져왔습니다.이것이 다른 누군가에게 도움이 되기를 바랍니다.
전화기의 터미널 에뮬레이터에서:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
그런 다음 cmd 프롬프트에서 다음을 수행합니다.adb push
가장 안전한 방법은 다음을 사용하여 /시스템을 읽기-쓰기로 다시 마운트하는 것입니다.
mount -o remount,rw /system
완료되면 읽기 전용으로 다시 마운트합니다.
mount -o remount,ro /system
adb disable-verity
adb reboot
adb root
adb remount
이것은 저에게 효과가 있고 가장 간단한 해결책입니다.
내 삼성 갤럭시 미니 S5570에서 (휴대폰에 뿌리를 내린 후):
첫째, 뿌리로서, 나는 달렸습니다:
systemctl start adb
일반 사용자:
adb shell
su
터치 스크린에 루트 권한 부여
mount
모든 마운트 지점을 나열합니다. 이 경우 /dev/stl12가 /system에 ro(ready only)로 마운트되었음을 알 수 있으므로 다음 작업만 수행하면 됩니다.
mount -o rw,remount /dev/stl12 /system
명령 프롬프트에서 다음을 시도합니다.
>adb remount
>adb push framework-res_old.apk /system/framework-res.apk
여기 제게 효과가 있었던 것이 있습니다.저는 에뮬레이션된 Android 7.1.1(Nougat) 장치를 실행하고 있었습니다.
단말기에서 다음 명령을 누릅니다.한 가지 주의할 점은 -writable-system 플래그입니다.
./emulator -writable-system -avd Nexus_6_API_25 -partition-size 280
다른 탭에서
./adb shell
su
mount -o rw,remount -t ext4 /dev/block/vda /system
/system 컨텐츠에서 수행한 모든 변경 내용은 다시 시작해도 유지됩니다.
에뮬레이터와 following 작업을 확인했습니다.
- adb reboot
- adb 루트 & & adb 마운트 & adb 푸시 ~/데스크톱/호스트/시스템/etc/호스트
위에서도 언급했듯이 싱글샷으로 두 번째 단계를 실행합니다.
전화기에서 터미널 에뮬레이터를 엽니다. 그러면
adb shell
데몬이 시작된 후
su
mount -o rw,remount /mnt/sdcard
그러면 읽기 전용이 읽기-쓰기로 변환됩니다.
전화기의 대상 위치가 존재하지 않기 때문에 오류가 발생할 수 있습니다.들어 는 예를들어, 안이드폰외위는저입니다./storage/emulated/legacy
에 /storage/emulated/0
.
mount -o rw,remount /dev/stl12 /system
나에게 효과가 있습니다.
This worked for me
#Mount as ReadOnly
su -c "mount -o rw,remount /system"
# Change Permission for file
su -c "chmod 777 /system/build.prop"
#Edit the file to add the property
su -c "busybox vi /system/build.prop"
# Add now
service.adb.tcp.port=5678
# Reset old permissions
su -c "chmod 644 /system/build.prop"
# Mount as readonly again once done
su -c "mount -o ro,remount /system"
저는 구글에서 이 기사를 찾았고, 소니 엑스페리아 Z(4.2.2)에 필요한 단계를 추가하려고 생각했습니다.
Sony는 당신이 / 및 /시스템(내가 수정하려고 했던 유일한 것들)과 다른 것들을 언제 변경했는지 감지하는 워치독 프로세스를 가지고 있습니다.
다음은 제가 달성하고자 했던 변화를 수행하기 위해 실행한 것입니다./를 제거하는 시작할 수 있기 /sbin/ric의 실행 비트가 자동으로 다시 시작되지 않도록 .stop ric
이것은 작동하지 않습니다 - 전화기의 이전 버전의 안드로이드에서 작동했지만).
pkill -9 ric; mount -o rw,remount -t rootfs /
chmod 640 /sbin/ric
mount -o rw,remount /system
여기서 호스트 파일을 수정했으므로 파일 시스템에 필요한 내용을 변경할 수 있습니다.찾은 대로 그대로 두려면 다음을 수행합니다.
mount -o ro,remount /system
chmod 750 /sbin/ric
mount -o ro,remount -t rootfs /
Ric이 자동으로 다시 시작되어야 하는 시점입니다. (나를 위해 자동으로 다시 시작되었습니다.)
Jan Bergström의 답변에 조금 더 추가: Android는 Linux 기반 시스템이고 Linux의 경로에는 슬래시(.../)가 포함되어 있기 때문에 push 명령을 사용하면서 "/"를 사용하여 Android 장치에서 대상 경로를 정의합니다.
예를 들어 명령은 다음과 같습니다. adb push C:\Users\admin\데스크탑\1.JPG sdcard/사진/
여기서 백슬래시는 Windows PC에서 푸시할 파일의 원본 경로를 정의하는 데 사용되고 포워드슬래시는 Android가 Linux 기반 시스템이기 때문에 대상 경로를 정의하는 데 사용됩니다.이 명령을 사용하기 위해 루트 역할을 할 필요가 없으며 프로덕션 장치에서도 완벽하게 작동합니다.
세르지오, 매개변수 개념 없이 "탑재" 명령에 감사드립니다.제가 만들어야 할 것 같아요.adb push
안으로/data/data/com.my.app/lib
일부 테스트 문제의 경우 "읽기 전용 파일 시스템" 메시지가 표시됩니다.
ls 명령은 다음을 표시합니다.
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
따라서 "lib" 디렉터리는 다른 응용 프로그램 디렉터리와 분리됩니다.
명령mount -o rw,remount /mnt/asec
"r/of" 문제를 해결하지 못했습니다. 디렉터리 매개 변수보다 장치 매개 변수를 먼저 사용합니다.
"df" 명령도 도움이 되지 않았지만, 내가 사용한 것을 보여줍니다./mnt/asec/com.my.app-1
디렉터리가 별도의 마운트 지점에 있습니다.
그럼 옆을 봐요mount
그리고 voila!
root@android:/ # mount ......... /dev/block/dm-4 /mnt/asec/com.my.app-1 ext4 ro,dirsync,relatime 0 0
다음 단계는 이미 위쪽에 설명되어 있습니다. RW에 다시 마운트하고 RO에 푸시했다가 다시 마운트하는 것입니다.
initrc.img를 추출하고 다시 포장하여 편집해야 하는 것과 동일합니다.init
마운트/시스템 코드가 있는 파일
SD 카드에 파일을 복사하시겠습니까?
글쎄요, 당신은 개발자 컴퓨터에서 SD 카드로 데이터를 복사하는 것을 좋아하는 것 같은데요?당신은 그 장치를 뿌리뽑고 당신이 주소를 쓰는 지역을 이용할 수 있게 만들었을 수도 있습니다.)애플리케이션(Win7의 Android Studio 1.3.2)의 데이터 파일을 업로드하는 데 거의 같은 문제가 있었습니다.
- 먼저 adb 명령 셸을 경로에서 찾아야 합니다. PATH=%PATH%;C:\Users\XXXX\AppData\Local\Android\sdk\platform-tools(AppData 폴더는 숨겨졌으므로 숨김 파일 및 폴더를 숨기지 않고 폴더 설정을 설정해야 찾을 수 있습니다. 경로는 상관없이 작동합니다.)
- 폴더 경로의 철자를 올바르게 입력해야 합니다. 그렇지 않으면 읽기 전용 오류 메시지가 표시됩니다. 대부분의 경우 /sdcard로 시작하거나 읽기 전용 영역이어야 합니다.파일을 에뮬레이터에 푸시하는 데 문제가 없자 마자.
예를 들어 adb 명령은 다음과 같습니다.
adb push C:\testdata\txt /sdcard/download/t.txt
읽기 전용 파일을 복사하는 데 오류가 발생하면 루트 디렉터리에서 원본 파일을 찾고 루트 텍스트 편집기(권장) RB 텍스트 편집기로 수정할 수 있습니다. ROM Toolbox 앱이 함께 제공됩니다.
터미널 에뮬레이터에서 루트로 사용해 보십시오.
restorecon -v -R /data/media
제 경우에는 adb push 명령을 사용했습니다.~/Desktop/file.txt ~/sdcard/
로 변경했습니다.~/Desktop/file.txt /sdcard/
그리고 효과가 있었습니다.
전화기의 연결을 끊었다가 다시 연결해야 합니다.
Ashen-xing이 언급한 가장 간단한 방법은 다음과 같습니다.
adb reboot
하지만 저는 먼저 설정을 변경해야 했습니다.
설정 → 개발자 옵션 → 루트 액세스
ADB에 루트 액세스 권한이 있는지 확인합니다.
난 단지 이것만 필요했을 뿐입니다.
su -c "mount -o rw,remount /system"
언급URL : https://stackoverflow.com/questions/6066030/read-only-file-system-on-android
'programing' 카테고리의 다른 글
하나의 열이 보기에 다른 데이터 정렬로 끝납니다. (0) | 2023.08.24 |
---|---|
Git 원격:오류: 치명적: 프로토콜 오류: 잘못된 줄 길이 문자: Unab (0) | 2023.08.24 |
jQuery: $().click(fn) 대 $().bind('click',fn); (0) | 2023.08.24 |
git branch -d는 경고를 줍니다. (0) | 2023.08.19 |
mariadb JDBC 드라이버를 사용하여 로그인하면 SQLNonTransientConnection이 생성됩니다.예외. (0) | 2023.08.19 |