4월, 2013의 게시물 표시

extX 파일시스템 블록사이즈에 따른 그룹 디스크립터 테이블의 시작위치

Ext(ext2, ext3, ext4) Filesystem 에서 Group Descriptor Table의 시작위치 First address of Group Descriptor Table on ExtX Filesystem ext 파일시스템의 모든 블록의 크기는 동일하다. ext 파일시스템의 처음 1024 블록은 0x00로 채워져 있는 예약영역이다. Block Size가 얼마이든 Superblock은 1024바이트 다음에 나타난다. ext 파일시스템을 마운트할때 블록의 크기를 알 수 없기에 1024로 가정하고 1024바이트의 예약영역다음 1024바이트를 읽어 슈퍼블록으로 해석한다. 그렇다면, 슈퍼블록다음에 나타날 그룹 디스크립터 테이블(Group Descriptor Table)은 어디서 나타날까? block size가 1KB, 2KB 일때 맨 처음부터 2048바이트 다음 위치부터 나타난다. block size가 4KB 일때 맨 처음부터 4096 바이트 다음 위치부터 나타난다. 즉 block size가 1KB, 2KB일때는 슈퍼블록이 나타난다음 바로 그룹 디스크립터 테이블이 나타나고, 4KB 일때는 2KB의 공간이 비어있고 나타나게 된다. 아래는 슈퍼블록의 구조체이다. /* * Structure of the super block */ struct ext4_super_block { /*00*/ __le32 s_inodes_count; /* Inodes count */ __le32 s_blocks_count_lo; /* Blocks count */ __le32 s_r_blocks_count_lo; /* Reserved blocks count */ __le32 s_free_blocks_count_lo; /* Free blocks count */ /*10*/ __le32 s_free_inodes_count; /* Free

Android NDK

Android Native Development Kit Java에서 C나 C++로 만든 Native 코드를 호출하기 위한 방법 중 JNI ( Java Native Interface )라고 있다. 안드로이드에서는 Native 코드를 사용하기 위해 NDK를 제공한다. 일반적인 순서는 1. Java로 Android 코드 작성(호출하고자 하는 native 함수의 signature 작성) 2. 위 자바코드를 컴파일 3. 결과물로 나온 *.class 파일을 javah 를 이용해 header 파일 생성 4. 생성된 *.h 를 이용해 *.c 나 *.cpp 로 native 코드 작성. 5. Android.mk 작성 6. ndk 에 있는 ndk-build 를 실행 7. *.so 를 포함해서 패키징(*.apk) 8. 디바이스에 설치 및 실행 그럼, 이제 환경을 구성하자. 자바를 설치한다. 구글에서 Android SDK를 검색하면 첫번째 검색되는 링크를 클릭하여 SDK를 다운로드 한다. 다운로드한 파일을 적당한 곳에 푼다.(c: 드라이브 d: 드라이브 linux라면 /home 아래든) 여기선 c:아래 압축을 풀어놓는다. 구글에서 ndk를 검색하면 제일 처음 검색되는 구글 개발자 사이트에서 ndk를 받을수 있다. 여기서 자신의 플랫폼에 맞는 kit을 다운받아야 한다. 적당한 곳에 압축을 푼다.(마찬가지로 c:에 압축을 해제) 이제 컴파일러가 필요하다. 대부분 linux를 사용하는 user는 gcc를 설치했으리라 생각한다. 윈도우에서는 cygwin 설치를 추천한다. cygwin을 다운로드하고 develop 부분을 그냥 다 설치한다.(귀차니즘) 환경변수에서 NDK홈을 지정해준다. 보통 윈도우에서는 시스템-고급 시스템 설정(시스템 속성)-환경변수 에서 설정한다. NDK=c:\android-ndk-r8e cygwin 을 실행하여 프롬프트에서 echo $NDK 또는 $NDK/ndk-build  해서 잘 설정 되었는지 확

extX에서 데이터를 숨기는 방법

1. first 1K of extX filesystem is unused.  2. reserved area of description block 3. redundancy block of super block