adb shell에서 /system 및 하위 폴더들 권한 변경에 사용한다.(Nexus5 사용중)

$ adb shell

$ su

# mount -o remount rw /system

# chmod 777 /system


'AOSP' 카테고리의 다른 글

안드로이드 /proc 파일 시스템  (0) 2015.07.28
[Smali] 문법정리  (0) 2015.05.15
adb push 입력시 permission denied 문제  (0) 2015.04.09
fastboot 에 디바이스가 물리지 않을 때  (0) 2015.03.09
개발폰별 파일들  (0) 2015.03.05
Posted by 튼튼한노예
,

/proc 디렉토리는 가상 파일 시스템으로  /dev와 마찬가지로 하드 디스크상에 물리적인 용량을 갖지 않는다.

 

/proc 파일 시스템은 리눅스의 커널과 사용자 영역 사이에 일어나는 통신 채널로 사용 할 수 있는 가상 파일 시스템  이다.

 

또한, 현재 시스템의 하드웨어(CPU, RAM, 파일 시스템, 인터럽트, 파티션) 정보와 현재 실행 되고 있는 프로세스의 정보를 확인 할 수 있다. 또한, 커널이 실행되면서 생성된 각종 정보들 또한 /proc 에 파일로 관리 하고 있다.

 

커널이 실행되면서 작성된 각종 정보들을 역시 파일로 관리하고 있다.

 

이번에는 /proc 안에 있는 디렉토리 및 파일들을 살펴보고 그 디렉토리가 어떤 의미를 가지는지를 알아 보자.

<숫자> : 이 디렉토리는 현재 실행 되고 있는 프로세스 ID 이며 각 디렉토리에는 프로세스에서 사용하는 정보들이 파일 및 디렉토리로 저장 되어 있다.

 
/proc/acpi  :  파워 매니지 먼트와 관련된 정보가 들어 있는 디렉토리
/proc/buddyinfo : 버디 할당자에 대한 정보를 포함
/proc/bus : bus를 사용하는 디바이스들과 관련된 정보 디렉토리 ( PCI, USB 등 )
/proc/cmdline : 부팅시 사용된 커널 실행옵션 정보 파일
/proc/cpuinfo : 상세한 프로세서의 정보가 저장되어 있는 파일 
/proc/crypto : 커널에 설정된 암호화 관련 정보가 들어 있는 파일
/proc/devices : 현재 시스템에서 사용가능한 디바이스 들에 대한 정보 (Char 및 Block 장치), 디바이스 주번호 및 이름이 있다.
/proc/diskstats : 각각의 논리적 디스크 디바이스에 대한 정보를 제공 한다.  
/proc/dma  : 현재 시스템에서 사용 하고 있는 DMS 채널
/proc/driver  : 현재 시스템의 드라이버 관련 정보
/proc/filesystem : 현재 시스템에서 지원하는 파일 시스템에 대한 정보
/proc/ide : IDE 장치에 대한 정보 디렉토리 
/proc/interrupts : 현재 사용중인 인터럽트와 인터럽트의 사용량에 대한 정보 
/proc/iomem : 현재 사용중인 메모리 맵에 대한 정보 
/proc/ioports : 현재 사용중인 입출력 포트에 대한 정보
/proc/kcore : 커널 core 이미지 
/proc/kmsg :커널에 의해서 출력되는 커널 메시지 
/proc/ksyms : 커널의 심볼 테이블 
/proc/loadavg  : 시스템의 최근 1,5,15 분의 시스템의 평균 부하량(Load Average)에 대한 정보
/proc/locks : flock 및 fcntl 들에 의한 현재 lock 파일에 대한 정보 
/proc/meminfo : 현재 사용중인 메모리의 사용량 
/proc/misc : misc 관련 드라이버에 대한 정보 
/proc/modules : 현재 모듈로 로딩된 모듈 목록, lsmod 했을때 나오는 정보 
/proc/mounts :마운트된 파일시스템에 대한 정보 
/proc/mtrr : 메모리 타입 레인지 레지스터의  정보
/proc/net : 네트웍과 관련된 다양한 통계 정보들을 담고 있는 디렉토리 
/proc/partitions : 현재 시스템의 파티션 정보 
/proc/pci :PCI 버스와 관련된 정보 
/proc/slabinfo :  Slab 관점에서 메모리 사용에 대한 정보 
/proc/stat : CPU, 인터럽트, 컨텍스트 스위치 등 일반적인 시스템 통계 정보 
/proc/swaps : swap 파일시스템 사용 정보 
/proc/sysvipc : SysVIPC 자원정보(메시지큐, 세마포어, 공유메모리)의 정보가 들어 있는 디렉토리 
/proc/tty : tty 드라이버 정보가 들어 있는 디렉토리 
/proc/uptime : 부팅 이후 부터 시스템이 운영된 시간  ( 초단위 )
/proc/version : 상세한 커널 버젼 및 커널 컴파일시의 정보 



- 숫자 디렉토리

현재 시스템에서 동작하는 프로세스의 정보가 포함되어 있다. 이는 #ps -aux를 사용했을 때 출력되는 PID 필드와 일치한다.


Posted by 튼튼한노예
,

[Smali] 문법정리

AOSP 2015. 5. 15. 17:34

- nop

  아무 것도 하지 않는 것입니다.


- move vA, vB

  A: 목표 레지스터(4bits), B: 소스 레지스터(4bits)

  A값에 B값을 넣어 주는 것입니다. (C언어로 A = B)


- move-result vAA

  A: 목표 레지스터(8bits)

  직전의 invoke-... 함수 호출의 결과를 A에 넣어 줍니다.

 

- return-void

  아무 것도 없이 리턴합니다.

 

- return vAA

  A: 목표 레지스터(8bits)

  4byte까지의 데이터를 리턴합니다.

- return-object vAA

  A: 목표 레지스터(8bits)

  단순 변수가 아닌 Object를 리턴할 때 사용합니다.

- const/4 vA, #+B

  A: 목표 레지스터(4bits), B: 정수(4bits)

  B(4바이트까지 부호확장?)에 지정된 값을 A에 넣어 줍니다.

 

- const/16 vAA, #+BBBB

  A: 목표 레지스터(8bits), B: 정수(16bits)

  B(4바이트까지 부호확장?)에 지정된 값을 A에 넣어 줍니다.

- const vAA, #+BBBBBBBB

  A: 목표 레지스터(8bits), B: 임의의 4바이트 상수

  B에 지정된 상수 값을 A에 넣어 줍니다.

- const-string vAA, string@BBBB

  A: 목표 레지스터(8bits), B: 문자열

  B에 지정된 문자열에 대한 참조를 A에 넣어 줍니다.

 

- array-length vA, vB

  A: 목표 레지스터(4bits), B: 배열 참조 레지스터(4bits)

  B로 지정된 배열의 길이로 A에 저장합니다.

 

- new-array vA, vB, type@CCCC

  A: 목표 레지스터(8bits), B: 사이즈 레지스터, C: 타입

  C로 지정한 형식으로 B로 지정한 사이즈로 배열 A를 만듭니다.

- goto +AA
  A: 분기할 오프셋(8bits)

  무조건 A로 지정된 오프셋으로 분기합니다.

 

- if-.... vA, vB, +CCCC

  A: 비교할 첫번째 레지스터(4bits), B: 비교할 두번째 레지스터(4bits)

  C: 분기할 오프셋(16bits)
  지정한 A, B 두 레지스터 값을 비교하여 C로 지정된 오프셋으로 분기합니다.
  if-eq: A = B, if-ne: A != B(다르다), if-lt: A < B
  if-ge: A >= B, if-gt: A > B, if-le: A <= B

 

- if-....z vAA, +BBBB

  A: 비교할 레지스터(8bits), B: 분기할 오프셋(16bits), 주로 :cond_0

  지정한 A 레지스터 값을 0과 비교하여 B로 지정된 오프셋으로 분기합니다.
  if-eqz: A = 0, if-nez: A != 0(다르다), if-ltz: A < 0
  if-gez: A >= 0, if-gtz: A > 0, if-lez: A <= 0

  

- invoke-.... {vC, vD, ...}, meth@BBBB

  B: 참조할 함수, C,D,... 함수의 인수

  B로 지정한 함수를 실행합니다.

  결과는 위에서 설명한 move-result 로 받을 수 있습니다.

  invoke-virtual, invoke-direct, invoke-static, ... 등이 있습니다.

 

- unop vA, vB

  A: 목표 레지스터(4bits), B: 소스 레지스터(4bits)

  소스 레지스터B로 단항연산을 수행 후 목표 레지스터A에 결과를 저장합니다.

  neg-int, neg-long, neg-float, neg-double: A = -B

  not-int, not-long: A = ~B

  int-to-long: int64 A = (int64) B; int32 B;

  int-to-float: float A = (float) B; int32 B;

  int-to-double: double A = (doubleB; int32 B;

  ...

 

- binop vAA, vBB, vCC

  A: 목표 레지스터(8bits),

  B: 첫번째 소스 레지스터(8bits), C: 번째 소스 레지스터(8bits)

  두 소스 레지스터 B, C로 부터 지정된 바이너리 연산을 수행 후 목표 레지스터A에 결과를 저장합니다.

  add-int, add-long, add-floatadd-double: A = B + C

  sub-int, sub-long, sub-float, sub-double: A = B - C

  mul-int, mul-longmul-floatmul-double: A = B * C

  div-int, div-long, div-float, div-double: A = B / C

  rem-int, rem-long, rem-float, rem-double: A = B % C (B/C의 나머지)

  and-int, and-longA = B & C (And)

  or-int, or-longA = B | C(Or)

  xor-int, xor-longA = B ^ C(Exclusive Or)

  shl-int, shl-longA = B << (C&0x1f) (Shift Left)

  shr-int, shr-longA = B >> (C&0x1f) (Shift Right)

  ushr-int, ushr-longA = B >> (C&0x1f) (Shift Right)(Unsigned)

  

- binop/2addr vA, vB

  A: 목표+첫번째 소스 레지스터(4bits), B: 두번째 소스 레지스터(4bits)

  소스 레지스터 A, B로 부터 지정된 바이너리 연산을 수행 후 첫번째 소스 레지스터A에 결과를 저장합니다.

  add-int/2addr, add-long/2addr, add-float/2addradd-double/2addrA = A + B

  sub-int/2addr, sub-long/2addrsub-float/2addrsub-double/2addrA = A - B

  mul-int/2addrmul-long/2addrmul-float/2addrmul-double/2addrA = A * B

  div-int/2addrdiv-long/2addrdiv-float/2addrdiv-double/2addrA = A / B

  rem-int/2addrrem-long/2addrrem-float/2addrrem-double/2addrA = A % B

  and-int/2addrand-long/2addrA = A & B

  or-int/2addror-long/2addrA = A | B

  xor-int/2addrxor-long/2addrA = A ^ B

  shl-int/2addrshl-long/2addrA = A << (B&0x1f)

  shr-int/2addrshr-long/2addrA = A >> (B&0x1f)

  ushr-int/2addr, ushr-long/2addrA = A >> (B&0x1f)(Unsigned)


- binop/lit16 vA, vB, #+CCCC

  A: 목표 레지스터(4bits),

  B: 소스 레지스터(4bits), C: 정수 상수(16bits)

  소스 레지스터 B와 상수C로 부터 지정된 바이너리 연산을 수행 후 목표 레지스터A에 결과를 저장합니다.

  add-int/lit16: A = B + C
  rsub-int: A = C - B (역 뺄샘)
  mul-int/lit16: A = B * C
  div-int/lit16: A = B / C
  rem-int/lit16: A = B % C
  and-int/lit16: A = B & C
  or-int/lit16: A = B | C
  xor-int/lit16: A = B ^ C
 

- binop/lit8 vAA, vBB, #+CC

  A: 목표 레지스터(8bits),

  B: 소스 레지스터(8bits), C: 정수 상수(8bits)

  소스 레지스터 B와 상수C로 부터 지정된 바이너리 연산을 수행 후 목표 레지스터A에 결과를 저장합니다.

  add-int/lit8: A = B + C
  rsub-int/lit8A = C - B (역 뺄샘)
  mul-int/lit8: A = B * C
  div-int/lit8: A = B / C
  rem-int/lit8: A = B % C
  and-int/lit8: A = B & C
  or-int/lit8: A = B | C
  xor-int/lit8: A = B ^ C


Posted by 튼튼한노예
,

가끔 adb push를 하면 별다른 문제가 없어보이는데도 permission denied 문제가 생기는 경우가 있다.

이런 경우에는 쓰기권한이 없어서 문제가 생기는 것이다.


문제 해결을 위해

1. adb shell에서

2. 루트유저(su)로 변환 후

3. chmod 777 /data/aaa 명령어를 입력

(/data/aaa는 권한을 주길 원하는 폴더)

해주면 된다.

'AOSP' 카테고리의 다른 글

안드로이드 /proc 파일 시스템  (0) 2015.07.28
[Smali] 문법정리  (0) 2015.05.15
fastboot 에 디바이스가 물리지 않을 때  (0) 2015.03.09
개발폰별 파일들  (0) 2015.03.05
AOSP 기본세팅  (0) 2015.03.04
Posted by 튼튼한노예
,

AOSP 빌드를 폰에 올리기 위해 fastboot 모드로 전환하면 폰이 물리지 않을 경우가 있다.

(<waiting for device> 메시지와 함께 무한로딩..)


이럴 경우에는 51-android.rules 에

SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", MODE="0002" 를 추가해주고


'루트권한'으로 fastboot을 실행시켜주자.


'AOSP' 카테고리의 다른 글

[Smali] 문법정리  (0) 2015.05.15
adb push 입력시 permission denied 문제  (0) 2015.04.09
개발폰별 파일들  (0) 2015.03.05
AOSP 기본세팅  (0) 2015.03.04
AOSP kitkat(4.4) 빌드방법  (0) 2015.03.03
Posted by 튼튼한노예
,

개발폰별 파일들

AOSP 2015. 3. 5. 11:10

개발폰이 추가될 때마다 덧붙일듯...


-IM-A880s (VEGA LTE-A) (KVT49L)

Pantech Kernal File

http://opensource.pantech.com/model/list.asp?Category=Mobile

'AOSP' 카테고리의 다른 글

adb push 입력시 permission denied 문제  (0) 2015.04.09
fastboot 에 디바이스가 물리지 않을 때  (0) 2015.03.09
AOSP 기본세팅  (0) 2015.03.04
AOSP kitkat(4.4) 빌드방법  (0) 2015.03.03
libz.so.1: cannot open shared object file  (0) 2015.03.03
Posted by 튼튼한노예
,

AOSP 기본세팅

AOSP 2015. 3. 4. 15:24

At least 50GB of free disk space for a checkout, 100GB for a single build, and 150GB or more for multiple builds. If you employ ccache, you will need even more space.

-> 맘편히 150기가로 하자


Python 2.6 -- 2.7, which you can download from python.org.

-> 리눅스는 기본내장.(14.04)


GNU Make 3.81 -- 3.82, which you can download from gnu.org,

->리눅스는 기본내장.(14.04)


JDK 7 to build the master branch of Android in the Android Open Source Project (AOSP); JDK 6 to build Gingerbread through KitKat; JDK 5 for Cupcake through Froyo. See Initializing a Build Environment for installation instructions by operating system.

-> openjdk로 하지 않으면 추후에 다시 깔아야 함... 빌드가 안됌


Git 1.7 or newer. You can find it at git-scm.com.

-> 리눅스는 기본내장.(14.04)


repo tool

-> sudo apt-get install phablet-tools 명령어로 설치하자


Setting E-Mail

-> git config --global user.email "you@example.com"

git config --global user.name "your name"


Install SDK

-> http://developer.android.com/sdk/index.html 에서 최신버전의 sdk 다운로드.

압축 해제하고 android-sdk-linux/tools 폴더로 가서 ./android 명령어로 sdk 매니저를 실행시켜주자.

'AOSP' 카테고리의 다른 글

fastboot 에 디바이스가 물리지 않을 때  (0) 2015.03.09
개발폰별 파일들  (0) 2015.03.05
AOSP kitkat(4.4) 빌드방법  (0) 2015.03.03
libz.so.1: cannot open shared object file  (0) 2015.03.03
libz.so.1 error1  (0) 2015.03.03
Posted by 튼튼한노예
,

http://nosemaj.org/howto-build-android-kitkat-nexus-5

참고.

'AOSP' 카테고리의 다른 글

개발폰별 파일들  (0) 2015.03.05
AOSP 기본세팅  (0) 2015.03.04
libz.so.1: cannot open shared object file  (0) 2015.03.03
libz.so.1 error1  (0) 2015.03.03
AOSP build errors  (0) 2015.03.03
Posted by 튼튼한노예
,

/usr/lib/ndk/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

make: *** [out/host/linux-x86/obj/EXECUTABLES/mkbootimg_intermediates/mkbootimg.o] 오류 1


에러 발생시 해결법은 :

sudo apt-get install lib32z1

OR : 

sudo apt-get install libc6-i386 lib32stdc++ lib32gcc1 lib32ncurses5


'AOSP' 카테고리의 다른 글

AOSP 기본세팅  (0) 2015.03.04
AOSP kitkat(4.4) 빌드방법  (0) 2015.03.03
libz.so.1 error1  (0) 2015.03.03
AOSP build errors  (0) 2015.03.03
aidl_language_l.cpp error 127  (0) 2015.03.03
Posted by 튼튼한노예
,

libz.so.1 error1

AOSP 2015. 3. 3. 15:44

Hi 
i am new in building AOSP
since 2 days working on linux 64(ubuntu)
now after make -j4 got last part error:

/home/mshome/AOSP/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/../lib/gcc/i686-linux/4.6.x-google/../../../../i686-linux/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory


Solution : 

Try to add the i386 arch to your package manager:
$ sudo dpkg --add-architecture i386
$ sudo apt-get update

then, install the following packages (source: official android web pages - I cannot insert the URL since I'm a new user  )
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386

and create the following symbolic link:
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Then, you can recompile android and it should work.

'AOSP' 카테고리의 다른 글

AOSP kitkat(4.4) 빌드방법  (0) 2015.03.03
libz.so.1: cannot open shared object file  (0) 2015.03.03
AOSP build errors  (0) 2015.03.03
aidl_language_l.cpp error 127  (0) 2015.03.03
error: Exited sync due to fetch errors  (0) 2015.03.03
Posted by 튼튼한노예
,