Android에서, 안드로이드를 통째로 컴파일 하지 말고, 만약 커널만 수정하고 싶다면?


순정롬을 다운받아서, zImage(kernel)만 바꿔 친 후, 안드로이드에 롬을 올리면 된다.


그 과정을 Ubuntu 12.04 64bit + Nexus 5에서 진행했을때는 아래와 같다.


예를 들어, 안드로이드에 tcp_probe 모듈을 추가하도록 해본다.


1. Kernel build


먼저, 커널을 다운로드 받는다.

git clone https://android.googlesource.com/kernel/msm.git

# cd msm

# git checkout 3.4.0-gadb2201


원하는 부분을 수정한다.

그리고, 컴파일에 필요한 툴을 다운받는다.
# cd ~
# git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6

그리고는, 커널 폴더로 가서, 세팅을 하고,
# export ARCH=arm
# export SUBARCH=arm
# export CROSS_COMPILE=/yourpath/arm-eabi-4.6/bin/arm-eabi-
# make hammerhead_defconfig

TCP_PROBE 사용을 위해서 추가적으로 menuconfig를 열어 필요한 모듈을 체크해야 한다.
# make menuconfig

체크해야 하는 것(순서대로 하지 않으면 옵션이 안보일 수 있음.)
1. [*] Enable loadable module support
2. Enable loadable module support -> [*] Module unloading
3. Enable loadable module support -> [*] Module versioning support
4. Enalbe loadable module support -> [*] Source checksum for all modules
5. General setup -> [*] Kprobes
6. Networking support -> Networking options -> Network testing -> <M> TCP connection probing

위와 같이 체크 후 저장하며 종료


그리고 컴파일

# make -j 4


컴파일이 완료되면, arch/arm/boot/zImage 가 생성된다.

net/ipv4/tcp_probe.ko 도 생성된다.


2. Make a ROM


순정롬을 다운받는다. Nexus 5는 아래의 경로에 있다.

https://developers.google.com/android/nexus/images?hl=ko-KR#hammerheadkot49h


압축을 푼다.

# tar xzvf hammerhead-kot49h-factory-02006b99.tgz


여기서 image-hammerhead-kot49h.zip 의 boot.img를 수정해야 한다.

# mkdir ~/image

# cd ~/image

# cp ~/hammerhead-kot49h/image-hammerhead-kot49h.zip ./

# unzip image-hammerhead-kot49h.zip


boot.img를 언팩하고, zImage를 바꿔 친 후, 리팩해야 하는데 나는 다른사람의 툴을 사용해서 했다.

# cd ~

# wget https://github.com/pbatard/bootimg-tools/archive/master.zip

# unzip master.zip

# cd bootimg-tools-master/

# make

# cd mkbootimg/

# cp mkbootimg /usr/local/bin/

# cp unmkbootimg /usr/local/bin/


이제 바꿔 치기를 한다. (참고로, 보통은 zImage를 사용하지만, 내 경우는 Nexus 5라서, zImage-dtb를 사용하였다.)

# mkdir ~/repack

# cd ~/repack

# cp ~/image/boot.img ./boot.img

# unmkbootimg -i boot.img

# cp ~/msm/arch/arm/boot/zImage-dtb ./zImage

# mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x00008000 --ramdisk_offset 0x02900000 --second_offset 0x00f00000 --tags_offset 0x02700000 --cmdline 'console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' --kernel zImage --ramdisk ramdisk.cpio.gz -o newboot.img

# cp newboot.img ~/image/boot.img

# cd ~/image

# rm image-hammerhead-kot49h.zip

# zip newimage.zip *

# cp newimage.zip ~/hammerhead-kot49h/image-hammerhead-kot49h.zip


3. Flash


fastboot 모드로, 실행시킨다.

# adb reboot-bootloader

# fastboot oem unlock


그리고, flash를 한다.

# cd ~/hammerhead-kot49h/

# ./flash-all.sh


flash가 끝나고 부팅이 완료되면 기본 설정을 마치고 

바로 ‘개발자 모드 – USB 디버깅’을 체크하고 Nexus Root Toolkit으로 루팅을 시전한다.

루팅이 완료되고 부팅이 되면 바로 BusyBox를 실행하고 SuperSu 루트 권한을 허용하고, 

쓸데없는 메시지 창을 닫고 하단 부 뱅글뱅글 로딩이가 없어지면 또 나오는 메시지 창을 닫고 

왼쪽아래 install 버튼을 누르면 또 창이 뜨는데 거기서 Smart Install을 선택한다.(상단 부 /system/bin 옵션 그대로 둠)

Install이 끝나면 BusyBox 종료


아까 만들어진 tcp_probe.ko 파일을 adb를 사용해 폰에 넣는다.


# adb push ~/msm/net/ipv4/tcp_probe.ko /mnt/sdcard/Download/


이제 adb shell을 열고 관리자 권한을 얻기 위해 su를 입력하고 폰에 뜨는 SuperSU 루트 권한을 허용한다.


# adb shell

$ su


모듈을 저장할 폴더를 만들기 위해 read only인 root를 remount한다.


# mount –o rw,remount /


/lib/modules/ 경로를 생성한다.


# cd /

# mkdir lib

# cd lib

# mkdir modules

# cd modules


이후 경로를 확인하기 위해 modprobe를 입력해본다.


# modprobe

modprobe: can't change directory to '3.4.0-gadb2201-dirty': No such file or directory


에러 메시지를 보고 해당하는 폴더를 만든다


# mkdir 3.4.0-gadb2201-dirty

# cd 3.4.0-gadb2201-dirty


모듈 목록파일 modules.dep을 생성한다.


# vi modules.dep

파일 내용 딱 한줄

kernel/net/ipv4/tcp_probe.ko:


파일을 저장한 후 /lib/modules/3.4.0-gadb2201-dirty/kernel/net/ipv4 끝까지 경로를 생성해준다.


# mkdir kernel

# cd kernel/

# mkdir net

# cd net/

# mkdir ipv4


tcp_probe.ko 파일을 옮겨준다.


# cp /mnt/sdcard/Download/tcp_probe.ko /lib/modules/3.4.0-gadb2201-dirty/kernel/net/ipv4/


tcp_probe를 테스트해본다.


# modprobe tcp_probe full=1

# cat /proc/net/tcpprobe > /mnt/sdcard/Download/tcpprobe.log &


폰에서 인터넷 사용 후 로그를 출력해 보면 정상적으로 작동하는 것을 확인할 수 있다.


# tail /mnt/sdcard/Download/tcpprobe.log


끝.


+ 만약 벽돌이 되었다면.......... (Nexus 5 용)

http://liciousroms.com/nexus5_restore.html


참고

- 안드로이드 순정 롬

https://developers.google.com/android/nexus/images?hl=ko-KR#hammerheadkot49h

- kernel build & boot.img unpack and repack

https://groups.google.com/forum/#!topic/android-kernel/kgxdpN_77x4

- mkbootimg, unmkbootimg

https://github.com/pbatard/bootimg-tools

posted by tunz
  • k1rha 2014.12.02 18:51

    블로깅덕에 엄청 삽질했던 방향이 풀렸네요 ~
    lime.ko 좀 안드로이드에 올릴려고 엄청 삽질했엇는데, BOB나 대전에서 언제 뵈면 밥한끼 사겠습니다 :)

  • md5 2015.04.22 18:04

    안드로이드 리눅스 커널만을 빌드하여 대치 할 경우 커널 버전과 안드로이드 플랫폼이 서로 의존하나요?

    커스터마이징 된 안드로이드마다 커널 바이너리 파일 크기가 많이 다르더라구요.

    커스터마이징 된 안드로이드 A 버전을 사용하고 있는 장치에, 다른 커스터마이징 된 안드로이드 B 버전의 커널 소스를 빌드하여

    서로 다른 곳에서 배포되는 안드로이드 리눅스 커널을 config설정만 장치에 맞게 제대로 되었다면 장치가 동작하는데 전혀 문제가 되지 않는지 궁금합니다.

    • tunz 2015.04.24 16:13 신고

      제가 이쪽 전문은 아니라서 잘은 모르겠는데..
      커널버전업을 하는거라면, 문제가 없을 확률이 클것 같긴 합니다.
      근데 버전업하는 정도가 크면 클수록, 문제가 100% 없을거라고 장담하진 못하겠네요.
      기본적으로는 문제가 없게 만들어야 하는게 맞긴 하지만
      항상 예상하는대로만 되지는 않으니까요
      그냥 해봐야 알것같군요

  • samuro 2016.09.28 15:58

    갤럭시의 경우에 순정롬은 어떻게 구할 수 있나요? 펌웨어와 롬이 다른가요? 원한느 펌웨어는 구했는데 md5파일이라 boot.img를 수정할 수가 없네요

학교 머신러닝 수업때문에 kaggle competition(http://kaggle.com)을 하는데, 

생각보다 재밌어서 수업 끝나고도 틈틈히 할것같다.

우선 다 끝난 competition들로 공부좀 하고, active competition을 해보면 재밌을듯하다


모델은 Logistic regression을 사용하였고, feature선택은 greedy selection을 사용하였다.

(내 아이디어는 아니고, 포럼에서 메인으로 언급되는 아이디어)

logistical regression에 대한 설명은 많은것 같아서 따로 안하고, 실제로 어떻게 사용했는지만 써놔야겠다.

python의 scikit-learn (sklearn)을 사용하여, 코딩하였다.


지금은 이미 종료된 competition인 employee access challenge를 대상으로 연습해보았다.

이 대회가 데이터 분석은 전혀 필요없고 (하고 싶어도 할 수가 없다.)

오로지 머신러닝 테크닉만 이용해도 좋은 성적을 낼 수 있는 대회인것 같다.


이 competition은, employee들의 Manager ID와 Role에 관련된 여러가지 값들이 주어지고, 

그 employee가 특정 resource에 접근을 요청했을때, 접근을 허용할지 안할지를 판단하는 내용이다.


> 특이사항


이 challenge에서 data의 특이사항은 다음과 같다.


  

  1. action의 값은 0(not approved)와 1(approved)이긴 하지만, 실제 제출할때는 꼭 0과 1이어하는것은 아니다.

  2. 각 column은 어느 '정도'를 나타내는 특성들이 아니다. 단지, 다른 row들과 구분만 가능한 값이다.

 


1. action의 값은 0(not approved)와 1(approved)이긴 하지만, 실제 제출할때는 꼭 0과 1이어하는것은 아니다.


이 말이 무슨 뜻이냐면, 이 competition에서는 AUC로 rank를 매긴다.

근데, 여기서의 AUC는 accuracy가 아니다.

실제 데이터에서 action 1이 94%정도를 차지하고 있기때문에, 

단순한 정확도를 사용하게되면, 전부 1만 써 넣어도 정확도가 94%가 되어버린다.

그래서 이 competition에서는 ROC AUC(Area under curve)를 사용한다.

사실, ROC AUC에 대해서 정확히 공부하지는 않아서, 완벽한 의미는 모르지만.

대충 이야기해보자면, 

True Positive Rate와 False Positive Rate를 이용하여, 그래프를 그리고, 그 그래프의 넓이가 점수가 된다.

그리고, ROC AUC를 측정할 때는 '순서'가 중요하다. 확률이 높은것부터, 높은 값을 주면 된다.

그래서, 제출할때 꼭 0 ~ 1 사이의 값을 넣지 않아도 상관 없다. 

그저 확실히 1이라고 생각되는것부터 높은값을 준 후, 제출하면 된다.

(단순히, 확률을 넣어서 제출하는게 편하다)


2. 각 column은 어느 '정도'를 나타내는 특성들이 아니다. 단지, 다른 row들과 구분만 가능한 값이다.


data를 받아서 보면 알겠지만, 모든 값들이 숫자로 주어져있다.

그리고, 그 숫자가 높은 등급을 의미하는것도 아니다.

예를 들어, ROLE_TITLE의 값들이 원래 의미하는 것들은, CEO, Engineer, Marketer 등을 의미하겠지만, 

이 대회에서는 데이터 값이 1,2,3 과 같이 숫자가 적혀있다. (CEO가 1인지 2인지 3인지 알수없다.)

그래서, Logistical regression에서는 각 컬럼을 곧바로 feature로 사용할 수가 없다. 

왜냐하면......

LR은 각 feature가 연속성이 있는 값이라고 생각하고 만들어져 있는 모델이기 때문이다.

(여기서의 연속성은, continuous, discrete와 같은 것이 아니고, 숫자 높낮이의 의미가 있냐 없냐 이다.)



> Feature Selection


feature의 선택은 다음과 같다.


 

  1. 중복되는 column을 제거한다.

  2. column을 grouping하여, 확장한다.

  3. 각 column을 one hot encoding하여 binary로 변환한다.

  4. greedy로 feature를 선택한다.



1. 중복되는 column을 제거한다.


우선, 값이 중복되는 컬럼을 제거한다.

반드시 제거해야 하는것은 아니지만, 괜히 분석시간만 늘어나기 때문에..

그래서, TITLE과 겹치는 ROLE_CODE를 제거하였다.


2. column을 grouping하여, 확장한다.


grouping을 한다는게, 무슨 말이냐면

기존의 컬럼을 0,1,2,3,4,5,... 라고 한다면, 그냥 기존의 컬럼만 사용하면, 너무 독립적이게 된다.

예를 들어, 정답함수가 '0번 컬럼이 10이고, 1번 컬럼이 5일때, 정답은 1이다.' 라면,

0번이 ~~이고, 1번이 ~~일때, 라는 'and' 연산을 캐치할 수가 없다.

이런 연산을 캐치하기 위해서는, and연산을 한 컬럼을 아예 새로 만들어줘야 한다.

그래서, 기존의 0,1,2,3,... 의 컬럼과 더불어, (0과 1), (0과 2), (0과 3), ..., (1과 2), (1과 3), ...., (0과 1과 2), ..., (0과 1과 2와 3), ...

이런 컬럼들을 추가로 만들어주고, 그 컬럼의 값은 각 컬럼들에 있는 값들의 해시값으로 하면 된다.

그래서 grouping을 하면 할수록, 저런 and연산이 들어간 함수들을 더 잘 캐치할 수 있고, 정확도가 올라간다.

(물론, 속도는 점점 느려진다)


3. 각 column을 one hot encoding하여 binary로 변환한다.


아까 이야기한 특이사항 2번을 해결하기 위해서 각 피쳐들을 binary 포맷으로 바꿔야 한다. 

(이걸 forum에서는 One Hot Encoding 이라고 부르던데, 공식 명칭인지는 잘 모르겠다.)

예를 들어,


 

Column1 

 1

1234

 2

2345

 3

3456


이것이 기존의 컬럼이라면,



 

 1234

2345 

3456 

 1

 1

0

0

 2

 0

1

0

 3

 0

0

1


이렇게 변환하고, Column1대신 1234, 2345, 3456을 feature로 준다.

이렇게 변환함으로써, Logistic regression의 feature로 사용 가능하다.



4. greedy로 feature를 선택한다.


grouping으로 확장된 컬럼들을, 하나씩 넣어보면서 가장 높은 AUC가 나오는 컬럼을 선택해서, list에 포함한다.

포함 하고 나면, 다시 처음으로 돌아가서 모아둔 list에 또 컬럼들을 하나씩 더 추가해보면서, 가장 높은 AUC를 찾는다.

이 과정을 반복하여, 최종 feature들의 set를 뽑아낸다.



이렇게 하면 최종적으로 logistic regression만을 사용해서, 0.89 이상이 나온다.

포럼을 살펴보면 알겠지만, 여기까지는 거의 기본적인 점수이고, 여기서 조금조금씩 끌어 올려야 한다.

logistic regression 만으로 0.91까지 올린 사람들도 있는듯 하다.

그 외에 boosting (여러 모델들을 합쳐서)을 하여, 점수를 올릴수도 있으며, 1위도 이 방법을 사용하였다.


아래의 링크를 따라가면 샘플코드가 있다.


참고: http://kaggle.com/c/amazon-employee-access-challenge/forums/t/5258/how-i-modified-miroslaw-s-code


'Computer Engineering > Machine Learning' 카테고리의 다른 글

[Kaggle] Employee Access Challenge  (0) 2014.02.11
posted by tunz

시간이 없으니 글은 나중에 차차 다듬기로

(+ 다듬고 올리려고 했는데, 다시 건드릴 일이 없을것 같아서 그냥 비공개만 품...... / 쓰다 만 부분은 다른곳에서 찾으시길... )


안드로이드 4.1.2 버전에서 크래시가 났을경우, 어느부분에서 났는지 찾는 과정을 적어보았다.

(사실, 크래시가 난곳에서 동적분석도 하고싶은데, 그것까진 실패했다. 아마 심볼때문에 그런듯 해서, 안드로이드 full 컴파일을 하고 그 라이브러리들을 안드로이드에 올리면 될수도 있지만, 시간이 너무 오래걸려서 그러진 않았다)


그리고, 사실 이 방법이 가장 효율적인지는 모르겠다.

근데, 아는방법이 이것밖에 없으니...


환경: 우분투 13.04 64bit, 갤럭시노트2(루팅)


1. 안드로이드 기본 소스 다운로드.


$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy main multiverse"

$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy-updates main"

$ sudo apt-get update

$ sudo apt-get install sun-java6-jdk

$ sudo apt-get install python

$ sudo apt-get install git-core


$ wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz

$ tar xzvf android-sdk_r22.0.5-linux.tgz 

$ mv android-sdk-linux android-sdk

$ export PATH=${PATH}:~/android-sdk/tools

$ export PATH=${PATH}:~/android-sdk/platform-tools

$ export PATH=${PATH}:~/bin

$ PATH="$HOME/android-sdk/tools:$HOME/android-sdk/platform-tools:$PATH"

$ android

Tools 전부 설치 (gui에서 해야한다.)


$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libglapi-mesa:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so


$ sudo vi /etc/udev/rules.d/51-android.rules

SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666"

( 갤노트라서 이렇게 했고, 각 폰 별로 lsusb를 통해 idVendor를 볼수있다. )


$ sudo chmod a+r /etc/udev/rules.d/51-android.rules


$ mkdir ~/bin

$ PATH=~/bin:$PATH

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

$ chmod a+x ~/bin/repo


$ sudo vi /etc/hosts

아래 내용 추가

# Google

74.125.128.82 google.com source.android.com android.googlesource.com

74.125.128.99 google.com source.android.com android.googlesource.com

74.125.128.139 google.com source.android.com android.googlesource.com


# github

207.97.227.239 github.com wiki.github.com gist.github.com assets0.github.com assets1.github.com assets2.github.com assets3.github.com



$ mkdir android

$ cd android

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r2

$ repo sync


안드로이드 다운로드가 시작되는데, 시간이 엄청 오래 걸린다.



2. 각 제조사에서 안드로이드 소스 다운로드

안드로이드는 오픈소스이기때문에, 각 핸드폰별로 안드로이드 소스를 공개하도록 되어있다.
(그렇다고 모든 기능이 추가된채로 오픈되는것은 아니다.)
삼성의 경우 http://opensource.samsung.com/ 에서 받을수 있다.

3. 안드로이드 소스에 적용.

다운받은 소스의 external 폴더를 기존 android 폴더에 덮어쓴다.

4. 디버그 심볼 설정.

기본적으로 strip되서 라이브러리르 만들기때문에, 심볼 설정을 해줘야한다.
build/buildspec.mk.default 를 안드로이드 폴더에 buildspec.mk로 복사한후,

DEBUG_MODULE_libwebcore:=true
DEBUG_MODULE_libxml2:=true
TARGET_CUSTOM_DEBUG_CFLAGS:=-O0 -mlong-calls
ADDITIONAL_BUILD_PROPERTIES += debug.db.uid=100000

를 추가해준다.

그리고
external/webkit/Android.mk 에
LOCAL_PRELINK_MODULE := false
에 주석이 있다면 해제한다.

(이부분은 http://haejung.egloos.com/1160033 분의 블로그 참고)

5. 빌드

$ make clean-libwebcore
$ make clean-libxml2
$ make libwebcore
$ make libxml2
$ make linker

첫번째 빌드라서 시간이 오래 걸린다.

6. 스크립트 

항상 "빌드 -> adb push -> remount /system -> cp" 를 반복해야 한다.

그러므로, 귀찮으니까 쉘 스크립트로 세팅해두자.


makepush.sh , command 라는 파일을 우분투에 만들어두었다.


우선 adb devices로 안드로이드가 연결이 되어있는지 확인하고,


http://pastebin.com/LbnfhdgD

  1. #/bin/sh
  2.  
  3. make libwebcore
  4. adb push out/target/product/generic/system/lib/libwebcore.so /data/local/tmp/libwebcore.so
  5. adb shell < command

makepush.sh 를 만들고

$ chmod 777 makepush.sh


command 도 만들어야하는데, 그 전에


adb shell

su 


로 안드로이드 루트로 접속한다.

그리고

root@android:/ # mount | grep /system

/dev/block/mmcblk0p13 /system ext4 rw,relatime,barrier=1,data=ordered 0 0

로, 나온 /dev/block/mmcblk0p13를 기억해둔다.


그리고 이제 command를 만드는데, 빨간 부분을 위에서 얻은 값으로 고쳐준다.

su

mount -o rw,remount /dev/block/mmcblk0p13 /system

cp /data/local/tmp/libwebcore.so /system/lib/libwebcore.so

exit

exit 


그러면 이제 앞으로, 소스를 수정하면 저 모든 과정을 다 할필요없이

./makepush.sh

만 쳐주면 된다.


7. 디버깅 준비.


$ adb shell setprop debug.db.uid 100000

이렇게 해두어야, 크래시가 났을때 멈춘다.


그리고 gdbserver를 안드로이드로 push 해둔다.


8. 크래시


$ adb shell logcat *:d

디버깅 메세지를 항상 확인하고,

크래시를 일으킨다.


그러면 그 메세지가 로그캣에 모두 보인다.




어느 소스의 몇번째 줄에서 크래시 되었는지가 나온다.


posted by tunz

(안드로이드 기준으로 설명한다.)


우선 adb와 busybox를 설치해서 기본 세팅을 해둔다.

(윈도우보단 우분투에서 adb를 설치하는게 좋은듯)


그리고 su로 루트로 접속하고, WiFi는 꺼둔다.


원래는 그냥 tcpdump를 다운받아서, 다른것처럼 rmnet0나 rmnet_usb0를 덤프하면 된다.


하지만, rmnet_usb0를 덤프하려고 하면, 이름때문에 usb라고 착각을 하면서 덤프가 잘 안된다.


root@android:/data/local # ./tcpdump -i rmnet_usb0 -X

tcpdump: Can't get USB bus index from rmnet_usb0


그래서 해당부분을 바이너리패치했다. (그래서, 이 파일로는 진짜 usb 덤프는 불가능하다.)


tcpdump2



파일을 디바이스에 올리고, 실행권한을 준 다음에, 다른것들과 똑같이 덤프하면 된다.


# chmod 777 tcpdump2

# ./tcpdump2 -i rmnet_usb0 -X -w /sdcard/test.pcap -s 0



posted by tunz

우분투에서


# apt-get install squid3

# service squid3 start

# ufw allow 3128

# vi /etc/squid3/squid.conf

-> "http_access allow all" 추가



윈도우에서


1. 3128 방화벽 해제

2. 우분투로 3128번 포트포워딩

(하지만, vmplayer에서는 포트포워딩이 불가능하다. 그러기위해선 vmnetcfg.exe가 필요한데, vmware workstation에서 추출해야한다. vmplayer5에서는 아래의 vmnetcfg.exe를 이용하면 될듯하다.)


vmnetcfg.zip



압축을 해제한후, vmplayer폴더에 옮겨서 실행한다.


그리고, 해당하는 vmnet을 클릭한후, "NAT Settings"를 눌러서, Port Forwarding의 "Add"를 누르고, 등록하면 된다.



'Computer Engineering > 설치' 카테고리의 다른 글

vmplayer로 ubuntu에 proxy server 설치  (2) 2013.06.29
posted by tunz

$ sudo vi /etc/ssh/sshd_config


UseDNS no

추가

또는 UseDNS yes를 UseDNS no로 변경


그리고 재시작


$ sudo /etc/init.d/ssh restart



'Computer Engineering > 기타' 카테고리의 다른 글

우분투 ssh 로그인 느릴때  (0) 2013.06.23
posted by tunz

우선 sshd를 설치해서 ssh 접속을 한다. (sshdroid를 설치 했음. / 아니면 connectbot 등을 통해서 로컬접속도 가능할듯)


# wget http://sven-ola.dyndns.org/repo/attic/debian-kit-1-4.shar

# sh ./debian-kit-1-4.shar


...... : 0s

(만약 여기서 끊긴다면, # /data/local/deb/autorun )

...... : yes


# deb

# apt-get update

# apt-get upgrade

# apt-get install andromize

# exit

# deb u


빼먹은게 없다면, 이게 맞을듯.


http://sven-ola.dyndns.org/repo/debian-kit-en.html

posted by tunz

C:\Users\[사용자명]\.android\avd\[avd 이름].avd\config.ini


위의 파일을 열어서,


hw.ramSize=1024


와 같은 내용을


hw.ramSize=1024MB


로 변경후 실행하면 정상 작동 됩니다.



posted by tunz