Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Today
Total

Android: 램디스크의 구조 / 언팩 & 리팩

Android: 램디스크의 구조 / 언팩 & 리팩 본문

카테고리 없음

Android: 램디스크의 구조 / 언팩 & 리팩

KRONNA 2012. 10. 15. 16:02

안드로이드의 커널은 제대로 된 파일시스템이 아닙니다. 안드로이드를 위한 전용 포멧으로 2k 헤더, gzip 압축된 커널, 그리고 ramdisk로 이루어져 있습니다. 


램 디스크는 시스템을 초기화 (userdata를 지워서 공장 출고 상태로 만드는 초기화가 아니라 기기 부팅시 시스템을 준비하는 과정)에 필요한 핵심 파일들을 가지고 있는 작은 파일시스템입니다. 여러가지 시스템 전체에서 공용으로 사용하는 설정을 할 수 있는 init.rc파일과 같이 핵심적인 init 프로세스도 포함하고 있습니다. 


Hex Code를 수정할 수 있는 editor 프로그램으로 커널, 즉 boot.img를 열어보면 000000이 반복되는 부분과 그 다음에 1F 8B 코드가 있는 것을 발견할 수 있을 것입니다. 1F 8B는 gzip 파일들이 가지고 있는 매직 넘버입니다. 파일의 처음부터 1F 8B까지가 커널이며 1F 8B 부터 끝 까지가 램디스크입니다. 이 두 개의 파일을 따로 저장할 수 있습니다. 


램디스크의 내용을 보기 위해서는 gzip 압축을 해제한 다음 cpio 압축을 해제해야 합니다.

gunzip -o ../램디스크 | cpio -i

와 같은 코드를 사용하면 됩니다.


램디스크의 압축을 해제하면 안의 내용 파일들이 폴더 안에 나타날 겁니다. 원하는 대로 내용을 수정합니다.



램디스크를 리팩하려면 언팩한 수순을 반대로 밟으면 됩니다. cpio 압축을 한 다음 gzip 압축을 하면 됩니다.

find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz
와 같은 코드를 사용하면 됩니다. cpio 압축 시 폴더 내의 모든 파일이 압축될테니 램디스크 안에 들어가야하는 내용물이 아닌 파일들은 폴더에서 꺼내주세요.


이제 해당 램디스크를 커널과 합치기만 하면 됩니다.


Comments