[Android] '/dev/block/dm-0' is read-only 해결

[분석환경]
OSX, Android Emulator API 33

이 글은 안드로이드 모의해킹 카테고리 중 트러블슈팅을 위한 글입니다.

문제 1. Read only filesystem

해결 1.

adb 내에서 다음 절차를 진행한다. 전체 파일 시스템을 읽기쓰기 가능한 모드로 리마운트 시켜준다.

mount -o rw,remount /

문제 2. '/dev/block/dm-4' is read-only

해결 2-1.

에뮬레이터 환경에서 실제 기기와 다른 경로에 파일시스템이 마운트되어 있는 경우 위와 같은 에러가 발생한다.

> adb root
> adb shell avbctl disable-verification
Successfully disabled verification. Reboot the device for changes to take effect.
> adb disable-verity
using overlayfs
Successfully disabled verity
Now reboot your device for settings to take effect
> adb reboot
> adb root && adb remount
remount succeeded
> adb push ScreenCap.apk /system/app/
ScreenCap.apk: 1 file pushed. 33.1 MB/s (1640812 bytes in 0.047s)
> adb reboot

해결 2-2.

해결이 되지 않는다면 AVD(안드로이드 가상 머신)을 명령행 도구로 쓰기 가능한 모드로 실행시켜야 한다.

먼저 명령어만 따라할 경우 다음과 같이 진행한다.

> emulator -avd Pixel_3a_XL_API_30 -writable-system
> adb shell avbctl disable-verification
> adb disable-verity
> adb root
> adb remount
> adb shell "su 0 mount -o rw,remount /system"

부가설명은 다음과 같다.

emulator를 실행하기 위해 환경변수 등록이 필요하다. 실행중인 쉘에서 입력해도 되고, 쉘 설정파일(.bashrc, .zshrc)에 다음과 같이 작성한다. 입력한 후에는 쉘을 재시작하면 적용된다.

$ANDROID_HOME 내에는 두 개의 emulator 바이너리가 있으므로 환경변수 순서를 잘 구분해야 한다.

export ANDROID_HOME="/Users/{USER}/Library/Android/sdk"
export PATH=$PATH:$ANDROID_HOME/platform-tools/
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools

Android Studio에서 생성한 에뮬레이터는 ./android/avd 경로에 위치한다. 이 경로로 이동한다.

cd ./android/avd

에뮬레이터 목록을 확인하고 쓰기가능한 모드로 실행한다.

emulator -list-avds
emulator -avd [생성한 에뮬레이터] -writable-system

 


참고

https://android.stackexchange.com/questions/186630/android-o-failed-to-mount-system-dev-block-dm-0-is-read-only

 

Android O, failed to mount /system, /dev/block/dm-0 is read only

I try to mount /system in Android O to RW using the command mount -o rw,remount /system, and i got this feedback on terminal dev/block/dm-0 is read-only *Already in adb root Any idea? Thanks

android.stackexchange.com

 

반응형