2014년 11월 29일 토요일

BlueStacks 루팅 방법

안드로이드 에뮬레이터가 여러 종류 있지만 시도해 본 것 중에서 유일하게 Play Store를 사용할 수 있는 것이 BlueStacks였다. 유료로 사는 것 중에 있는지도 모르지만 시도해 본 다른 에뮬레이터들은 모두 태블릿용으로 만들어져 있었다. 특히 핸드폰처럼 IMEI정보가 들어 있는 유일한 에뮬레이터가 BlueStacks였다.

BlueStacks를 루팅하는 방법은 아마도 안드로이드 핸드폰을 루팅하는 방법과 유사할 것으로 생각된다. 이 것을 루팅하는 방법에는 우분투를 사용하는 방법과 루팅툴을 이용한 방법이 있다. 루팅툴을 이용하는 방법은 버튼만 누르면 되기 때문에 간단하기는 했지만 루팅툴에서 시스템에 업데이트하는 파일의 버전을 알기 힘들고 실제로 해 보니 루팅은 되었으나 작동이 완벽하게 안되는 문제가 있었다, 또한 이 툴이 어떤 방식으로 루팅하는지 대략적으로 알려면 우분투를 이용한 루팅방법을 살펴 보는 것이 도움이 될 것 같다.

XDA-Developers 포럼에 올라 온 루팅방법을 정리하면 아래와 같다.


루팅에 필요한 것



1. BlueStacks 재설치

1. BlueStacks을 종료하고 "%programfiles%\BlueStacks\HD-Quit.exe"를 실행시킨다.
2. 작업관리자에서 HD-LogRotatorService.exe를 종료시킨다.
3. BlueStacks을 설치제거한다.
4. BlueStacks Notification Center를 제거한다. (데이터도 지우는 옵션으로 진행한다.)
5. C:\ProgramData\BlueStacksSetup 폴더를 지운다.
6. BlueStacks을 설치한다.


2. SuperSU apk 수정

1. SuperSu를 다운로드한다.
2. SuperSU 파일을 c:\pubuntu 폴더에 압축을 푼다.
3. 아래 파일을 c:\pubuntu 폴더로 옮긴다.
/common/Superuser.apk
/common/install-recovery.sh
/common/99SuperSUDaemon
/x86/su
4. busybox-i686를 다운로드해서 busybox로 이름을 바꾼 후 c:\pubuntu 폴더에 넣는다.
5. 7zip으로 Superuser.apk파일을 오픈한다.
6. /assets/chattr.x86.png 와 /assets/supersu.x86.png 파일을 임시폴더에 저장한다.
7. 두개 파일이름을 각각 chattr.arm.png 와 supersu.arm.png 로 바꾼다.
8. 두개 파일을 다시 Superuser.apk파일에 넣는다. 이미 있는 파일을 덮어 씌운다.
9. 파일을 저장하고 7zip을 종료한다.


3. initrd 수정

1. C:\ProgramData\BlueStacks 폴더 또는 C:\ProgramData\BlueStacks\Android 폴더를 오픈한다.
2. 7zip으로 initrd.img를 오픈한다.
3. initrd를 임시폴더에 압축을 풀어서 저장한다.
4. Notepad++ 소프트웨어를 사용해서 initrd를 오픈한다.
5. " ro "를 찾는다. (ro앞뒤에 공란이 있는 것을 찾는다.)
6. 두개가 있는데 첫번째 것을 " rw "로 바꾼다.
"Option: ro (read-only"로 시작하는 것은 아니다.
"try_mount ro $1 /mnt && [ -e /mnt/$SRC/ramdisk.img ]"와 유사한 것이 맞는 것이다.
7. initrd 를 저장하고 Notepad++를 종료한다.
8. initrd.img 파일을 7zip에 다시 넣고 저장한다.
9. 7zip을 종료한다.


4. 루팅

1. Portable Ubuntu를 오픈한다.
2. 터미널 윈도우를 오픈한다.
3. 아래 내용을 gedit를 이용해서 c.sh파일로 만든다.
4. sudo sh c.sh 로 실행시킨다. (pubuntu의 암호는 '123456'이다)

mkdir /n
mkdir /n/rootfs
mkdir /n/sfs
mkdir /n/img

e2fsck -f -y "/media/cofs2/ProgramData/BlueStacks/Android/Root.fs"resize2fs -f "/media/cofs2/ProgramData/BlueStacks/Android/Root.fs" 500Mmount -o loop "/media/cofs2/ProgramData/BlueStacks/Android/Root.fs" /n/rootfs

mount -o loop /n/rootfs/android/system.sfs /n/sfs
cp /n/sfs/system.img /n/rootfs/android
e2fsck -f -y /n/rootfs/android/system.img
resize2fs -f /n/rootfs/android/system.img 480M
umount /n/sfs
rm /n/rootfs/android/system.sfs
rmdir /n/sfs

mount -o loop /n/rootfs/android/system.img /n/img
mkdir /n/img/bin/.ext
mkdir /n/img/etc/init.d
cp "/media/cofs2/pubuntu/su" /n/img/xbin/daemonsu
cp "/media/cofs2/pubuntu/su" /n/img/xbin/su
cp "/media/cofs2/pubuntu/su" /n/img/bin/.ext/.su
cp "/media/cofs2/pubuntu/Superuser.apk" /n/img/app/SuperSU.apk
cp "/media/cofs2/pubuntu/install-recovery.sh" /n/img/etc/install-recovery.sh
cp "/media/cofs2/pubuntu/99SuperSUDaemon" /n/img/etc/init.d/99SuperSUDaemon
cp "/media/cofs2/pubuntu/busybox" /n/img/xbin

echo 1 > /n/img/etc/.installed_su_daemon
chown 0:2000 /n/img/bin/.ext
chown 0:2000 /n/img/bin/.ext/.su
chown 0:2000 /n/img/xbin/su
chown 0:2000 /n/img/xbin/daemonsu
chmod 777 /n/img/bin/.ext
chmod 6755 /n/img/bin/.ext/.su
chmod 6755 /n/img/xbin/su
chmod 6755 /n/img/xbin/daemonsu
chmod 755 /n/img/etc/install-recovery.sh
chmod 755 /n/img/etc/init.d/99SuperSUDaemon
chmod 644 /n/img/etc/.installed_su_daemon
chmod 644 /n/img/app/SuperSU.apk
umount /n/img
rmdir /n/img

chown 0:2000 /n/rootfs/android/system.img
chmod 0644 /n/rootfs/android/system.img
umount /n/rootfs
rmdir /n/rootfs
rmdir /n
exit
exit

5. Portable Ubuntu를 종료한다.
6. BlueStacks를 실행시킨다.
7. ADW, Go 또는 Apex 커스텀런처를 설치한다.
8. Root Explorer를 설치한다.
9. /data/app 폴더에 설치된 커스텀런처를 /system/app 폴더로 옮긴다.
10. BlueStacks을 리붓한다.
11. Launcher2.apk나 new_Home.apk등과 같은 원래 있던 런처를 지울 수 있다.


위에서 붉은색으로 표시된 부분은 윈도우즈가 설치된 디스크와 윈도우즈 버전에 따라 아래와 같이 달라진다.

C:에 윈도우즈가 설치된 경우
Windows XP
e2fsck -f -y "/media/cofs2/Documents and Settings/All Users/Application Data/BlueStacks/Android/Root.fs"
resize2fs -f "/media/cofs2/Documents and Settings/All Users/Application Data/BlueStacks/Android/Root.fs" 500M
mount -o loop "/media/cofs2/Documents and Settings/All Users/Application Data/BlueStacks/Android/Root.fs" /n/rootfs
Vista이상
e2fsck -f -y "/media/cofs2/ProgramData/BlueStacks/Android/Root.fs"
resize2fs -f "/media/cofs2/ProgramData/BlueStacks/Android/Root.fs" 500M
mount -o loop "/media/cofs2/ProgramData/BlueStacks/Android/Root.fs" /n/rootfs

D: 에 윈도우즈가 설치된 경우
Windows XP
e2fsck -f -y "/media/cofs3/Documents and Settings/All Users/Application Data/BlueStacks/Android/Root.fs"
resize2fs -f "/media/cofs3/Documents and Settings/All Users/Application Data/BlueStacks/Android/Root.fs" 500M
mount -o loop "/media/cofs3/Documents and Settings/All Users/Application Data/BlueStacks/Android/Root.fs" /n/rootfs
Vista이상
e2fsck -f -y "/media/cofs3/ProgramData/BlueStacks/Android/Root.fs"
resize2fs -f "/media/cofs3/ProgramData/BlueStacks/Android/Root.fs" 500M
mount -o loop "/media/cofs3/ProgramData/BlueStacks/Android/Root.fs" /n/rootfs


스크립트의 내용은 아래와 같이 시스템파일을 복사하고 권한을 조정하는 것이다.

  1. C:/ProgramData/BlueStacks/Android/Root.fs 크기를 500MB로 늘린 후 마운트한다.
  2. /android/system.sfs안에 있는  /system.img를 /android/system.img로 복사하고 지운다.
  3. /android/system.img파일을 480MB로 늘린 후 마운트하고 아래 작업을 한다. mkdir /bin/.ext mkdir /etc/init.d cp su /xbin/daemonsu cp su /xbin/su cp su /bin/.ext/.su cp Superuser.apk /app/SuperSU.apk cp install-recovery.sh /etc/install-recovery.sh cp 99SuperSUDaemon /etc/init.d/99SuperSUDaemon cp busybox /xbin/busybox echo 1 > /etc/.installed_su_daemon chown 0:2000 /bin/.ext chown 0:2000 /bin/.ext/.su chown 0:2000 /xbin/su chown 0:2000 /xbin/daemonsu

    chmod 777   /bin/.ext
    chmod 6755 /bin/.ext/.su
    chmod 6755 /xbin/su
    chmod 6755 /xbin/daemonsu
    chmod 755   /etc/install-recovery.sh
    chmod 755   /etc/init.d/99SuperSUDaemon
    chmod 644   /etc/.installed_su_daemon
    chmod 644   /app/SuperSU.apk
  4. /android/system.img파일 권한을 아래와 같이 설정한다.

    chown 0:2000 /android/system.img
    chmod 0644 /android/system.img

chown 명령의 모드는 4자리로 이루어 진다. 자릿수가 모자라면 앞에 0이 지정된 것으로 가정한다.

첫째자리 : 권한상속 / set user ID (4), set group ID (2), restricted deletion or sticky (1)
둘째자리 : owner의 권한 / read (4), write (2), and execute (1)
셋째자리 : 파일이 속한 group의 권한
넷째자리 : 다른 사용자의 권한


4. BlueStacks루팅관련 링크



BlueStacks 공식 홈페이지
BlueStacks 버전 목록 및 다운로드 링크 (0.7.18이 가장 안정)
루팅된 BlueStacks를 배포하는 Facebook
윈도우즈용 루팅 툴
루팅 재료 및 스크립트

댓글 없음 :

댓글 쓰기

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.