ramdisk.imgファイル解析

3181 ワード

Androidソースコードのコンパイル後、out/target/product/genericで生成された3つのミラーファイル:ramdisk.img,system.img,userdata.imgおよびそれらに対応するディレクトリツリーroot,system,data.ramdisk.imgはルートファイルシステム、systemです.imgは主要なパッケージ、ライブラリなどのファイル、userdataを含む.imgにはいくつかのユーザデータが含まれており、androidはこの3つのイメージファイルをロードすると、システムとuserdataをramdiskファイルシステムのシステムとdataディレクトリにそれぞれロードします.
Ramdiskミラーリングはcpioパッケージ,gzip圧縮を用いた.fileで検証:
# file ramdisk.img    

出力:
# ramdisk.img: gzip compressed data, from Unix 

問題を説明しやすいようにramdiskします.imgは他のディレクトリにコピーする、以下の手順でramdiskを行う.imgはディレクトリツリーに復元されます.
    # mv ramdisk.img ramdisk.img.gz 
  # gunzip ramdisk.img.gz 
  # mkdir ramdisk 
  #cd ramdisk 
  # cpio i F ../ramdisk.img 

これにより、out/target/product/generic/rootと比較した完全なramdiskディレクトリが得られ、それらは同じ内容であることが分かった.次の操作を行うと、ディレクトリツリーからramdiskミラーを再生成できます.
  # cd ramdisk   # find . | cpio -o -H newc | gzip > ../ramdisk-new.img

ramdisk.imgは実はrootディレクトリのパッケージングと圧縮であり、ramdiskルートファイルシステムにはandroidの起動に重要なファイルが含まれています.例えば、カーネルの起動後にロードされた最初のプロセスinit、重要なプロファイルなど、android全体の起動を制御しています.によるとrc,init.goldfish.rcは、システムライブラリ、プログラムなどを起動が完了するまで初期化してロードします.init.rcスクリプトには、ファイルシステムの初期化、ロードの多くのプロセスが含まれています.init.rcの仕事は主に:
1)環境変数の設定
2)system、sdcard、data、cacheなどのディレクトリの作成
3)いくつかのファイルシステムmountをいくつかのディレクトリに行きます.例えば、mount tmpfs tmpfs/sqlite_stmt_journals
4)一部のファイルのユーザーグループ、権限の設定
5)スレッドパラメータの設定
6)TCPキャッシュサイズの設定
system.img userdata.imgの2つのミラーはyaffs 2ファイルフォーマットに属し、生成方法は同じです.システムでimgを例に説明します.
System.img systemディレクトリツリーを生成するために必要なツールunyaffs
# mkdir system 
# cd system 
# unyaffs ../system.img 

Systemディレクトリツリーはsystemを生成する.imgに必要なツールmkyafs 2 imageは、Androidソースコードをコンパイルすると生成され、out/host/linux-x 86/binディレクトリの下にあります.コマンド形式:
# mkyaffs2image system/ system_new.img

system.imgファイルはsystemディレクトリの1つのイメージであり、linuxのルートファイルシステムのイメージに類似するandroidが置かれたアプリケーション、プロファイル、フォントなどのandroidが起動するとまずramdiskがロードされる.imgミラーは、/ディレクトリの下にマウントされ、様々な必要なディレクトリの作成、consoleの初期化、サービスの開始など、一連の初期化動作を行う.System.imgはinitです.rcではinitを介してスクリプトコマンドを指定します.c解析を行い、ルートディレクトリの下/systemディレクトリの下にマウントします.out/target/prod t/smdk 6410/systemディレクトリなどのandroidシステムフォルダについては、次のように説明します.
System/appこの中には主に通常ダウンロードしたアプリケーションが保存されており、APK形式で終わるファイルが表示されます.このフォルダの下にあるプログラムはシステムのデフォルトのコンポーネントであり、自分がインストールしたソフトウェアはここには表示されず、/data/フォルダに表示されます.
System/binというディレクトリの下のファイルはすべてシステムのローカルプログラムで、binフォルダ名からbinaryバイナリのプログラムであることがわかり、中には主にLinuxシステムが持参したコンポーネントが含まれています.System/etcフォルダ名から見ると、APNアクセスポイント設定などのコア構成など、システムのプロファイルが保存されています.
System/fontsフォントフォルダは、標準フォントと太字、斜体を除いて、ファイルの体積が最も大きいのは中国語フォントライブラリ、またはunicodeフォントライブラリである可能性があります.
System/frameworkは主にいくつかのコアファイルであり、接尾辞名jarからシステムプラットフォームフレームワークであることがわかります.
System/lib libディレクトリに格納されるのは、プラットフォームランタイムライブラリなどのシステム最下位ライブラリです.
System/media着メロ音楽フォルダには、通常の着メロのほかに、イベント音を提示するシステムもあります.
System/usrユーザーフォルダで、共有、キーボードレイアウト、タイムゾーンファイルなどが含まれています.