programing

Android에서 읽기 전용 파일 시스템

batch 2023. 8. 24. 21:53
반응형

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 작업을 확인했습니다.

  1. adb reboot
  2. 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에 루트 액세스 권한이 있는지 확인합니다.

enter image description here

난 단지 이것만 필요했을 뿐입니다.

su -c "mount -o rw,remount /system"

언급URL : https://stackoverflow.com/questions/6066030/read-only-file-system-on-android

반응형